From bc1b16a708ca7bec89d2e1a435c023477f107a59 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期日, 25 十月 2026 12:42:04 +0800
Subject: [PATCH] feat(mes): 添加MES系统自动编码规则支持

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

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ncr/MesQcNcrServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ncr/MesQcNcrServiceImpl.java
index a28e0a6..fbaf135 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ncr/MesQcNcrServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ncr/MesQcNcrServiceImpl.java
@@ -9,6 +9,8 @@
 import cn.iocoder.yudao.module.mes.dal.mysql.qc.ncr.MesQcNcrMapper;
 import cn.iocoder.yudao.module.mes.enums.qc.MesNcrStatusEnum;
 import cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum;
+import cn.iocoder.yudao.module.mes.enums.md.autocode.MesMdAutoCodeRuleCodeEnum;
+import cn.iocoder.yudao.module.mes.service.md.autocode.MesMdAutoCodeRecordService;
 import cn.iocoder.yudao.module.mes.service.qc.iqc.MesQcIqcService;
 import cn.iocoder.yudao.module.mes.service.qc.ipqc.MesQcIpqcService;
 import cn.iocoder.yudao.module.mes.service.qc.oqc.MesQcOqcService;
@@ -20,6 +22,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
+import lombok.extern.slf4j.Slf4j;
 
 import java.time.LocalDateTime;
 import java.util.Collection;
@@ -48,6 +51,7 @@
  */
 @Service
 @Validated
+@Slf4j
 public class MesQcNcrServiceImpl implements MesQcNcrService {
 
     @Resource
@@ -61,6 +65,9 @@
 
     @Resource
     private MesQcItemResolver qcItemResolver;
+
+    @Resource
+    private MesMdAutoCodeRecordService autoCodeRecordService;
 
     @Resource
     @Lazy
@@ -78,6 +85,9 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Long createNcr(MesQcNcrSaveReqVO createReqVO) {
+        if (StrUtil.isBlank(createReqVO.getCode())) {
+            createReqVO.setCode(generateNcrCode());
+        }
         // 1. 鏍¢獙鏁版嵁
         validateNcrCodeUnique(null, createReqVO.getCode());
         validateItemExists(createReqVO.getItemId());
@@ -93,6 +103,17 @@
         return ncr.getId();
     }
 
+    private String generateNcrCode() {
+        try {
+            return autoCodeRecordService.generateAutoCode(MesMdAutoCodeRuleCodeEnum.QC_NCR_CODE.getCode());
+        } catch (Exception e) {
+            log.warn("NCR 缂栫爜瑙勫垯 {} 涓嶅彲鐢紝闄嶇骇浣跨敤鏃堕棿鎴崇紪鐮�",
+                    MesMdAutoCodeRuleCodeEnum.QC_NCR_CODE.getCode(), e);
+            return "NCR" + LocalDateTime.now()
+                    .format(java.time.format.DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
+        }
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void updateNcr(MesQcNcrSaveReqVO updateReqVO) {

--
Gitblit v1.9.3