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);