From f183a182717e7d6e0dba62c2f4324b700a8ce471 Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Thu, 11 Jun 2026 17:03:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9C=AA=E6=8E=92=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=9A=84=E6=B7=BB=E5=8A=A0=E5=B0=8F=E6=9D=BF=E6=8E=92?= =?UTF-8?q?=E9=99=A4=E5=B7=B2=E9=80=89=E6=8E=92=E5=8D=95=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E8=83=BD=E5=8A=9B=EF=BC=8C=E6=9C=89=E4=B8=80=E7=A7=8D=E4=B8=BB?= =?UTF-8?q?=E5=AD=90=E9=83=BD=E6=9C=89num=E7=9A=84=E6=83=85=E5=86=B5?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E5=A4=84=E7=90=86=EF=BC=8C=E5=B0=86=E4=B8=BB?= =?UTF-8?q?=E5=8D=95num=3D0=E8=AE=A9=E5=89=8D=E7=AB=AF=E4=B8=8D=E6=8A=8A?= =?UTF-8?q?=3D0=E7=9A=84=E8=AE=A2=E5=8D=95id=E7=94=A8=E4=BA=8E=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2noplan=E6=9C=AA=E6=8E=92=E5=B0=8F=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mybatis/core/query/QueryWrapperX.java | 7 +++++++ .../admin/plan/vo/OrderPageReqVOCopy.java | 3 +++ .../service/plan/PlanServiceImpl.java | 20 +++++++++++++------ 3 files changed, 24 insertions(+), 6 deletions(-) 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);