From 251be431ad12399fe4ebce599c353d05dcec7888 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 29 十月 2026 12:28:34 +0800
Subject: [PATCH] feat(mes): 支持追溯二维码解析功能
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/bagcode/MesProBagCodeController.java | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 53 insertions(+), 4 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 1cb2a19..28ba9bc 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
@@ -13,18 +13,23 @@
import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeBindReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeGenerateRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeGenerateReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeGenerateTaskRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeRawGenerateReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeReplaceReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeReplaceRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeTraceRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeUnboundTonBagPageReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.bagcode.MesProBagCodeDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.pro.bagcode.MesProBagCodeGenerateTaskDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.batch.MesProBatchDO;
+import cn.iocoder.yudao.module.mes.enums.pro.MesProBagCodeGenerateTaskStatusEnum;
import cn.iocoder.yudao.module.mes.framework.qrcode.QrCodeImageUtils;
import cn.iocoder.yudao.module.mes.framework.qrexport.MesProQrExportProperties;
import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
+import cn.iocoder.yudao.module.mes.service.pro.bagcode.MesProBagCodeGenerateTaskService;
import cn.iocoder.yudao.module.mes.service.pro.bagcode.MesProBagCodeService;
import cn.iocoder.yudao.module.mes.service.pro.batch.MesProBatchService;
import cn.iocoder.yudao.module.mes.service.pro.qrexport.MesProQrLabelAssembler;
@@ -65,6 +70,8 @@
@Resource
private MesProBagCodeService bagCodeService;
@Resource
+ private MesProBagCodeGenerateTaskService generateTaskService;
+ @Resource
private MesProBatchService batchService;
@Resource
private AdminUserApi adminUserApi;
@@ -88,6 +95,23 @@
public CommonResult<MesProBagCodeGenerateRespVO> generateRawBagCodes(
@Valid @RequestBody MesProBagCodeRawGenerateReqVO rawGenerateReqVO) {
return success(bagCodeService.generateRawBagCodes(rawGenerateReqVO));
+ }
+
+ @GetMapping("/generate-task/get")
+ @Operation(summary = "鑾峰緱琚嬬爜鐢熸垚浠诲姟锛堝ぇ鎵归噺鐢熸垚鐨勮繘搴﹁疆璇級")
+ @Parameter(name = "id", description = "浠诲姟缂栧彿", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('mes:pro-bag-code:query')")
+ public CommonResult<MesProBagCodeGenerateTaskRespVO> getGenerateTask(@RequestParam("id") Long id) {
+ return success(buildGenerateTaskRespVO(generateTaskService.getTask(id)));
+ }
+
+ @PostMapping("/generate-task/cancel")
+ @Operation(summary = "鍙栨秷琚嬬爜鐢熸垚浠诲姟锛堝仠姝㈢敓鎴愬苟娓呯悊鍗婃垚鍝侊級")
+ @Parameter(name = "id", description = "浠诲姟缂栧彿", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('mes:pro-bag-code:create')")
+ public CommonResult<Boolean> cancelGenerateTask(@RequestParam("id") Long id) {
+ generateTaskService.cancel(id);
+ return success(true);
}
@PostMapping("/replace")
@@ -164,11 +188,18 @@
return success(new PageResult<>(buildBagCodeRespVOList(pageResult.getList()), pageResult.getTotal()));
}
- @GetMapping("/unbound-ton-bags")
- @Operation(summary = "鑾峰緱鍙粦瀹氱敓浜ф壒娆$殑鍚ㄨ")
+ @GetMapping("/unbound-ton-bag-page")
+ @Operation(summary = "鍒嗛〉鑾峰緱鍙粦瀹氱敓浜ф壒娆$殑鍚ㄨ")
+ @Parameters({
+ @Parameter(name = "pageNo", description = "椤电爜锛屼粠 1 寮�濮�", example = "1"),
+ @Parameter(name = "pageSize", description = "姣忛〉鏉℃暟", example = "50"),
+ @Parameter(name = "keyword", description = "鍏抽敭瀛楋細琚嬬爜銆佸搧绉嶇紪鐮佹垨鍝佺鍚嶇О", example = "0286267849370923")
+ })
@PreAuthorize("@ss.hasAnyPermissions('mes:pro-batch:create', 'mes:pro-batch:update', 'mes:pro-bag-code:query')")
- public CommonResult<List<MesProBagCodeRespVO>> getUnboundTonBags() {
- return success(buildBagCodeRespVOList(bagCodeService.getUnboundTonBags()));
+ public CommonResult<PageResult<MesProBagCodeRespVO>> getUnboundTonBagPage(
+ @Valid MesProBagCodeUnboundTonBagPageReqVO reqVO) {
+ PageResult<MesProBagCodeDO> pageResult = bagCodeService.getUnboundTonBagPage(reqVO);
+ return success(new PageResult<>(buildBagCodeRespVOList(pageResult.getList()), pageResult.getTotal()));
}
@GetMapping("/list-by-uuid")
@@ -251,6 +282,24 @@
labelAssembler.buildBagBusinessLabels(list));
}
+ private MesProBagCodeGenerateTaskRespVO buildGenerateTaskRespVO(MesProBagCodeGenerateTaskDO task) {
+ MesProBagCodeGenerateTaskRespVO respVO = BeanUtils.toBean(task, MesProBagCodeGenerateTaskRespVO.class);
+ for (MesProBagCodeGenerateTaskStatusEnum value : MesProBagCodeGenerateTaskStatusEnum.values()) {
+ if (value.getStatus().equals(task.getStatus())) {
+ respVO.setStatusName(value.getName());
+ break;
+ }
+ }
+ Integer total = task.getTotalCount();
+ if (total == null || total <= 0) {
+ respVO.setProgress(0);
+ } else {
+ int finished = task.getFinishedCount() == null ? 0 : task.getFinishedCount();
+ respVO.setProgress((int) Math.min(100L, (long) finished * 100 / total));
+ }
+ return respVO;
+ }
+
private List<MesProBagCodeRespVO> buildBagCodeRespVOList(List<MesProBagCodeDO> list) {
if (CollUtil.isEmpty(list)) {
return Collections.emptyList();
--
Gitblit v1.9.3