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/oqc/MesQcOqcServiceImpl.java | 45 +++++++++++++++++++++++++++++++++++++--------
1 files changed, 37 insertions(+), 8 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/oqc/MesQcOqcServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/oqc/MesQcOqcServiceImpl.java
index b392411..57b4dd2 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/oqc/MesQcOqcServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/oqc/MesQcOqcServiceImpl.java
@@ -13,11 +13,13 @@
import cn.iocoder.yudao.module.mes.enums.qc.MesQcStatusEnum;
import cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum;
import cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
import cn.iocoder.yudao.module.mes.service.qc.defectrecord.MesQcDefectRecordService;
import cn.iocoder.yudao.module.mes.service.qc.indicatorresult.MesQcIndicatorResultService;
import cn.iocoder.yudao.module.mes.service.qc.template.MesQcTemplateItemService;
import cn.iocoder.yudao.module.mes.service.wm.productsales.MesWmProductSalesLineService;
+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.mes.service.wm.productsales.MesWmProductSalesService;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesLineDO;
@@ -41,7 +43,7 @@
/**
* MES 鍑鸿揣妫�楠屽崟锛圤QC锛� Service 瀹炵幇绫�
*
- * @author 鑺嬮亾婧愮爜
+ * @author 瓒呯骇绠$悊鍛�
*/
@Service
@Validated
@@ -59,9 +61,6 @@
private MesQcDefectRecordService defectRecordService;
@Resource
@Lazy
- private MesMdItemService itemService;
- @Resource
- @Lazy
private MesWmProductSalesLineService productSalesLineService;
@Resource
@Lazy
@@ -76,6 +75,10 @@
private MdmItemApi mdmItemApi;
@Resource
private CrmCustomerApi customerApi;
+
+ @Resource
+ @Lazy
+ private MesQcNcrService ncrService;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -121,8 +124,8 @@
// 鏍¢獙缂栧彿鍞竴
validateOqcCodeUnique(reqVO.getId(), reqVO.getCode());
// 鏍¢獙鐗╂枡銆佹娴嬩汉鍛樺瓨鍦�
- // 娉細瀹㈡埛 ID 鏉ヨ嚜 CRM锛屼笉闇�瑕佸湪 MES 涓牎楠�
- itemService.validateItemExists(reqVO.getItemId());
+ // 娉細鐗╂枡 ID 鏉ヨ嚜 MDM锛屽鎴� ID 鏉ヨ嚜 CRM
+ mdmItemApi.validateItemExists(reqVO.getItemId());
adminUserApi.validateUser(reqVO.getInspectorUserId());
}
@@ -143,11 +146,37 @@
.setId(id).setStatus(MesQcStatusEnum.FINISHED.getStatus());
oqcMapper.updateById(updateObj);
- // 3. 鍥炲啓鏉ユ簮鍗曟嵁
+ // 3. 涓嶅悎鏍兼椂鑷姩鍒涘缓 NCR
+ generateNcrIfNeeded(oqc);
+
+ // 4. 鍥炲啓鏉ユ簮鍗曟嵁
writeBackSourceDoc(oqc);
}
/**
+ * 涓嶅悎鏍兼椂鑷姩鍒涘缓 NCR锛堜笉鍚堟牸鍝佸鐞嗗崟锛�
+ *
+ * @param oqc 鍑鸿揣妫�楠屽崟
+ */
+ private void generateNcrIfNeeded(MesQcOqcDO oqc) {
+ BigDecimal unqualifiedQty = oqc.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.OQC.getType());
+ saveReqVO.setQcId(oqc.getId());
+ saveReqVO.setItemId(oqc.getItemId());
+ saveReqVO.setUnqualifiedQuantity(unqualifiedQty);
+ saveReqVO.setDefectDescription("鐢卞嚭璐ф楠�(" + oqc.getCode() + ")鑷姩鐢熸垚");
+ ncrService.createNcr(saveReqVO);
+ }
+
+ /**
* 鍥炲啓鏉ユ簮鍗曟嵁锛圤QC 瀹屾垚鍚庯級
*
* <p>褰撴潵婧愪负閿�鍞嚭搴撳崟鏃讹紝璋冪敤
--
Gitblit v1.9.3