From 892cc30999f552b34629361455af697453e40985 Mon Sep 17 00:00:00 2001 From: rcx <3084692334@qq.com> Date: Sat, 12 Sep 2026 10:00:45 +0800 Subject: [PATCH] =?UTF-8?q?fix(oms):=20=E5=87=BA=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E5=8D=95=E4=B8=8B=E5=8F=91=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E5=8D=95=E6=97=B6=E8=AE=A2=E5=8D=95=E6=9D=A5=E6=BA=90=E7=BB=A7?= =?UTF-8?q?=E6=89=BF=E4=B8=9A=E5=8A=A1=E5=8D=95(=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=AF=BC=E5=85=A5/=E6=89=8B=E5=8A=A8=E5=88=9B=E5=BB=BA/?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E7=94=9F=E6=88=90)=E4=B8=8D=E5=86=8D?= =?UTF-8?q?=E5=86=99=E6=AD=BB"=E5=AE=A2=E6=88=B7=E9=A2=84=E7=BA=A6";=20?= =?UTF-8?q?=E6=89=8B=E5=8A=A8=E5=88=9B=E5=BB=BA=E4=B8=9A=E5=8A=A1=E5=8D=95?= =?UTF-8?q?=E6=9D=A5=E6=BA=90=E4=B8=BA=E7=A9=BA=E5=85=9C=E5=BA=95"?= =?UTF-8?q?=E6=89=8B=E5=8A=A8=E5=88=9B=E5=BB=BA";=20=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E4=B8=8B=E5=8F=91=E6=98=8E=E7=BB=86=E8=BF=87=E6=BB=A4del=5Ffla?= =?UTF-8?q?g,=20=E4=BF=AE=E5=A4=8D=E7=BC=96=E8=BE=91=E5=90=8E=E8=BD=AF?= =?UTF-8?q?=E5=88=A0=E6=97=A7=E6=98=8E=E7=BB=86=E5=8F=82=E4=B8=8E=E4=BB=93?= =?UTF-8?q?=E5=BA=93=E5=88=86=E7=BB=84=E5=AF=BC=E8=87=B4=E5=A4=9A=E7=94=9F?= =?UTF-8?q?=E6=88=90=E6=89=A7=E8=A1=8C=E5=8D=95=E4=B8=94=E6=95=B0=E9=87=8F?= =?UTF-8?q?=E5=8F=A0=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReservationStockInOrderDomainService.java | 6 ++++-- .../ReservationStockOutOrderDomainService.java | 18 ++++++++++++++---- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java index 7bb51daf1..26595005f 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java @@ -176,6 +176,10 @@ public class ReservationStockInOrderDomainService { // //统计总体积 // BigDecimal volumeLimit = stockInOrderDO.getMaterialDetailList().stream().map(ReservationInMaterialDetailDO::getVolumeLimit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); // stockInOrderDO.setVolumeLimit(volumeLimit); + // 订单来源为空时兜底为手动创建(导入/预约下发等路径已显式设置,不受影响),下发执行单时随业务单继承 + if (stockInOrderDO.getReservationOrderSource() == null || stockInOrderDO.getReservationOrderSource().isEmpty()) { + stockInOrderDO.setReservationOrderSource("手动创建"); + } stockInOrderService.insert(stockInOrderDO); return materialDetailService.batchInsert(stockInOrderDO.getInOrderNumber(), stockInOrderDO.getMaterialDetailList()); } @@ -614,7 +618,6 @@ public class ReservationStockInOrderDomainService { reservationStockInOrder.setOrderTypeName("普通入库"); reservationStockInOrder.setBusinessType("pu_tong_ru_ku"); } - reservationStockInOrder.setReservationOrderSource("客户预约"); reservationStockInOrder.setWarehouseId(warehouseId); if (warehouseId == null || warehouseId == 0L){ reservationStockInOrder.setWarehouseId(byId.getWarehouseId()); @@ -1042,7 +1045,6 @@ public class ReservationStockInOrderDomainService { reservationStockInOrder.setOrderTypeName("普通入库"); reservationStockInOrder.setBusinessType("pu_tong_ru_ku"); } - reservationStockInOrder.setReservationOrderSource("客户预约"); reservationStockInOrder.setWarehouseId(warehouseId); // reservationStockInOrder.setOrganizationId(orgId); // reservationStockInOrder.setOrganizationName(orgName); diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderDomainService.java index 3063f3053..12d1a1ce1 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderDomainService.java @@ -232,6 +232,10 @@ public class ReservationStockOutOrderDomainService { if (stockOutOrderDO.getCheckTaskDistribution() == null) { stockOutOrderDO.setCheckTaskDistribution(2); } + // 订单来源为空时兜底为手动创建(导入/预约下发等路径已显式设置,不受影响),下发执行单时随业务单继承 + if (stockOutOrderDO.getReservationOrderSource() == null || stockOutOrderDO.getReservationOrderSource().isEmpty()) { + stockOutOrderDO.setReservationOrderSource("手动创建"); + } stockOutOrderService.insert(stockOutOrderDO); List reservationDeliveryDetailsLinkList = stockOutOrderDO.getReservationDeliveryDetailsLinkList(); if (reservationDeliveryDetailsLinkList != null && !reservationDeliveryDetailsLinkList.isEmpty()){ @@ -666,7 +670,11 @@ public class ReservationStockOutOrderDomainService { // 自愈: 历史版本反审/取消下发的归档明细可能仍占用unique_id, 先置空释放键位再重新下发 releaseArchivedDetailUniqueId(inOrderNumber); List executionInOrderNumbers = new ArrayList<>(); - List materialDetailList = outMaterialDetailService.list(new QueryWrapper().lambda().eq(ReservationOutMaterialDetail::getOutOrderNumber, inOrderNumber)); + // 下发明细必须过滤软删行(del_flag=1):编辑对账软删的旧行仍留表内, + // 不滤会参与按仓库分组/数量汇总,多生成执行单且数量叠加(入库侧同查询已过滤) + List materialDetailList = outMaterialDetailService.list(new QueryWrapper().lambda() + .eq(ReservationOutMaterialDetail::getOutOrderNumber, inOrderNumber) + .eq(ReservationOutMaterialDetail::getDelFlag, 1)); // 按照 warehouseId 分组 Map> materialDetailGroupByWarehouse = materialDetailList.stream() @@ -684,7 +692,6 @@ public class ReservationStockOutOrderDomainService { reservationStockInOrder.setOrderTypeCode("pu_tong_chu_ku"); reservationStockInOrder.setOrderTypeName("普通出库"); reservationStockInOrder.setBusinessType("pu_tong_chu_ku"); - reservationStockInOrder.setReservationOrderSource("客户预约"); reservationStockInOrder.setWarehouseId(warehouseId); reservationStockInOrder.setWarehouseCode(warehouseCode); reservationStockInOrder.setWarehouseName(warehouseName); @@ -956,7 +963,11 @@ public class ReservationStockOutOrderDomainService { String inOrderNumber = byId.getOutOrderNumber(); // 自愈: 历史版本反审/取消下发的归档明细可能仍占用unique_id, 先置空释放键位再重新下发 releaseArchivedDetailUniqueId(inOrderNumber); - List materialDetailList = outMaterialDetailService.list(new QueryWrapper().lambda().eq(ReservationOutMaterialDetail::getOutOrderNumber, inOrderNumber)); + // 下发明细必须过滤软删行(del_flag=1):编辑对账软删的旧行仍留表内, + // 不滤会参与按仓库分组/数量汇总,多生成执行单且数量叠加(入库侧同查询已过滤) + List materialDetailList = outMaterialDetailService.list(new QueryWrapper().lambda() + .eq(ReservationOutMaterialDetail::getOutOrderNumber, inOrderNumber) + .eq(ReservationOutMaterialDetail::getDelFlag, 1)); // 按照 warehouseId 分组 Map> materialDetailGroupByWarehouse = materialDetailList.stream() @@ -1020,7 +1031,6 @@ public class ReservationStockOutOrderDomainService { reservationStockInOrder.setOrderTypeCode("pu_tong_chu_ku"); reservationStockInOrder.setOrderTypeName("普通出库"); reservationStockInOrder.setBusinessType("pu_tong_chu_ku"); - reservationStockInOrder.setReservationOrderSource("客户预约"); reservationStockInOrder.setWarehouseId(warehouseId); reservationStockInOrder.setOrganizationId(orgId); reservationStockInOrder.setOrganizationName(orgName);