From 6fa82a1ad7c3ae061ef499f0d0806a16846e122b Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 10 十一月 2026 16:55:02 +0800
Subject: [PATCH] feat(mes): 来料检验与不合格退货闭环优化

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ncr/MesQcNcrPurchaseSourceValidator.java |   15 ++++++++++++++-
 1 files changed, 14 insertions(+), 1 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ncr/MesQcNcrPurchaseSourceValidator.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ncr/MesQcNcrPurchaseSourceValidator.java
index 137b566..088df3e 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ncr/MesQcNcrPurchaseSourceValidator.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ncr/MesQcNcrPurchaseSourceValidator.java
@@ -43,7 +43,7 @@
                 .eq(MesWmArrivalNoticeLineDO::getId, iqc.getSourceLineId()).last("FOR UPDATE"));
         if (notice == null || line == null || !Objects.equals(line.getNoticeId(), notice.getId())
                 || !Objects.equals(line.getIqcId(), iqc.getId())
-                || !Objects.equals(notice.getStatus(), MesWmArrivalNoticeStatusEnum.PENDING_QC.getStatus())
+                || !isDispositionAllowedNoticeStatus(notice.getStatus())
                 || !Objects.equals(line.getItemId(), iqc.getItemId())
                 || !Objects.equals(ncr.getItemId(), iqc.getItemId())
                 || !samePositive(ncr.getUnqualifiedQuantity(), iqc.getUnqualifiedQuantity())
@@ -52,6 +52,19 @@
         return new Source(iqc, notice, line);
     }
 
+    /**
+     * 涓嶅悎鏍煎缃厑璁哥殑鍒拌揣閫氱煡鐘舵�併��
+     *
+     * 鏉ユ枡妫�楠屽畬鎴愭椂锛屽埌璐ч�氱煡浼氬湪鍚屼竴浜嬪姟閲屼粠銆屽緟璐ㄦ銆嶆帹杩涘埌銆屽緟鍏ュ簱銆嶅苟鑷姩鐢熸垚閲囪喘鍏ュ簱鍗�
+     * 锛堝彧鍙栧悎鏍兼暟閲忥級锛岄殢鍚庣‘璁ゅ叆搴撳悗鍙樹负銆屽凡瀹屾垚銆嶃�備笉鍚堟牸閮ㄥ垎鐨勯��璐�/璁╂鐢变笉鍚堟牸鍗曞崟鐙缃紝
+     * 涓嶅啀鍙楅�氱煡鐘舵�侀檺鍒讹紝鍚﹀垯鍗曡閫氱煡锛堟垨鏈�鍚庝竴琛屾楠屽畬鎴愭椂锛夌殑涓嶅悎鏍煎崟灏嗘案杩滄棤娉曞缃��
+     */
+    private boolean isDispositionAllowedNoticeStatus(Integer status) {
+        return Objects.equals(status, MesWmArrivalNoticeStatusEnum.PENDING_QC.getStatus())
+                || Objects.equals(status, MesWmArrivalNoticeStatusEnum.PENDING_RECEIPT.getStatus())
+                || Objects.equals(status, MesWmArrivalNoticeStatusEnum.FINISHED.getStatus());
+    }
+
     private boolean samePositive(BigDecimal a, BigDecimal b) {
         return a != null && b != null && a.signum() > 0 && a.compareTo(b) == 0;
     }

--
Gitblit v1.9.3