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 | 37 ++++++++++++++++++++++++++++++++-----
1 files changed, 32 insertions(+), 5 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 8e6ca6e..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,11 +142,12 @@
}
@GetMapping("/get-by-code")
- @Operation(summary = "鎵爜杩芥函锛氭牴鎹鐮侊紙浜岀淮鐮佸唴瀹癸級鍙嶆煡鎵规銆佷骇绾裤�佽矗浠讳汉绛変俊鎭�")
- @Parameter(name = "code", description = "琚嬬爜锛堜簩缁寸爜鍐呭锛�", required = true, example = "PC20260818L01001-0001")
+ @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);
}
@@ -197,11 +198,12 @@
HttpServletResponse response) throws IOException {
List<MesProBagCodeDO> list;
String zipName;
+ // 鍙鍑哄彲鍗板埛鐨勮鐮侊細宸蹭綔搴熻鐮佺殑鏍囩涓嶅緱鍐嶅嵃鍒凤紙璐村埌浜у搧涓婁細琚壂鐮佹彁绀�"宸蹭綔搴燂紝璋ㄩ槻鍋囧啋"锛�
if (StrUtil.isNotEmpty(uuid)) {
- list = bagCodeService.getBagCodeListByUuid(uuid);
+ list = bagCodeService.getPrintableBagCodeListByUuid(uuid);
zipName = "琚嬬爜浜岀淮鐮�-" + uuid;
} else if (batchId != null) {
- list = bagCodeService.getBagCodeListByBatchId(batchId);
+ list = bagCodeService.getPrintableBagCodeListByBatchId(batchId);
zipName = "琚嬬爜浜岀淮鐮�-" + batchId;
} else {
throw exception(PRO_QR_EXPORT_PARAMS_INVALID);
@@ -217,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