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/iqc/MesQcIqcServiceImpl.java |   21 ++++++++++++++++-----
 1 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/iqc/MesQcIqcServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/iqc/MesQcIqcServiceImpl.java
index 93efc25..e11c611 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/iqc/MesQcIqcServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/iqc/MesQcIqcServiceImpl.java
@@ -112,7 +112,7 @@
         // 2. 鎻掑叆涓昏〃
         MesQcIqcDO iqc = BeanUtils.toBean(createReqVO, MesQcIqcDO.class)
                 .setTemplateId(null)
-                .setCheckQuantity(createReqVO.getQualifiedQuantity().add(createReqVO.getUnqualifiedQuantity()))
+                .setCheckQuantity(resolveCheckQuantity(createReqVO.getQualifiedQuantity(), createReqVO.getUnqualifiedQuantity()))
                 .setSourceDocCode(sourceDocCode)
                 .setStatus(MesQcStatusEnum.DRAFT.getStatus());
         iqcMapper.insert(iqc);
@@ -131,8 +131,18 @@
         updateObj.setSourceDocType(null).setSourceDocId(null).setSourceLineId(null); // 涓嶅厑璁镐慨鏀规潵婧愬崟鎹�
         updateObj.setTemplateId(null); // 涓嶅厑璁镐慨鏀规ā鏉�
         updateObj.setItemId(null); // 涓嶅厑璁镐慨鏀圭墿鏂�
-        updateObj.setCheckQuantity(updateReqVO.getQualifiedQuantity().add(updateReqVO.getUnqualifiedQuantity()));
+        updateObj.setCheckQuantity(resolveCheckQuantity(updateReqVO.getQualifiedQuantity(), updateReqVO.getUnqualifiedQuantity()));
         iqcMapper.updateById(updateObj);
+    }
+
+    /**
+     * 妫�楠屾暟閲� = 鍚堟牸鏁伴噺 + 涓嶅悎鏍兼暟閲忥紱涓よ�呮湭濉叏鏃剁暀绌猴紝绛夋楠屽憳褰曞叆鍚庡啀璁$畻
+     */
+    private BigDecimal resolveCheckQuantity(BigDecimal qualified, BigDecimal unqualified) {
+        if (qualified == null || unqualified == null) {
+            return null;
+        }
+        return qualified.add(unqualified);
     }
 
     private void validateIqcSaveData(MesQcIqcSaveReqVO reqVO) {
@@ -393,9 +403,10 @@
         }
         iqc.setItemId(line.getItemId());
         iqc.setReceivedQuantity(line.getArrivalQuantity());
-        iqc.setCheckQuantity(BigDecimal.ZERO); // 寰呭~鍐�
-        iqc.setQualifiedQuantity(BigDecimal.ZERO); // 寰呭~鍐�
-        iqc.setUnqualifiedQuantity(BigDecimal.ZERO); // 寰呭~鍐�
+        // 鍚堟牸/涓嶅悎鏍兼暟閲忕暀绌猴紝鐢辨楠屽憳濉啓鏃跺綍鍏ワ紙涓嶅啀榛樿 0锛岄伩鍏嶈鍒や负銆屽凡妫�楠屽悎鏍� 0銆嶏級
+        iqc.setCheckQuantity(null);
+        iqc.setQualifiedQuantity(null);
+        iqc.setUnqualifiedQuantity(null);
         iqc.setReceiveDate(java.time.LocalDateTime.now());
         iqc.setStatus(MesQcStatusEnum.DRAFT.getStatus());
         iqcMapper.insert(iqc);

--
Gitblit v1.9.3