From 2e5cec78f1b8f468d4721bf9710fe69630a7ba1b Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Fri, 12 Jun 2026 11:22:54 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A6=85=E9=81=93bug#1665=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/manage/pack/vo/OrderPackReqVO.java | 6 +- .../manage/pack/vo/PackagePlateSaveReqVO.java | 20 ++++++ .../service/manage/pack/PackServiceImpl.java | 68 ++++++++++++++----- .../mapper/pack/OrderPackageMapper.xml | 2 +- 4 files changed, 76 insertions(+), 20 deletions(-) create mode 100644 cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/manage/pack/vo/PackagePlateSaveReqVO.java diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/manage/pack/vo/OrderPackReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/manage/pack/vo/OrderPackReqVO.java index f7631223b..c9f8b8b2c 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/manage/pack/vo/OrderPackReqVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/manage/pack/vo/OrderPackReqVO.java @@ -15,10 +15,14 @@ import java.util.List; @ToString(callSuper = true) public class OrderPackReqVO { - @Schema(description = "订单号列表", requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(description = "打包页面订单号列表", requiredMode = Schema.RequiredMode.REQUIRED) @Size(min = 1, max = 100, message = "订单号列表不能为空且长度不能超过100") private List orderIds; + @Schema(description = "当前包裹订单号列表", requiredMode = Schema.RequiredMode.REQUIRED) + @Size(min = 1, max = 100, message = "订单号列表不能为空且长度不能超过100") + private List currentOrderIds; + @Schema(description = "包裹编号", requiredMode = Schema.RequiredMode.REQUIRED) private String packNo; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/manage/pack/vo/PackagePlateSaveReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/manage/pack/vo/PackagePlateSaveReqVO.java new file mode 100644 index 000000000..d31e67067 --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/manage/pack/vo/PackagePlateSaveReqVO.java @@ -0,0 +1,20 @@ +package com.cf.imes.module.executor.controller.admin.manage.pack.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * + * + * @author Gqr + * @since 2026/6/11 18:02 + */ +@Schema(description = "管理后台 - 分堆打包 - 分堆打包板件提交 Request VO") +@Data +public class PackagePlateSaveReqVO { + @Schema(description = "订单ID") + private Long orderId; + + @Schema(description = "板件ID") + private Long plateId; +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/manage/pack/PackServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/manage/pack/PackServiceImpl.java index e563127a1..cc75b5454 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/manage/pack/PackServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/manage/pack/PackServiceImpl.java @@ -52,6 +52,7 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -141,13 +142,8 @@ public class PackServiceImpl implements PackService { @Override public List getOrderPack(PackageDetailsReqVO reqVO) { List orderIds = reqVO.getOrderIds(); - // 入参订单id列表对应的所有父子id列表 - List fatherAndSonOrderIds = orderService.getFatherAndSonOrderIds(orderIds); - if (CollUtil.isEmpty(fatherAndSonOrderIds)) { - return new ArrayList<>(); - } - List orderPackageVOS = orderPackageMapper.getPackageNoInOrderIds(fatherAndSonOrderIds); + List orderPackageVOS = orderPackageMapper.getPackageNoInOrderIds(orderIds); if (orderPackageVOS.isEmpty()) { return new ArrayList<>(); @@ -224,27 +220,28 @@ public class PackServiceImpl implements PackService { Long organId = getUserOrganId(); String packNo = packageVO.getPackNo(); List orderIds = packageVO.getOrderIds(); + List currentOrderIds = packageVO.getCurrentOrderIds(); List addPlateNos = packageVO.getAddPlateNoList(); List deletePlateNos = packageVO.getDeletePlateNoList(); List addPartsList = packageVO.getAddPartsList(); List delPartsList = packageVO.getDelPartsList(); Integer packMethod = packageVO.getPackMethod(); - OrderPackagDO existPackageDO = validateOrdersExists(orderIds, packNo); + List existPackageDO = validateOrdersExists(orderIds, packNo); // 新增/删除 板件配件全为空代表是原封不动的封包 boolean justPack = CollUtil.isEmpty(addPlateNos) && CollUtil.isEmpty(addPartsList) && CollUtil.isEmpty(deletePlateNos) && CollUtil.isEmpty(delPartsList); // 判断包裹ID是否为空,为空,走新增,不为空,走更新 - if (ObjectUtil.isEmpty(existPackageDO)) { + if (CollUtil.isEmpty(existPackageDO)) { if (justPack) { throw new ServiceException(PACK_DATA_NULL); } String packageNo = generatePackageNo(); List orderPackageDOS = new ArrayList<>(); - for (Long orderId : orderIds) { + for (Long orderId : currentOrderIds) { OrderPackagDO orderPackageDO = new OrderPackagDO(); orderPackageDO.setOrderId(orderId); orderPackageDO.setPackageNo(packageNo); @@ -260,7 +257,7 @@ public class PackServiceImpl implements PackService { for (List batch : split) { List plateIds = orderPlateMapper.selectList(new LambdaQueryWrapper() .in(PlateDO::getPlateNo, batch) - .in(PlateDO::getOrderId, orderIds) + .in(PlateDO::getOrderId, currentOrderIds) .eq(PlateDO::getDeleted, DeletedCodeEnum.NOT_DELETED.getStatus()) .select(PlateDO::getId) ).stream().map(PlateDO::getId).toList(); @@ -268,7 +265,7 @@ public class PackServiceImpl implements PackService { continue; } orderItemMapper.update(new LambdaUpdateWrapper() - .in(OrderItemDO::getOrderId, orderIds) + .in(OrderItemDO::getOrderId, currentOrderIds) .in(OrderItemDO::getPlateId, plateIds) .eq(OrderItemDO::getPackageId, 0L) .set(OrderItemDO::getPackageId, packageNo) @@ -277,10 +274,10 @@ public class PackServiceImpl implements PackService { } // 配件明细新增包裹 ID - processParts(addPartsList, packMethod, orderIds, packageNo, true); + processParts(addPartsList, packMethod, currentOrderIds, packageNo, true); // 更新订单打包状态 - List orderDOS = ordersMapper.selectBatchIds(orderIds); + List orderDOS = ordersMapper.selectBatchIds(currentOrderIds); for (OrderDO orderDO : orderDOS) { if (validateOrderPack(orderDO.getId())) { @@ -292,10 +289,27 @@ public class PackServiceImpl implements PackService { // 更新已打包数量到订单 orderInfoVersionControlService.updateOrderPackNum(orderDOS); - return typeConversion(orderPackageDOS.get(0), orderIds); + return typeConversion(orderPackageDOS.get(0), currentOrderIds); } - String existPackageNo = existPackageDO.getPackageNo(); + // 从包裹对应订单列表 和 现在还有的订单列表做对比,算出差集,对应列表有当前没有就是要删,对应列表没有当前有就是要新增 + Set existOrderIdSet = existPackageDO.stream() + .map(OrderPackagDO::getOrderId) + .collect(Collectors.toSet()); + + Set currentOrderIdSet = new HashSet<>(currentOrderIds); + // 删除:exist - current + List toDelete = existOrderIdSet.stream() + .filter(id -> !currentOrderIdSet.contains(id)) + .collect(Collectors.toList()); + + // 新增:current - exist + List toAdd = currentOrderIdSet.stream() + .filter(id -> !existOrderIdSet.contains(id)) + .collect(Collectors.toList()); + + + String existPackageNo = existPackageDO.get(0).getPackageNo(); // 板件明细新增包裹 ID List> split = CollUtil.split(addPlateNos, 1000); if (CollUtil.isNotEmpty(split)) { @@ -353,6 +367,24 @@ public class PackServiceImpl implements PackService { .eq(OrderPackagDO::getStatus, OrderPackageStatusEnum.UNPACKED.getStatus()) .set(OrderPackagDO::getStatus, OrderPackageStatusEnum.PACKAGED.getStatus())); + // 删除没有订单组成的包裹 + orderPackageMapper.delete(new LambdaQueryWrapper() + .eq(OrderPackagDO::getPackageNo, existPackageNo) + .in(OrderPackagDO::getOrderId, toDelete) + ); + + // 新增新订单组成的包裹 + List addOrderPackageDOS = new ArrayList<>(); + for (Long addOrderId : toAdd) { + OrderPackagDO orderPackageDO = new OrderPackagDO(); + orderPackageDO.setOrderId(addOrderId); + orderPackageDO.setPackageNo(existPackageNo); + orderPackageDO.setStatus((OrderPackageStatusEnum.PACKAGED.getStatus())); + orderPackageDO.setRemark(packageVO.getRemark()); + orderPackageDO.setOrganId(organId); + addOrderPackageDOS.add(orderPackageDO); + } + orderPackageMapper.insertBatch(addOrderPackageDOS); // 更新订单打包状态 List orderDOS = ordersMapper.selectBatchIds(orderIds); @@ -369,7 +401,7 @@ public class PackServiceImpl implements PackService { orderInfoVersionControlService.updateOrderPackNum(orderDOS); } - return typeConversion(existPackageDO, orderIds); + return typeConversion(existPackageDO.get(0), orderIds); } @@ -865,7 +897,7 @@ public class PackServiceImpl implements PackService { * @param orderIds * @param packNo */ - private OrderPackagDO validateOrdersExists(List orderIds, String packNo) { + private List validateOrdersExists(List orderIds, String packNo) { List orderDO = ordersMapper.selectByIds(orderIds); AssertUtils.notEmpty(orderDO, ORDER_NOT_EXISTS); @@ -874,7 +906,7 @@ public class PackServiceImpl implements PackService { List orderPackageDOS = orderPackageMapper.selectList(new LambdaQueryWrapper() .eq(OrderPackagDO::getPackageNo, packNo)); AssertUtils.notEmpty(orderPackageDOS, ORDER_PACK_DATA_NULL_ERROR); - return orderPackageDOS.get(0); + return orderPackageDOS; } return null; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/pack/OrderPackageMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/pack/OrderPackageMapper.xml index 3d46949f1..d81491470 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/pack/OrderPackageMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/pack/OrderPackageMapper.xml @@ -57,7 +57,7 @@