From 6121117080cffd6528b7f233c98e4b1574d8c823 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 10 十一月 2026 13:02:37 +0800
Subject: [PATCH] fix(mes): 部分来料不合格时合格数量仍自动进入采购入库

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 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 83d2a04..dd13518 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
@@ -652,11 +652,12 @@
         receipt.setStatus(MesWmItemReceiptStatusEnum.PREPARE.getStatus());
         itemReceiptMapper.insert(receipt);
 
-        // 6. 閬嶅巻琛屽垱寤哄叆搴撳崟琛�
+        // 6. 閬嶅巻琛屽垱寤哄叆搴撳崟琛岋細闇�妫�琛屽彧鍏ヨ川妫�鍚堟牸鏁伴噺锛屾棤闇�妫�琛屽叆鍒拌揣鏁伴噺
+        int createdLineCount = 0;
         for (MesWmArrivalNoticeLineDO noticeLine : lines) {
-            BigDecimal receivable = noticeLine.getQualifiedQuantity() != null
+            BigDecimal receivable = Boolean.TRUE.equals(noticeLine.getIqcCheckFlag())
                     ? noticeLine.getQualifiedQuantity() : noticeLine.getArrivalQuantity();
-            // 鏁磋宸查��渚涘簲鍟嗘椂涓嶇敓鎴愰浂鏁伴噺鍏ュ簱琛岋紱鍏朵綑琛屼粛姝e父鏀惰揣銆�
+            // 鏁磋涓嶅悎鏍硷紙鍚堟牸鏁伴噺涓� 0锛夋垨鏃犻渶妫�琛屾湭濉啓鍒拌揣鏁伴噺鏃讹紝涓嶇敓鎴愰浂鏁伴噺鍏ュ簱琛�
             if (receivable == null || receivable.signum() <= 0) {
                 continue;
             }
@@ -665,11 +666,16 @@
             receiptLine.setArrivalNoticeLineId(noticeLine.getId());
             receiptLine.setPurchaseOrderItemId(noticeLine.getPurchaseOrderItemId());
             receiptLine.setItemId(noticeLine.getItemId());
-            // 浣跨敤鍚堟牸鏁伴噺锛堝鏋滄湁 IQC 鍒欐槸鍚堟牸鏁伴噺锛屽惁鍒欐槸鍒拌揣鏁伴噺锛�
             receiptLine.setReceivedQuantity(receivable);
             // 鎸夐噰璐鍗曡鍗曚环蹇収閲戦锛屼緵鏉ョエ/瀵硅处浣跨敤
             fillReceiptLinePrice(receiptLine);
             itemReceiptLineService.createItemReceiptLineFromArrivalNoticeLine(receiptLine);
+            createdLineCount++;
+        }
+        if (createdLineCount == 0) {
+            throw new ServiceException(WM_ARRIVAL_NOTICE_NO_QUALIFIED_LINE.getCode(),
+                    "鍒拌揣閫氱煡鍗昜" + notice.getCode() + "]娌℃湁鍙叆搴撶殑鍚堟牸鏁伴噺锛氭墍鏈夐渶妫�琛岀殑璐ㄦ鍚堟牸鏁伴噺鍧囦负 0 鎴栦负绌恒��"
+                            + "璇峰厛瀹屾垚涓嶅悎鏍煎搧鐨勫缃紙閫�璐ф垨璁╂鎺ユ敹锛夛紝澶勭疆瀹屾垚鍚庡啀鐢熸垚鍏ュ簱鍗曘��");
         }
 
         return receipt.getId();

--
Gitblit v1.9.3