liu
22 小时以前 4ca4444ad33a2a1a51f5c06e78ee9365dfb1eed6
分支
用户 liu <2021943741@qq.com>
星期四, 十月 8, 2026 17:11 +0800
提交者 liu <2021943741@qq.com>
星期四, 十月 8, 2026 17:11 +0800
提交4ca4444ad33a2a1a51f5c06e78ee9365dfb1eed6
目录 d9740054710708ca133517dd1e17ffae747f6814 目录 | zip | gz
上一版本 975fe5248cc1f3d999f4d660fc331570110c4968 查看 | 对比
feat(mes): 种子二维码标签国标四要素合规改造

依据《农作物种子标签二维码编码规则》与 GB 20464-2024,最小销售单元标签
必须包含品种名称、生产经营者名称、单元识别代码、追溯网址四项信息并按序排列。

标签生成:
- 修复标签中文渲染为方框:字体选择改为按字形探测(canDisplay),剔除纯拉丁字体 Arial
- 标签按国标顺序输出四要素,任一缺失即拒绝导出,不再静默跳过空字段
- 新增单元识别代码格式校验(不超过 20 个字符,数字或字母数字组合)
- 修复标签品种被批次品种覆盖的问题(原注释写"优先取袋码品种",实现相反)

数据源统一:
- 新增 mes.operator-name / importer-name / imported 配置项
- 生产经营者名称与追溯网址统一由后端下发,消除前端硬编码
- 新增免登录接口 /public/mes/trace/config,H5 溯源页改为接口获取
- 溯源查询响应新增 codeStatus / operatorName / traceUrl 字段

生命周期与防伪:
- 已作废袋码在溯源侧失效,返回 codeStatus=CANCELED 并提示防伪警示
- 已作废袋码被扫仍记录扫码事件(作废码被扫是重要防伪信号)
- 导出二维码标签排除已作废袋码,避免作废标签误印导致真品被误判为假货
- 非本地环境启动校验追溯网址,内网/占位符地址拒绝启动

其他:
- H5 溯源页展示加工批次与物流销售信息(国标要求追溯网址可查)
- 托盘码/批次码不再展示为「单元识别代码」,避免误导消费者
- 袋序号改为 Redis 原子分配,修复并发生成产生重复序号的竞态
- 修正单元识别代码的错误接口示例值(原示例 21 字符且含连字符,本身违反国标)
- 补充前端联调方案文档 docs/seed_qr_label_gb_compliance_integration.md

Co-Authored-By: Claude <noreply@anthropic.com>
已添加3个文件
已修改18个文件
976 ■■■■■ 文件已修改
docs/seed_qr_label_gb_compliance_integration.md 159 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/bagcode/MesProBagCodeController.java 8 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/pub/trace/MesProTracePublicController.java 8 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/pub/trace/vo/MesProTracePublicConfigRespVO.java 27 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/pub/trace/vo/MesProTracePublicRespVO.java 15 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/bagcode/MesProBagCodeMapper.java 33 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/redis/MesCodeRedisDAO.java 47 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java 7 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/trace/MesTraceCodeStatusEnum.java 36 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/framework/config/MesProperties.java 30 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/framework/config/MesQrCodeConfig.java 122 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/framework/qrcode/MesProQrLabelBuilder.java 189 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/framework/qrcode/QrCodeImageUtils.java 55 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/bagcode/MesProBagCodeService.java 19 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/bagcode/MesProBagCodeServiceImpl.java 16 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/MesProTracePublicService.java 11 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/trace/MesProTracePublicServiceImpl.java 63 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-server/src/main/resources/application-local.yaml 5 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-server/src/main/resources/application-thzy.yaml 5 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-server/src/main/resources/application.yaml 14 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-server/src/main/resources/static/trace.html 107 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史