| | |
| | | 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); |
| | | } |
| | | |
| | | /** |
| | |
| | | if (user != null) { |
| | | keyValues.put("责任人", user.getNickname()); |
| | | } |
| | | return QrLabelInfo.builder().fileName(code).code(code).keyValues(keyValues).build(); |
| | | return QrLabelInfo.builder().fileName(code).code(buildQrCodeContent(code)).keyValues(keyValues).build(); |
| | | } |
| | | |
| | | /** |
| | |
| | | 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(); |
| | | } |
| | | |
| | | /** |
| | |
| | | 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(); |
| | | } |
| | | |
| | | /** |