From 87733eb3623593da247c051593d64b8ff9e1d3a4 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 06 十一月 2026 19:00:39 +0800
Subject: [PATCH] feat(crm,mes): 扩展客户字段与重构批次号生成逻辑

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/MesProTracePublicServiceImpl.java |   19 ++++++++++++++++---
 1 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/MesProTracePublicServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/MesProTracePublicServiceImpl.java
index 98da11f..62969d0 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/MesProTracePublicServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/MesProTracePublicServiceImpl.java
@@ -22,6 +22,7 @@
 import cn.iocoder.yudao.module.mes.enums.pro.MesProPalletStatusEnum;
 import cn.iocoder.yudao.module.mes.enums.trace.MesTraceCodeStatusEnum;
 import cn.iocoder.yudao.module.mes.framework.qrcode.MesProQrLabelBuilder;
+import cn.iocoder.yudao.module.mes.framework.config.MesProperties;
 import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
 import cn.iocoder.yudao.module.mes.service.pro.bagcode.MesProBagCodeService;
 import cn.iocoder.yudao.module.mes.service.pro.batch.MesProBatchService;
@@ -100,6 +101,8 @@
     private MesTraceIntegrityService integrityService;
     @Resource
     private MesTraceConsumerScanEventMapper consumerScanEventMapper;
+    @Resource
+    private MesProperties mesProperties;
 
     @Override
     public MesProTracePublicRespVO queryTrace(String code) {
@@ -132,7 +135,9 @@
         MesProTracePublicConfigRespVO respVO = new MesProTracePublicConfigRespVO();
         respVO.setOperatorName(MesProQrLabelBuilder.resolveOperatorName());
         respVO.setTraceUrl(MesProQrLabelBuilder.resolveTraceUrl());
+        respVO.setTraceLocationUrl(mesProperties.getTraceLocationUrl());
         respVO.setImported(MesProQrLabelBuilder.isImported());
+        respVO.setTraceLocationRequired(mesProperties.isTraceLocationRequired());
         return respVO;
     }
 
@@ -367,14 +372,22 @@
     }
 
     private MesProTracePublicRespVO.QualityVO buildQuality(MesProBatchDO batch) {
-        List<MesQcSeedQualityDO> list = qcSeedQualityService.getQualityByBatchCode(batch.getCode());
+        // 鍙岀嚎璐ㄦ锛氬悓涓�琚嬪瓨鍦ㄥ姞宸ラ儴銆侀攢鍞儴涓ゆ潯璁板綍锛屽叏閮ㄦ斁琛屾墠绠楀悎鏍硷紝浠讳竴鏉℃姤搴熷嵆涓嶅悎鏍�
+        List<MesQcSeedQualityDO> list = qcSeedQualityService.getQualityByBatchCode(batch.getCode()).stream()
+                .filter(quality -> quality.getBizType() == null || Integer.valueOf(1).equals(quality.getBizType()))
+                .toList();
         if (CollUtil.isEmpty(list)) {
             return null;
         }
         MesQcSeedQualityDO quality = list.get(0);
+        boolean released = list.stream().allMatch(item -> Integer.valueOf(40).equals(item.getWorkflowStatus()));
+        boolean scrapped = list.stream().anyMatch(item -> Integer.valueOf(70).equals(item.getWorkflowStatus()));
         MesProTracePublicRespVO.QualityVO vo = new MesProTracePublicRespVO.QualityVO();
-        vo.setResult(quality.getResult()).setResultName(qualityResultName(quality.getResult()))
-                .setReason(quality.getReason()).setInspectorName(userName(quality.getInspectorId()))
+        Integer finalResult = scrapped ? 2 : released ? 1 : 0;
+        String reason = list.stream().map(MesQcSeedQualityDO::getReason)
+                .filter(StrUtil::isNotBlank).findFirst().orElse(quality.getReason());
+        vo.setResult(finalResult).setResultName(finalResult == 0 ? "澶嶆鎴栧鎵逛腑" : qualityResultName(finalResult))
+                .setReason(reason).setInspectorName(userName(quality.getInspectorId()))
                 .setInspectedAt(quality.getInspectedAt());
         List<MesQcSeedQualityIndicatorDO> indicators = qcSeedQualityService.getIndicatorsByQualityId(quality.getId());
         vo.setIndicators(convertList(indicators, ind -> {

--
Gitblit v1.9.3