From 8655501ffb8dbdaf2508e575933063e6731be714 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 28 八月 2026 17:14:40 +0800
Subject: [PATCH] refactor(mes): 重构MES生产批次和袋码管理功能

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/pallet/MesProPalletController.java |   43 ++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 40 insertions(+), 3 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/pallet/MesProPalletController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/pallet/MesProPalletController.java
index 0489480..9139d30 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/pallet/MesProPalletController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/pallet/MesProPalletController.java
@@ -10,7 +10,11 @@
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
 import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeRespVO;
 import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletBatchCreateReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletBindBatchReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletExportQrReqVO;
 import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletPageReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletPreGenerateReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletPreGenerateRespVO;
 import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletRespVO;
 import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletTraceRespVO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO;
@@ -69,10 +73,43 @@
     private AdminUserApi adminUserApi;
 
     @PostMapping("/batch-create")
-    @Operation(summary = "鎵归噺鐢熸垚鎵樼洏鐮�")
+    @Operation(summary = "鎵归噺鐢熸垚鎵樼洏鐮侊紙涓�娆″綍鍏ユ壒娆$敓鎴愭寮忔墭鐩樼爜锛�")
     @PreAuthorize("@ss.hasPermission('mes:pro-pallet:create')")
     public CommonResult<List<Long>> batchCreatePallet(@Valid @RequestBody MesProPalletBatchCreateReqVO createReqVO) {
         return success(palletService.batchCreatePallet(createReqVO));
+    }
+
+    @PostMapping("/pre-generate")
+    @Operation(summary = "棰勭敓鎴愭墭鐩樼爜浜岀淮鐮侊紙浠呯敓鎴愪复鏃舵墭鐩樼爜锛屼笉缁戝畾鐢熶骇鎵规锛�")
+    @PreAuthorize("@ss.hasPermission('mes:pro-pallet:create')")
+    public CommonResult<List<MesProPalletPreGenerateRespVO>> preGeneratePallet(
+            @Valid @RequestBody MesProPalletPreGenerateReqVO preGenerateReqVO) {
+        List<MesProPalletDO> list = palletService.preGeneratePallet(preGenerateReqVO);
+        return success(BeanUtils.toBean(list, MesProPalletPreGenerateRespVO.class));
+    }
+
+    @PutMapping("/bind-batch")
+    @Operation(summary = "鎵樼洏鐮佺粦瀹氱敓浜ф壒娆★紙鐢熸垚姝e紡鎵樼洏鐮侊級")
+    @PreAuthorize("@ss.hasPermission('mes:pro-pallet:update')")
+    public CommonResult<Boolean> bindBatch(@Valid @RequestBody MesProPalletBindBatchReqVO bindReqVO) {
+        palletService.bindBatch(bindReqVO);
+        return success(true);
+    }
+
+    @PostMapping("/export-qr-by-ids")
+    @Operation(summary = "鎸夋墭鐩樼爜缂栧彿鍒楄〃鎵归噺瀵煎嚭浜岀淮鐮佸浘鐗� ZIP锛堟敮鎸佹湭缁戝畾鎵规鐨勪复鏃舵墭鐩橈級")
+    @PreAuthorize("@ss.hasPermission('mes:pro-pallet:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportPalletQrByIds(@Valid @RequestBody MesProPalletExportQrReqVO exportReqVO,
+                                    HttpServletResponse response) throws IOException {
+        List<MesProPalletDO> list = palletService.getPalletListByIds(exportReqVO.getIds());
+        if (CollUtil.isEmpty(list)) {
+            throw exception(PRO_PALLET_NOT_EXISTS);
+        }
+        if (list.size() > QrCodeImageUtils.MAX_QR_EXPORT) {
+            throw exception(PRO_QR_EXPORT_TOO_MANY);
+        }
+        QrCodeImageUtils.writeZip(response, "鎵樼洏鐮佷簩缁寸爜", buildPalletQrLabels(list));
     }
 
     @DeleteMapping("/delete")
@@ -155,8 +192,8 @@
 
     private MesProPalletTraceRespVO buildPalletTraceRespVO(MesProPalletDO pallet) {
         MesProPalletTraceRespVO respVO = BeanUtils.toBean(pallet, MesProPalletTraceRespVO.class);
-        // 鎵规淇℃伅
-        MesProBatchDO batch = batchService.getBatch(pallet.getBatchId());
+        // 鎵规淇℃伅锛堜复鏃舵墭鐩樻湭缁戝畾鎵规鏃朵负绌烘壒娆★級
+        MesProBatchDO batch = pallet.getBatchId() == null ? null : batchService.getBatch(pallet.getBatchId());
         if (batch != null) {
             respVO.setBatchStatus(batch.getStatus())
                     .setProduceDate(batch.getProduceDate())

--
Gitblit v1.9.3