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/framework/qrcode/MesProQrLabelBuilder.java |   33 ++++++++++++++++++++++++++++-----
 1 files changed, 28 insertions(+), 5 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/framework/qrcode/MesProQrLabelBuilder.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/framework/qrcode/MesProQrLabelBuilder.java
index 822e040..80b198d 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/framework/qrcode/MesProQrLabelBuilder.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/framework/qrcode/MesProQrLabelBuilder.java
@@ -8,16 +8,39 @@
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.pallet.MesProPalletDO;
 import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
 
+import java.nio.charset.StandardCharsets;
+import java.net.URLEncoder;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
 /**
- * MES 浜岀淮鐮佹爣绛炬瀯寤哄櫒锛氱粺涓�"浜岀淮鐮佺紪鐮佺函鐮佸�� + 鍥剧墖鍙犲姞鍙鏂囨湰"鐨勬枃鏈粍瑁呰鍒欙紝
- * 淇濊瘉鎵规銆佹墭鐩樸�佽鐮佷笁绉嶆爣绛剧殑鍏抽敭淇℃伅淇濈暀涓�鑷�
+ * MES 浜岀淮鐮佹爣绛炬瀯寤哄櫒锛氱粺涓�"浜岀淮鐮佺紪鐮佸唴瀹� + 鍥剧墖鍙犲姞鍙鏂囨湰"鐨勬枃鏈粍瑁呰鍒欙紝
+ * 淇濊瘉鎵规銆佹墭鐩樸�佽鐮佷笁绉嶆爣绛剧殑鍏抽敭淇℃伅淇濈暀涓�鑷淬��
+ * <p>
+ * 閰嶇疆浜� {@code mes.trace-base-url} 鏃讹紝浜岀淮鐮佸唴瀹逛负 H5 婧簮鍦板潃锛堝甫 code 鍙傛暟锛夛紝鍚﹀垯鍥為��涓虹函鐮佸�硷紙鍏煎鏃х爜锛�
  */
 public final class MesProQrLabelBuilder {
 
     private MesProQrLabelBuilder() {
+    }
+
+    /**
+     * H5 婧簮椤甸潰鍩虹鍦板潃锛岀敱 {@code MesQrCodeConfig} 鍚姩鏃舵敞鍏ワ紱涓虹┖鏃朵簩缁寸爜缂栫爜绾爜鍊�
+     */
+    private static volatile String traceBaseUrl = "";
+
+    public static void setTraceBaseUrl(String traceBaseUrl) {
+        MesProQrLabelBuilder.traceBaseUrl = StrUtil.blankToDefault(traceBaseUrl, "");
+    }
+
+    /**
+     * 缁勮浜岀淮鐮佸唴瀹癸細閰嶇疆浜嗘函婧愬湴鍧�鍒欐嫾 URL锛屽惁鍒欒繑鍥炵函鐮佸��
+     */
+    private static String buildQrCodeContent(String code) {
+        if (StrUtil.isEmpty(traceBaseUrl)) {
+            return code;
+        }
+        return traceBaseUrl + "?code=" + URLEncoder.encode(code, StandardCharsets.UTF_8);
     }
 
     /**
@@ -51,7 +74,7 @@
         if (user != null) {
             keyValues.put("璐d换浜�", user.getNickname());
         }
-        return QrLabelInfo.builder().fileName(code).code(code).keyValues(keyValues).build();
+        return QrLabelInfo.builder().fileName(code).code(buildQrCodeContent(code)).keyValues(keyValues).build();
     }
 
     /**
@@ -78,7 +101,7 @@
         if (batch != null) {
             fillBatchKeyValues(keyValues, batch, itemMap, userMap);
         }
-        return QrLabelInfo.builder().fileName(code).code(code).keyValues(keyValues).build();
+        return QrLabelInfo.builder().fileName(code).code(buildQrCodeContent(code)).keyValues(keyValues).build();
     }
 
     /**
@@ -98,7 +121,7 @@
         if (batch != null) {
             fillBatchKeyValues(keyValues, batch, itemMap, userMap);
         }
-        return QrLabelInfo.builder().fileName(bagCode.getCode()).code(bagCode.getCode()).keyValues(keyValues).build();
+        return QrLabelInfo.builder().fileName(bagCode.getCode()).code(buildQrCodeContent(bagCode.getCode())).keyValues(keyValues).build();
     }
 
     /**

--
Gitblit v1.9.3