From f71dabccb0e4c2fa410683e6058eb906a7dbf094 Mon Sep 17 00:00:00 2001
From: xiaoyi <908147524@qq.com>
Date: 星期三, 26 八月 2026 18:12:07 +0800
Subject: [PATCH] feat 采购修正

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java |   18 +++++++++++++-----
 1 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java
index aa30333..f15ad92 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java
@@ -25,7 +25,7 @@
 import cn.iocoder.yudao.module.mes.service.wm.transaction.dto.MesWmTransactionSaveReqDTO;
 import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
 import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
-import cn.iocoder.yudao.module.erp.api.purchase.ErpPurchaseOrderApi;
+import cn.iocoder.yudao.module.erp.api.purchase.PurchaseOrderApi;
 import cn.iocoder.yudao.module.srm.api.supplier.SrmSupplierApi;
 import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
 import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
@@ -81,7 +81,7 @@
     private BpmProcessInstanceApi processInstanceApi;
 
     @Resource
-    private ErpPurchaseOrderApi purchaseOrderApi;
+    private PurchaseOrderApi purchaseOrderApi;
 
     @Resource
     private MdmItemApi mdmItemApi;
@@ -184,13 +184,21 @@
             if (item == null) {
                 continue;
             }
-            // 濡傛灉鐗╂枡寮�鍚壒娆$鐞嗭紝妫�鏌ヨ涓婄殑鎵规鍙锋槸鍚︿负绌�
-            if (Boolean.TRUE.equals(item.getIsBatchManaged()) && line.getBatchId() == null) {
-                throw exception(WM_ITEM_RECEIPT_BATCH_REQUIRED, item.getCode(), item.getName());
+            // 濡傛灉鐗╂枡寮�鍚壒娆$鐞嗭紝琛屾垨鍏朵笂鏋舵槑缁嗗繀椤绘惡甯︽壒娆″彿锛屽惁鍒欐棤娉曠敓鎴愬簱瀛樹簨鍔�
+            if (Boolean.TRUE.equals(item.getIsBatchManaged())) {
+                boolean hasBatch = line.getBatchId() != null
+                        || hasDetailBatch(itemReceiptDetailService.getItemReceiptDetailListByLineId(line.getId()));
+                if (!hasBatch) {
+                    throw exception(WM_ITEM_RECEIPT_BATCH_REQUIRED, item.getCode(), item.getName());
+                }
             }
         }
     }
 
+    private boolean hasDetailBatch(List<MesWmItemReceiptDetailDO> details) {
+        return details.stream().anyMatch(detail -> detail.getBatchId() != null);
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void stockItemReceipt(Long id) {

--
Gitblit v1.9.3