diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockInOrder/service/ReserveStockInOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockInOrder/service/ReserveStockInOrderDomainService.java index 26a352e07..c69b34725 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockInOrder/service/ReserveStockInOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockInOrder/service/ReserveStockInOrderDomainService.java @@ -474,13 +474,18 @@ public class ReserveStockInOrderDomainService { Long shipperId = reservationStockInOrder.getShipperId(); String jsbz = reservationStockInOrderMapper.getJsbz(shipperId); reservationStockInOrder.setSettlementCurrency(jsbz); - String inOrderNumber = reservationStockInOrder.getInOrderNumber(); - List materialDetailList = materialDetailService.list(new QueryWrapper().lambda().eq(ReserveInMaterialDetail::getInOrderNumber, inOrderNumber)); + String oldInOrderNumber = reservationStockInOrder.getInOrderNumber(); + // 生成新业务单号,防止与已生成的入库业务单号重复 + String newOrderNumber = reservationStockInOrderDomainService.generateReserveOrderNumber(); + reservationStockInOrder.setInOrderNumber(newOrderNumber); + reservationStockInOrder.setBusinessOrderNo(newOrderNumber); + List materialDetailList = materialDetailService.list(new QueryWrapper().lambda().eq(ReserveInMaterialDetail::getInOrderNumber, oldInOrderNumber)); List inMaterialDetailList = new ArrayList<>(); int index = 1; for (ReserveInMaterialDetail reserveInMaterialDetail : materialDetailList) { ReservationInMaterialDetail reservationInMaterialDetail = new ReservationInMaterialDetail(); BeanUtils.copyProperties(reserveInMaterialDetail, reservationInMaterialDetail,"materialDetailId"); + reservationInMaterialDetail.setInOrderNumber(newOrderNumber); // 使用新单号保持与主表关联 reservationInMaterialDetail.setQuantity(reserveInMaterialDetail.getReserveQuantity()); String lot = generateDateSerialNumber(); lot = lot+"-"+index; @@ -491,10 +496,6 @@ public class ReserveStockInOrderDomainService { } BigDecimal quantity = materialDetailList.stream().map(ReserveInMaterialDetail::getReserveQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); reservationStockInOrder.setQuantity(quantity); - // 生成业务单号,防止与已生成的入库业务单号重复 - String newOrderNumber = reservationStockInOrderDomainService.generateReserveOrderNumber(); - reservationStockInOrder.setInOrderNumber(newOrderNumber); - reservationStockInOrder.setBusinessOrderNo(newOrderNumber); reservationStockInOrderService.save(reservationStockInOrder); reservationInMaterialDetailService.saveBatch(inMaterialDetailList); return update; diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockOutOrder/service/ReserveStockOutOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockOutOrder/service/ReserveStockOutOrderDomainService.java index 9fe704cb1..cb75be175 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockOutOrder/service/ReserveStockOutOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockOutOrder/service/ReserveStockOutOrderDomainService.java @@ -306,18 +306,20 @@ public class ReserveStockOutOrderDomainService { Long shipperId = reservationStockOutOrder.getShipperId(); String jsbz = reservationStockInOrderMapper.getJsbz(shipperId); reservationStockOutOrder.setSettlementCurrency(jsbz); + // 保留旧单号,用于查询源明细数据 + String oldOutOrderNumber = reservationStockOutOrder.getOutOrderNumber(); // 生成出库业务单号,防止与已生成的出库业务单号重复 String newOrderNumber = reservationStockOutOrderDomainService.generateReserveOrderNumber(); reservationStockOutOrder.setOutOrderNumber(newOrderNumber); reservationStockOutOrder.setBusinessOrderNo(newOrderNumber); reservationStockOutOrderService.save(reservationStockOutOrder); - String outOrderNumber = reservationStockOutOrder.getOutOrderNumber(); - List materialDetailList = outMaterialDetailService.list(new QueryWrapper().lambda().eq(ReserveOutMaterialDetail::getOutOrderNumber, outOrderNumber)); + List materialDetailList = outMaterialDetailService.list(new QueryWrapper().lambda().eq(ReserveOutMaterialDetail::getOutOrderNumber, oldOutOrderNumber)); List inMaterialDetailList = new ArrayList<>(); int index = 1; for (ReserveOutMaterialDetail reserveOutMaterialDetail : materialDetailList) { ReservationOutMaterialDetail reservationOutMaterialDetail = new ReservationOutMaterialDetail(); BeanUtils.copyProperties(reserveOutMaterialDetail, reservationOutMaterialDetail,"materialDetailId"); + reservationOutMaterialDetail.setOutOrderNumber(newOrderNumber); // 使用新单号保持与主表关联 String lot = generateDateSerialNumber(); lot = lot+"-"+index; index++;