From c48b8aa39a99d93343b4c7b484616dceb53d26d0 Mon Sep 17 00:00:00 2001 From: zhaoqing <3160641494@qq.com> Date: Thu, 23 Jul 2026 10:50:57 +0800 Subject: [PATCH] =?UTF-8?q?fix(oms):=E9=A2=84=E7=BA=A6=E7=A1=AE=E8=AE=A4?= =?UTF-8?q?=E5=90=8E,=E7=89=A9=E6=96=99=E6=98=8E=E7=BB=86=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ReserveStockInOrderDomainService.java | 13 +++++++------ .../service/ReserveStockOutOrderDomainService.java | 6 ++++-- 2 files changed, 11 insertions(+), 8 deletions(-) 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++;