From 035e28134ff1ace5d7117007dd72cd18c68f14ff Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 10 八月 2026 17:55:44 +0800
Subject: [PATCH] refactor(crm): 重构回款审批流程为状态更新模式

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/iqc/MesQcIqcServiceImpl.java |   43 ++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 38 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 e6d21c5..b64b62f 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
@@ -22,7 +22,10 @@
 import cn.iocoder.yudao.module.mes.service.qc.template.MesQcTemplateItemService;
 import cn.iocoder.yudao.module.mes.service.wm.arrivalnotice.MesWmArrivalNoticeService;
 import cn.iocoder.yudao.module.mes.service.wm.outsourcereceipt.MesWmOutsourceReceiptService;
-import cn.iocoder.yudao.module.erp.api.purchase.ErpSupplierApi;
+import cn.iocoder.yudao.module.mes.controller.admin.qc.ncr.vo.MesQcNcrSaveReqVO;
+import cn.iocoder.yudao.module.mes.service.qc.ncr.MesQcNcrService;
+import cn.iocoder.yudao.module.mes.enums.qc.MesQcCheckResultEnum;
+import cn.iocoder.yudao.module.srm.api.supplier.SrmSupplierApi;
 import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
 import jakarta.annotation.Resource;
@@ -43,7 +46,7 @@
 /**
  * MES 鏉ユ枡妫�楠屽崟锛圛QC锛� Service 瀹炵幇绫�
  *
- * @author 鑺嬮亾婧愮爜
+ * @author 瓒呯骇绠$悊鍛�
  */
 @Service
 @Validated
@@ -63,7 +66,7 @@
     @Resource
     private MesWmOutsourceReceiptService outsourceReceiptService;
     @Resource
-    private ErpSupplierApi supplierApi;
+    private SrmSupplierApi srmSupplierApi;
     @Resource
     private MesMdItemService itemService;
     @Resource
@@ -75,6 +78,10 @@
 
     @Resource
     private MdmItemApi mdmItemApi;
+
+    @Resource
+    @Lazy
+    private MesQcNcrService ncrService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -123,7 +130,7 @@
         validateIqcCodeUnique(reqVO.getId(), reqVO.getCode());
         // 鏍¢獙渚涘簲鍟嗗瓨鍦�
         if (reqVO.getVendorId() != null) {
-            supplierApi.validateSupplier(reqVO.getVendorId());
+            srmSupplierApi.getSupplier(reqVO.getVendorId());
         }
         // 鏍¢獙鐗╂枡瀛樺湪锛堜娇鐢� MDM 鐗╂枡锛�
         if (reqVO.getItemId() != null) {
@@ -149,11 +156,37 @@
                 .setId(id).setStatus(MesQcStatusEnum.FINISHED.getStatus());
         iqcMapper.updateById(updateObj);
 
-        // 3. 鍥炲啓鏉ユ簮鍗曟嵁
+        // 3. 涓嶅悎鏍兼椂鑷姩鍒涘缓 NCR
+        generateNcrIfNeeded(iqc);
+
+        // 4. 鍥炲啓鏉ユ簮鍗曟嵁
         writeBackSourceDoc(iqc);
     }
 
     /**
+     * 涓嶅悎鏍兼椂鑷姩鍒涘缓 NCR锛堜笉鍚堟牸鍝佸鐞嗗崟锛�
+     *
+     * @param iqc 鏉ユ枡妫�楠屽崟
+     */
+    private void generateNcrIfNeeded(MesQcIqcDO iqc) {
+        BigDecimal unqualifiedQty = iqc.getUnqualifiedQuantity();
+        if (unqualifiedQty == null || unqualifiedQty.compareTo(BigDecimal.ZERO) <= 0) {
+            return;
+        }
+        String ncrCode = "NCR" + java.time.LocalDateTime.now()
+                .format(java.time.format.DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
+        MesQcNcrSaveReqVO saveReqVO = new MesQcNcrSaveReqVO();
+        saveReqVO.setCode(ncrCode);
+        saveReqVO.setName("涓嶅悎鏍煎搧澶勭悊鍗�");
+        saveReqVO.setQcType(MesQcTypeEnum.IQC.getType());
+        saveReqVO.setQcId(iqc.getId());
+        saveReqVO.setItemId(iqc.getItemId());
+        saveReqVO.setUnqualifiedQuantity(unqualifiedQty);
+        saveReqVO.setDefectDescription("鐢辨潵鏂欐楠�(" + iqc.getCode() + ")鑷姩鐢熸垚");
+        ncrService.createNcr(saveReqVO);
+    }
+
+    /**
      * 鍥炲啓鏉ユ簮鍗曟嵁锛圛QC 瀹屾垚鍚庯級
      *
      * @param iqc 鏉ユ枡妫�楠屽崟

--
Gitblit v1.9.3