From a1a94ab39a3ac9cc28601e3381b3b4fbc0cda02a Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 29 十月 2026 12:20:31 +0800
Subject: [PATCH] fix(mes): 解决产品收货批次信息传递和销售订单校验问题

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptServiceImpl.java |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptServiceImpl.java
index 100627f..7b0bf81 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptServiceImpl.java
@@ -188,11 +188,18 @@
 
         // 2. 閬嶅巻鏄庣粏锛屾瘡鏉℃槑缁嗕骇鐢� OUT锛堣櫄鎷熺嚎杈瑰簱鎵e噺锛�+ IN锛堝疄闄呬粨搴撳鍔狅級
         for (MesWmProductReceiptDetailDO detail : details) {
+            MesWmProductReceiptLineDO line = productReceiptLineService.getProductReceiptLine(detail.getLineId());
+            if (line == null || !receipt.getId().equals(line.getReceiptId())
+                    || !detail.getItemId().equals(line.getItemId())) {
+                throw exception(WM_PRODUCT_RECPT_NO_LINE);
+            }
+            Long batchId = line.getBatchId();
+            String batchCode = line.getBatchCode();
             // 2.1 鍏堜粠铏氭嫙绾胯竟搴撳嚭搴擄紙搴撳瓨鍑忓皯锛�
             Long outTransactionId = wmTransactionService.createTransaction(new MesWmTransactionSaveReqDTO()
                     .setType(MesWmTransactionTypeEnum.OUT.getType()).setItemId(detail.getItemId())
                     .setQuantity(detail.getQuantity().negate()) // 搴撳瓨鍑忓皯
-                    .setBatchId(detail.getBatchId())
+                    .setBatchId(batchId).setBatchCode(batchCode)
                     .setWarehouseId(virtualWarehouse.getId()).setLocationId(virtualLocation.getId()).setAreaId(virtualArea.getId())
                     .setCheckFlag(false) // 绾胯竟搴撳厑璁歌礋搴撳瓨
                     .setBizType(MesBizTypeConstants.WM_PRODUCT_RECPT).setBizId(receipt.getId())
@@ -201,7 +208,7 @@
             wmTransactionService.createTransaction(new MesWmTransactionSaveReqDTO()
                     .setType(MesWmTransactionTypeEnum.IN.getType()).setItemId(detail.getItemId())
                     .setQuantity(detail.getQuantity()) // 搴撳瓨澧炲姞
-                    .setBatchId(detail.getBatchId())
+                    .setBatchId(batchId).setBatchCode(batchCode)
                     .setWarehouseId(detail.getWarehouseId()).setLocationId(detail.getLocationId()).setAreaId(detail.getAreaId())
                     .setBizType(MesBizTypeConstants.WM_PRODUCT_RECPT).setBizId(receipt.getId())
                     .setBizCode(receipt.getCode()).setBizLineId(detail.getLineId())

--
Gitblit v1.9.3