feat(mes): 二维码大批量导出改为后台任务,取消数量上限
原先 8 处二维码导出接口共用 MAX_QR_EXPORT=2000 的硬上限,单批次达 5 万张时被直接拒绝,
且报错既不说明上限也不给出路。现按数量分流:
- 不超过分界线(默认 2000 张)走原同步流式下载,秒级返回,不排队、不校验 CPU,
保证导几百张永远秒出,不会被正在跑的大任务挡住
- 超过分界线则落后台任务,流式生成单个 ZIP 落盘,前端轮询真实进度并支持取消/隐藏
配套改动:
- 抽出 MesProQrLabelAssembler,消除袋码/托盘/批次三份重复的标签装配逻辑
- 后台任务受两道闸门约束:并发(同时仅 1 个)与 CPU(提交 80% 拒绝、生成中 85% 让路降速);
两者都只约束大批量,不影响小批量同步导出
- 临时 ZIP 下载后立即删除;下载中断或始终未下载的,由定时任务按保留期兜底清理
- 服务启动时回收因进程重启而停留在「生成中」的残留任务
- 移除已无引用的 PRO_QR_EXPORT_TOO_MANY 错误码
新增 mes_pro_qr_export_task 表,见 sql/mysql/mes_pro_qr_export_task_init.sql。
实测:1000 张约 6 秒,生成速率约 149 张/秒,5 万张约 5.6 分钟。
Co-Authored-By: Claude <noreply@anthropic.com>