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} + + + + + + + + + + +