From 044e3ee9a441a52eb204c7b3fde778a930a6b8d3 Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Wed, 17 Jun 2026 11:02:55 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E7=AB=AF=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E5=8F=B0=20-=20=E4=BB=8A=E6=97=A5=E8=A6=81=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E8=AE=A2=E5=8D=95/=E9=80=BE=E6=9C=9F=E8=AE=A2=E5=8D=95=20?= =?UTF-8?q?=E4=B8=BB=E5=AD=90=E5=8D=95=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E3=80=81=E5=A4=87=E6=B3=A8=E5=AD=97=E6=AE=B5=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/vo/order/OrderOverdueRespVO.java | 3 + .../executor/dal/mysql/order/OrderMapper.java | 64 ++++++++-- .../service/order/OrderServiceImpl.java | 68 ++++++++-- .../resources/mapper/order/OrderMapper.xml | 117 +++++++++++++++--- 4 files changed, 213 insertions(+), 39 deletions(-) diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderOverdueRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderOverdueRespVO.java index cee8edc88..503e575c7 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderOverdueRespVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderOverdueRespVO.java @@ -55,6 +55,9 @@ public class OrderOverdueRespVO { @Schema(description = "拆单员") private String splitter; + @Schema(description = "备注") + private String remark; + @Schema(description = "子单列表") private List child; } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java index 0636f603f..34363f885 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java @@ -181,28 +181,70 @@ public interface OrderMapper extends BaseMapperX { * 查询今日要完成订单 * * @param orderDate - * @param organId * @param page - * @param orderIds 父级订单数组 + * @param rootIds 顶级订单数组 * @return */ - IPage selectOrderNear(@Param("orderDate") LocalDate orderDate, - @Param("organId") Long organId, - @Param("page") IPage page, - @Param("orderIds") Long... orderIds); + IPage selectOrderNear(@Param("page") IPage page, + @Param("orderDate") LocalDate orderDate, + @Param("rootIds") List rootIds); + /** + * 查询今日要完成子单 + * + * @param orderDate + * @param page + * @param mainOrderIds 父级订单数组 + * @return + */ + IPage selectChildOrderNear(@Param("page") IPage page, + @Param("orderDate") LocalDate orderDate, + @Param("mainOrderIds") List mainOrderIds); + + /** + * 查询今日要完成订单 + * + * @param page + * @param orderDate + * @return + */ + IPage selectOrderNearRootIds(@Param("page") IPage page, + @Param("orderDate") LocalDate orderDate); + + + /** + * 查询预期订单root_id + * + * @param page + * @param today + * @return + */ + IPage selectOrderOverdueRootIds(@Param("page") IPage page, + @Param("today") LocalDate today); /** * 查询预期订单 * - * @param today - * @param organId * @param page + * @param today + * @param rootIds 顶级订单数组 * @return */ - IPage selectOrderOverdue(@Param("today") LocalDate today, - @Param("organId") Long organId, - @Param("page") IPage page); + IPage selectOrderOverdue(@Param("page") IPage page, + @Param("today") LocalDate today, + @Param("rootIds") List rootIds); + + /** + * 查询预期子单 + * + * @param page + * @param today + * @param mainOrderIds 父级订单数组 + * @return + */ + IPage selectChildOrderOverdue(@Param("page") IPage page, + @Param("today") LocalDate today, + @Param("mainOrderIds") List mainOrderIds); /** * 订单数量统计 diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java index 64ddc1f8e..559e6e977 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java @@ -108,6 +108,7 @@ import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.IntStream; +import static com.cf.imes.framework.common.pojo.PageParam.PAGE_SIZE_NONE; import static com.cf.imes.framework.common.util.json.JsonUtils.unzipString; import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId; import static com.cf.imes.module.executor.enums.ErrorCodeConstants.*; @@ -866,27 +867,72 @@ public class OrderServiceImpl implements OrderService { public PageResult getOrderOverdue(PageParam pageParam) { LocalDate todayDate = LocalDate.now(); PageDTO page = new PageDTO<>(pageParam.getPageNo(), pageParam.getPageSize()); - // 查询超时单 - IPage orderOverdueVOS = orderMapper.selectOrderOverdue(todayDate, OrganContextHolder.getOrganId(), page); - return new PageResult<>(orderOverdueVOS.getRecords(), orderOverdueVOS.getTotal()); + + // 查询满足条件的逾期单 root_id + IPage rootIdPage = orderMapper.selectOrderOverdueRootIds(page, todayDate); + List rootIds = rootIdPage.getRecords(); + long rootIdPageTotal = rootIdPage.getTotal(); + if(rootIdPageTotal == 0 || CollUtil.isEmpty(rootIds)) { + return PageResult.empty(); + } + + // 查询顶级逾期单,分页在顶级查询做,此处查询全部信息避免分页互相影响 + PageDTO secondPage = new PageDTO<>(pageParam.getPageNo(), PAGE_SIZE_NONE); + IPage orderOverdueVOS = orderMapper.selectOrderOverdue(secondPage, todayDate, rootIds); + List records = orderOverdueVOS.getRecords(); + + // 查询子单 + if (CollUtil.isNotEmpty(records)) { + // 主单id列表 + List mainOrderIds = records.stream().map(OrderOverdueRespVO::getId).toList(); + // 查询全部子单 + PageDTO childPage = new PageDTO<>(pageParam.getPageNo(), PageParam.PAGE_SIZE_NONE); + IPage childOrderOverdueVOS = orderMapper.selectChildOrderOverdue(childPage, todayDate, mainOrderIds); + + List childList = childOrderOverdueVOS.getRecords(); + + if (CollUtil.isNotEmpty(childList)) { + // 按 parentId 分组 + Map> childMap = childList.stream() + .collect(Collectors.groupingBy(OrderOverdueRespVO::getParentId)); + + // 回填 child + for (OrderOverdueRespVO order : records) { + order.setChild(childMap.getOrDefault(order.getId(), null)); + } + } + return new PageResult<>(records, rootIdPageTotal); + + } + + return new PageResult<>(records, rootIdPageTotal); } @Override public PageResult getOrderNear(PageParam pageParam) { - Long organId = OrganContextHolder.getOrganId(); - PageDTO page = new PageDTO<>(pageParam.getPageNo(), pageParam.getPageSize()); LocalDate tomorrow = LocalDate.now().plus(1, ChronoUnit.DAYS); - // 查询预警单 - IPage orderNearVOS = orderMapper.selectOrderNear(tomorrow, organId, page); + + // 查询满足条件的预警单 root_id + IPage rootIdPage = orderMapper.selectOrderNearRootIds(page, tomorrow); + List rootIds = rootIdPage.getRecords(); + long rootIdPageTotal = rootIdPage.getTotal(); + if(rootIdPageTotal == 0 || CollUtil.isEmpty(rootIds)) { + return PageResult.empty(); + } + + // 查询顶级预警单,分页在顶级查询做,此处查询全部信息避免分页互相影响 + PageDTO secondPage = new PageDTO<>(pageParam.getPageNo(), PAGE_SIZE_NONE); + IPage orderNearVOS = orderMapper.selectOrderNear(secondPage, tomorrow, rootIds); List records = orderNearVOS.getRecords(); // 查询子单 if (CollUtil.isNotEmpty(records)) { // 主单id列表 - Long[] mainOrderIds = records.stream().map(OrderOverdueRespVO::getId).toArray(Long[]::new); + List mainOrderIds = records.stream().map(OrderOverdueRespVO::getId).toList(); + // 查询全部子单 PageDTO childPage = new PageDTO<>(pageParam.getPageNo(), PageParam.PAGE_SIZE_NONE); - IPage childOrderNearVOS = orderMapper.selectOrderNear(tomorrow, organId, childPage, mainOrderIds); + IPage childOrderNearVOS = orderMapper.selectChildOrderNear(childPage, tomorrow, mainOrderIds); List childList = childOrderNearVOS.getRecords(); @@ -900,11 +946,11 @@ public class OrderServiceImpl implements OrderService { order.setChild(childMap.getOrDefault(order.getId(), null)); } } - return new PageResult<>(records, orderNearVOS.getTotal()); + return new PageResult<>(records, rootIdPageTotal); } - return new PageResult<>(records, orderNearVOS.getTotal()); + return new PageResult<>(records, rootIdPageTotal); } @Override diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/order/OrderMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/order/OrderMapper.xml index 6bed5df66..2986a971a 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/order/OrderMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/order/OrderMapper.xml @@ -293,23 +293,68 @@ o.phone_number, o.dealer, o.salesman, - o.splitter + o.splitter, + o.remark from orders o - where o.organ_id = #{organId} - and o.deleted = 0 + where o.deleted = false and o.status != 4 and o.delivery_date = #{orderDate} - - - AND parent_id IN - - #{orderId} - - - - AND parent_id = 0 - - + + AND o.id IN + + #{rootId} + + + + + + + + + + +