From 704265308b1227dbada5a36b2027b588c062ded2 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 12 十月 2026 09:14:37 +0800
Subject: [PATCH] feat(mes): 新增业务码支持并优化追溯查询功能
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/bagcode/MesProBagCodeController.java | 29 +++++++++++++++++++++++++++--
1 files changed, 27 insertions(+), 2 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/bagcode/MesProBagCodeController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/bagcode/MesProBagCodeController.java
index 46b6160..1e28b26 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/bagcode/MesProBagCodeController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/bagcode/MesProBagCodeController.java
@@ -142,12 +142,12 @@
}
@GetMapping("/get-by-code")
- @Operation(summary = "鎵爜杩芥函锛氭牴鎹鐮侊紙浜岀淮鐮佸唴瀹癸級鍙嶆煡鎵规銆佷骇绾裤�佽矗浠讳汉绛変俊鎭�")
+ @Operation(summary = "鍐呴儴鎵爜鏌ヨ锛氭牴鎹拷婧爜鎴栦笟鍔$爜鍙嶆煡琚嬨�佹壒娆°�佷骇绾夸俊鎭�")
@Parameter(name = "code", description = "鍗曞厓璇嗗埆浠g爜锛堝浗鏍囷細涓嶈秴杩� 20 涓瓧绗︼紝鏁板瓧鎴栧瓧姣嶆暟瀛楃粍鍚堬級",
required = true, example = "0286267849370923")
@PreAuthorize("@ss.hasPermission('mes:pro-bag-code:query')")
public CommonResult<MesProBagCodeTraceRespVO> getBagCodeByCode(@RequestParam("code") String code) {
- MesProBagCodeDO bagCode = bagCodeService.getBagCodeByCode(code);
+ MesProBagCodeDO bagCode = bagCodeService.getBagCodeByScanCode(code);
if (bagCode == null) {
throw exception(PRO_BAG_CODE_NOT_EXISTS);
}
@@ -219,6 +219,31 @@
// ==================== 鎷兼帴 VO ====================
+ @PostMapping("/generate-business-code")
+ @Operation(summary = "琛ョ敓鎴愬凡鏈夎鐮佺殑鍑哄叆搴撲笟鍔$爜锛堝凡鏈夌爜鍊间笉鍙橈級")
+ @PreAuthorize("@ss.hasPermission('mes:pro-bag-code:create')")
+ public CommonResult<Integer> generateBusinessCodes(@Valid @RequestBody
+ cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagBusinessCodeGenerateReqVO reqVO) {
+ return success(bagCodeService.generateBusinessCodes(reqVO.getIds()));
+ }
+
+ @GetMapping("/export-business-qr")
+ @Operation(summary = "瀵煎嚭鍑哄叆搴撲笟鍔$爜浜岀淮鐮� ZIP锛堜簩缁寸爜浠呯紪鐮佷笟鍔$爜鍊硷級")
+ @PreAuthorize("@ss.hasPermission('mes:pro-bag-code:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportBusinessQr(@RequestParam(value = "uuid", required = false) String uuid,
+ @RequestParam(value = "batchId", required = false) Long batchId,
+ HttpServletResponse response) throws IOException {
+ List<MesProBagCodeDO> list;
+ if (StrUtil.isNotBlank(uuid)) list = bagCodeService.getPrintableBagCodeListByUuid(uuid);
+ else if (batchId != null) list = bagCodeService.getPrintableBagCodeListByBatchId(batchId);
+ else throw exception(PRO_QR_EXPORT_PARAMS_INVALID);
+ if (CollUtil.isEmpty(list)) throw exception(PRO_BAG_CODE_NOT_EXISTS);
+ if (list.size() > QrCodeImageUtils.MAX_QR_EXPORT) throw exception(PRO_QR_EXPORT_TOO_MANY);
+ List<QrLabelInfo> labels = list.stream().map(MesProQrLabelBuilder::buildBagBusinessCodeLabel).toList();
+ QrCodeImageUtils.writeZip(response, "琚嬬爜涓氬姟浜岀淮鐮�-" + (StrUtil.isNotBlank(uuid) ? uuid : batchId), labels);
+ }
+
private List<MesProBagCodeRespVO> buildBagCodeRespVOList(List<MesProBagCodeDO> list) {
if (CollUtil.isEmpty(list)) {
return Collections.emptyList();
--
Gitblit v1.9.3