From 97f048ce14db07ee41ca05f9c7010dfe132150e4 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 03 十一月 2026 11:06:59 +0800
Subject: [PATCH] feat(mes): 补生产准备检查与仓储收发存汇总接口,附 CFWJ 演示数据种子脚本

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueLineController.java |   34 ++++++++++++++++++++++++++--------
 1 files changed, 26 insertions(+), 8 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueLineController.java
index 4547c0c..15d2191 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueLineController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueLineController.java
@@ -8,6 +8,7 @@
 import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.line.MesWmProductIssueBomItemRespVO;
 import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.line.MesWmProductIssueLinePageReqVO;
 import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.line.MesWmProductIssueLineRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.line.MesWmProductIssueLineReturnableRespVO;
 import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.line.MesWmProductIssueLineSaveReqVO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
@@ -86,7 +87,6 @@
     @GetMapping("/get")
     @Operation(summary = "鑾峰緱棰嗘枡鍑哄簱鍗曡")
     @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('mes:wm-product-issue:query')")
     public CommonResult<MesWmProductIssueLineRespVO> getProductIssueLine(@RequestParam("id") Long id) {
         MesWmProductIssueLineDO line = issueLineService.getProductIssueLine(id);
         if (line == null) {
@@ -97,7 +97,6 @@
 
     @GetMapping("/page")
     @Operation(summary = "鑾峰緱棰嗘枡鍑哄簱鍗曡鍒嗛〉")
-    @PreAuthorize("@ss.hasPermission('mes:wm-product-issue:query')")
     public CommonResult<PageResult<MesWmProductIssueLineRespVO>> getProductIssueLinePage(
             @Valid MesWmProductIssueLinePageReqVO pageReqVO) {
         PageResult<MesWmProductIssueLineDO> pageResult = issueLineService.getProductIssueLinePage(pageReqVO);
@@ -107,7 +106,6 @@
     @GetMapping("/list-by-issue")
     @Operation(summary = "鑾峰緱棰嗘枡鍑哄簱鍗曡鍒楄〃锛堟寜棰嗘枡鍗曠紪鍙凤級")
     @Parameter(name = "issueId", description = "棰嗘枡鍗曠紪鍙�", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('mes:wm-product-issue:query')")
     public CommonResult<List<MesWmProductIssueLineRespVO>> getProductIssueLineListByIssueId(
             @RequestParam("issueId") Long issueId) {
         List<MesWmProductIssueLineDO> list = issueLineService.getProductIssueLineListByIssueId(issueId);
@@ -118,17 +116,29 @@
     @Operation(summary = "鑾峰緱棰嗘枡鍑哄簱鍗曞彲棰嗙墿鏂欏垪琛�",
             description = "浠呰繑鍥炲綋鍓嶉鏂欏崟瀵瑰簲鐢熶骇宸ュ崟 BOM 涓殑鐗╂枡锛岀敤浜庢柊澧炶鐗╂枡閫夋嫨鍣ㄨ繃婊わ紝閬垮厤閫夋嫨 BOM 涔嬪鐨勭墿鏂�")
     @Parameter(name = "issueId", description = "棰嗘枡鍗曠紪鍙�", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('mes:wm-product-issue:query')")
     public CommonResult<List<MesWmProductIssueBomItemRespVO>> getBomItemList(@RequestParam("issueId") Long issueId) {
         // 1. 鏍¢獙棰嗘枡鍗曞瓨鍦紝鑾峰彇鍏宠仈宸ュ崟
         MesWmProductIssueDO issue = issueService.validateProductIssueExists(issueId);
         if (issue.getWorkOrderId() == null) {
             return success(Collections.emptyList());
         }
-        // 2. 鑾峰彇宸ュ崟 BOM 鐗╂枡锛堝悓涓�鐗╂枡璺ㄥ伐搴忓娆℃姇鏂欐椂锛岄渶姹傞噺鎸夌墿鏂欐眹鎬伙級
-        List<MesProWorkOrderBomDO> bomList = workOrderBomService.getWorkOrderBomListByWorkOrderId(issue.getWorkOrderId());
+        return success(buildBomItemList(issue.getWorkOrderId()));
+    }
+
+    @GetMapping("/bom-item-list-by-work-order")
+    @Operation(summary = "鑾峰緱鐢熶骇宸ュ崟 BOM 鐗╂枡鍒楄〃锛堟寜宸ュ崟缂栧彿锛�",
+            description = "鐢ㄤ簬琛ラ杈呮枡绛夊満鏅洿鎺ユ寜宸ュ崟鑾峰彇 BOM 鐗╂枡锛屾棤闇�鍏堟湁棰嗘枡鍗�")
+    @Parameter(name = "workOrderId", description = "鐢熶骇宸ュ崟缂栧彿", required = true, example = "1")
+    public CommonResult<List<MesWmProductIssueBomItemRespVO>> getBomItemListByWorkOrderId(
+            @RequestParam("workOrderId") Long workOrderId) {
+        return success(buildBomItemList(workOrderId));
+    }
+
+    private List<MesWmProductIssueBomItemRespVO> buildBomItemList(Long workOrderId) {
+        // 1. 鑾峰彇宸ュ崟 BOM 鐗╂枡锛堝悓涓�鐗╂枡璺ㄥ伐搴忓娆℃姇鏂欐椂锛岄渶姹傞噺鎸夌墿鏂欐眹鎬伙級
+        List<MesProWorkOrderBomDO> bomList = workOrderBomService.getWorkOrderBomListByWorkOrderId(workOrderId);
         if (CollUtil.isEmpty(bomList)) {
-            return success(Collections.emptyList());
+            return Collections.emptyList();
         }
         Map<Long, BigDecimal> requiredQtyMap = new LinkedHashMap<>();
         for (MesProWorkOrderBomDO bom : bomList) {
@@ -152,7 +162,15 @@
                     unit -> vo.setUnitMeasureName(unit.getName()));
             result.add(vo);
         });
-        return success(result);
+        return result;
+    }
+
+    @GetMapping("/returnable-list")
+    @Operation(summary = "鑾峰緱棰嗘枡鍑哄簱鍗曞彲閫�鏂欒鍒楄〃",
+            description = "杩斿洖鎸囧畾宸ュ崟涓嬪凡瀹屾垚棰嗘枡鍗曠殑鍙��鏂欒锛屽彲閫�鏁伴噺 = 宸查鏁伴噺 - 宸查��鏁伴噺")
+    @Parameter(name = "workOrderId", description = "鐢熶骇宸ュ崟ID", required = true, example = "1")
+    public CommonResult<List<MesWmProductIssueLineReturnableRespVO>> getReturnableList(@RequestParam("workOrderId") Long workOrderId) {
+        return success(issueLineService.getReturnableList(workOrderId));
     }
 
     // ==================== 鎷兼帴 VO ====================

--
Gitblit v1.9.3