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/arrivalnotice/MesWmArrivalNoticeServiceImpl.java |   27 +++++++++++++++++++--------
 1 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeServiceImpl.java
index a8b6e3c..82e9aa3 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeServiceImpl.java
@@ -22,7 +22,6 @@
 import cn.iocoder.yudao.module.erp.api.purchase.dto.ErpPurchaseOrderItemRespDTO;
 import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
 import cn.iocoder.yudao.module.mes.service.qc.iqc.MesQcIqcService;
-import cn.iocoder.yudao.module.mes.enums.qc.MesQcCheckResultEnum;
 import cn.iocoder.yudao.module.mes.service.wm.itemreceipt.MesWmItemReceiptService;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
@@ -260,16 +259,18 @@
             return;
         }
 
-        // 3.2 鍒ゆ柇鏄惁鎵�鏈夐渶妫�琛岄兘鍙互鍏ュ簱锛堝悎鏍兼垨鐗归噰锛�
-        boolean hasNonInbound = CollectionUtils.anyMatch(lines,
-                line -> Boolean.TRUE.equals(line.getIqcCheckFlag())
-                        && !MesQcCheckResultEnum.canInbound(line.getIqcCheckResult()));
-        if (hasNonInbound) {
-            log.info("[updateArrivalNoticeWhenIqcFinish][鍒拌揣閫氱煡鍗�({}) 瀛樺湪涓嶅彲鍏ュ簱鐨勮锛堥��璐�/鎶ュ簾锛夛紝鐘舵�佷繚鎸佸緟璐ㄦ]", id);
+        // 3.2 鍒ゆ柇鏄惁瀛樺湪鍙叆搴撶殑鍚堟牸鏁伴噺锛氶渶妫�琛屽彇璐ㄦ鍚堟牸鏁伴噺锛屾棤闇�妫�琛屽彇鍒拌揣鏁伴噺銆�
+        //     閮ㄥ垎涓嶅悎鏍兼椂锛屽悎鏍奸儴鍒嗙収甯稿叆搴擄紱涓嶅悎鏍奸儴鍒嗙敱 NCR 鍗曠嫭澶勭疆锛堥��璐�/璁╂鎺ユ敹锛夛紝涓嶅啀闃诲鍚堟牸鍝佸叆搴撱��
+        boolean hasReceivable = CollectionUtils.anyMatch(lines, line -> {
+            BigDecimal receivable = resolveReceivableQuantity(line);
+            return receivable != null && receivable.signum() > 0;
+        });
+        if (!hasReceivable) {
+            log.info("[updateArrivalNoticeWhenIqcFinish][鍒拌揣閫氱煡鍗�({}) 鍚勮鐨勫悎鏍兼暟閲忓潎涓� 0锛岀姸鎬佷繚鎸佸緟璐ㄦ锛岀瓑寰呬笉鍚堟牸鍝佸缃甝", id);
             return;
         }
 
-        // 3.3 鎵�鏈夎妫�楠屽畬鎴愪笖鍙叆搴擄紝鏇存柊涓昏〃鐘舵�� PENDING_QC 鈫� PENDING_RECEIPT
+        // 3.3 妫�楠屽畬鎴愪笖瀛樺湪鍙叆搴撴暟閲忥紝鏇存柊涓昏〃鐘舵�� PENDING_QC 鈫� PENDING_RECEIPT
         arrivalNoticeMapper.updateById(new MesWmArrivalNoticeDO()
                 .setId(id).setStatus(MesWmArrivalNoticeStatusEnum.PENDING_RECEIPT.getStatus()));
         // 3.4 璐ㄦ鍚堟牸鍚庣洿鎺ョ敓鎴愰噰璐叆搴撳崟锛堝緟鍏ュ簱锛夛紝搴撶鍙渶鏍稿鏁伴噺骞剁‘璁ゅ叆搴�
@@ -277,6 +278,16 @@
     }
 
     /**
+     * 璁$畻鍒拌揣閫氱煡琛屾湰娆″彲鍏ュ簱鏁伴噺锛氶渶妫�琛屽彇璐ㄦ鍚堟牸鏁伴噺锛屾棤闇�妫�琛屽彇鍒拌揣鏁伴噺銆�
+     */
+    private BigDecimal resolveReceivableQuantity(MesWmArrivalNoticeLineDO line) {
+        if (Boolean.TRUE.equals(line.getIqcCheckFlag())) {
+            return line.getQualifiedQuantity();
+        }
+        return line.getArrivalQuantity();
+    }
+
+    /**
      * 鍒拌揣閫氱煡鍗曡繘鍏ャ�屽緟鍏ュ簱銆嶅悗鑷姩鐢熸垚閲囪喘鍏ュ簱鍗曘��
      * 搴撶鏃犻渶鍐嶅洖鍒板埌璐ч�氱煡鐐广�屾墽琛屽叆搴撱�嶏紝鐩存帴鍒般�愰噰璐叆搴撱�戞牳瀵规暟閲忓苟纭鍏ュ簱鍗冲彲銆�
      */

--
Gitblit v1.9.3