From 6d910029b6c81db0a2b66caa66952781397b153a Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期六, 29 八月 2026 13:45:52 +0800
Subject: [PATCH] feat(mes): 实现H5溯源页面与二维码内容集成

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/seedquality/MesQcSeedQualityServiceImpl.java |   47 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 46 insertions(+), 1 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/seedquality/MesQcSeedQualityServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/seedquality/MesQcSeedQualityServiceImpl.java
index 531c3cf..60b78c1 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/seedquality/MesQcSeedQualityServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/seedquality/MesQcSeedQualityServiceImpl.java
@@ -2,20 +2,31 @@
 
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.mes.controller.admin.qc.seedquality.vo.MesQcSeedQualitySubmitReqVO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.pro.batch.MesProBatchDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.qc.seedquality.*;
+import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO;
 import cn.iocoder.yudao.module.mes.dal.mysql.qc.seedquality.*;
+import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockStateEnum;
+import cn.iocoder.yudao.module.mes.service.pro.batch.MesProBatchService;
+import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService;
+import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService;
 import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.jdbc.BadSqlGrammarException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 import java.time.LocalDateTime;
 import java.util.*;
 
-@Service @Validated
+@Service @Validated @Slf4j
 public class MesQcSeedQualityServiceImpl implements MesQcSeedQualityService {
     private static final Set<String> REQUIRED = Set.of("purity", "cleanliness", "germination_rate", "moisture");
     @Resource private MesQcSeedQualityMapper qualityMapper;
     @Resource private MesQcSeedQualityIndicatorMapper indicatorMapper;
+    @Resource private MesProBatchService proBatchService;
+    @Resource private MesWmBatchService mesWmBatchService;
+    @Resource private MesWmMaterialStockService materialStockService;
 
     @Override @Transactional(rollbackFor = Exception.class)
     public Long submit(MesQcSeedQualitySubmitReqVO reqVO) {
@@ -36,7 +47,41 @@
         if (!codes.equals(REQUIRED)) throw new IllegalArgumentException("鍥涢」鎸囨爣涓嶅畬鏁�");
         quality.setResult(passed ? 1 : 2);
         qualityMapper.updateById(quality);
+        // 璐ㄦ鍚堟牸 鈫� 搴撳瓨鏁存壒鐢辨殏瀛樺簱锛堝緟璐ㄦ锛夎浆涓哄悎鏍煎簱锛堟寮忓簱瀛橈級
+        if (passed) {
+            MesProBatchDO proBatch = proBatchService.getBatchByCode(reqVO.getBatchCode());
+            if (proBatch != null) {
+                MesWmBatchDO wmBatch = mesWmBatchService.getOrCreateByProBatch(proBatch);
+                if (wmBatch != null) {
+                    int updated = materialStockService.updateStockStateByBatchId(wmBatch.getId(),
+                            MesWmStockStateEnum.QUALIFIED.getState(), MesWmStockStateEnum.TEMP.getState());
+                    log.info("[submit][璐ㄦ鍚堟牸锛屾壒娆� {} 搴撳瓨鐢辨殏瀛樺簱杞悎鏍煎簱锛屽奖鍝� {} 鏉", reqVO.getBatchCode(), updated);
+                }
+            }
+        }
         // 搴撲綅鐢卞悗鍙伴厤缃湇鍔℃帴绠★紝褰撳墠鐗堟湰淇濈暀瀹¤闂幆锛岀姝㈠墠绔紶鍏ュ簱浣嶃��
         return quality.getId();
     }
+
+    @Override
+    public List<MesQcSeedQualityDO> getQualityByBatchCode(String batchCode) {
+        try {
+            return qualityMapper.selectListByBatchCode(batchCode);
+        } catch (BadSqlGrammarException ex) {
+            // 绉嶅瓙璐ㄦ琛ㄦ湭鍒濆鍖栨椂瀹归敊锛屼笉闃诲鍏紑婧簮
+            log.warn("[getQualityByBatchCode][绉嶅瓙璐ㄦ琛ㄦ湭鍒濆鍖栵紝鎵规 {} 鏌ヨ澶辫触: {}]", batchCode, ex.getMessage());
+            return List.of();
+        }
+    }
+
+    @Override
+    public List<MesQcSeedQualityIndicatorDO> getIndicatorsByQualityId(Long qualityId) {
+        try {
+            return indicatorMapper.selectListByQualityId(qualityId);
+        } catch (BadSqlGrammarException ex) {
+            // 绉嶅瓙璐ㄦ琛ㄦ湭鍒濆鍖栨椂瀹归敊
+            log.warn("[getIndicatorsByQualityId][绉嶅瓙璐ㄦ鎸囨爣琛ㄦ湭鍒濆鍖栵紝璐ㄦ {} 鏌ヨ澶辫触: {}]", qualityId, ex.getMessage());
+            return List.of();
+        }
+    }
 }

--
Gitblit v1.9.3