diff --git a/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/query/QueryWrapperX.java b/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/query/QueryWrapperX.java index d0aa4a1c2..30146e69e 100644 --- a/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/query/QueryWrapperX.java +++ b/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/query/QueryWrapperX.java @@ -107,6 +107,13 @@ public class QueryWrapperX extends QueryWrapper { return this; } + public QueryWrapperX notInIfPresent(String column, Collection values) { + if (!CollectionUtils.isEmpty(values)) { + return (QueryWrapperX) super.notIn(column, values); + } + return this; + } + // ========== 重写父类方法,方便链式调用 ========== @Override diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderPageReqVOCopy.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderPageReqVOCopy.java index 470ff0fb5..5b88a1e11 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderPageReqVOCopy.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderPageReqVOCopy.java @@ -114,4 +114,7 @@ public class OrderPageReqVOCopy extends PageParam { @Schema(description = "厚度") private BigDecimal thickness; + + @Schema(description = "未排订单添加小板时需要排除的已选择订单号列表") + private List excludeOrderIdsWhenUnplanAddBoard; } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java index e08fd8507..ff516af54 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java @@ -548,6 +548,8 @@ public class PlanServiceImpl implements PlanService { Long organId = getUserOrganId(); List statusList = new ArrayList<>(); + // 未排单添加小板被选入排单的订单,在这里不展示了 + List excludeOrderIdsWhenUnplanAddBoard = pageReqVO.getExcludeOrderIdsWhenUnplanAddBoard(); statusList.add(OrderStatusEnum.NEW_ORDER.getStatus()); statusList.add(OrderStatusEnum.IN_PRODUCTION.getStatus()); @@ -578,7 +580,8 @@ public class PlanServiceImpl implements PlanService { .likeIfPresent(FIELD_CUSTOM_ORDER_NO, pageReqVO.getDefaultId()) .likeIfPresent(FIELD_ADDRESS, pageReqVO.getConsigneeAddress()) .betweenIfPresent(FIELD_ORDER_DATE, LocalDateTimeUtils.generateTimeSection(pageReqVO.getCreateTime())) - .eqIfPresent(FIELD_ORDER_TYPE, pageReqVO.getOrderType()); + .eqIfPresent(FIELD_ORDER_TYPE, pageReqVO.getOrderType()) + .notInIfPresent(FIELD_ORDER_ID, excludeOrderIdsWhenUnplanAddBoard); Integer pageSize = pageReqVO.getPageSize(); PageDTO page = new PageDTO<>(pageReqVO.getPageNo(), pageSize); @@ -586,21 +589,26 @@ public class PlanServiceImpl implements PlanService { // 查询满足未排单条件的顶级订单id IPage rootOrderIdList = planItemMapper.selectRootOrderIdList(page, queryWrapperX); long rootOrderIdListTotal = rootOrderIdList.getTotal(); - if (PAGE_SIZE_NONE != pageSize && rootOrderIdListTotal == 0) { - return new PageResult<>(); - } - if (PAGE_SIZE_NONE == pageSize && rootOrderIdList.getRecords().isEmpty()) { + List records = rootOrderIdList.getRecords(); + if (rootOrderIdListTotal == 0 || CollUtil.isEmpty(records)) { return new PageResult<>(); } // 查询顶级列表的信息,分页在顶级查询做,此处查询全部信息避免分页互相影响 PageDTO secondPage = new PageDTO<>(pageReqVO.getPageNo(), PAGE_SIZE_NONE); - IPage orderList = planItemMapper.selectOrderList(secondPage, queryWrapperX, type, orderGoodsIds, rootOrderIdList.getRecords()); + IPage orderList = planItemMapper.selectOrderList(secondPage, queryWrapperX, type, orderGoodsIds, records); List mainOrderList = orderList.getRecords(); // 订单分组查询子单 if (CollUtil.isNotEmpty(mainOrderList)) { + // 未排单添加小板,当主单列表存在要排除的订单id时,把这个订单的num设置为0不参与后续未排小板查询 + mainOrderList.forEach(e -> { + if (CollUtil.isNotEmpty(excludeOrderIdsWhenUnplanAddBoard) && excludeOrderIdsWhenUnplanAddBoard.contains(e.getOrderId())) { + e.setNum(0); + } + }); + // 主单id列表 Long[] mainOrderIds = mainOrderList.stream().map(OrderRespVOCopy::getOrderId).toArray(Long[]::new); List childList = planItemMapper.selectOrderChildList(queryWrapperX, type, orderGoodsIds, mainOrderIds);