From c47c8647f514eaa8c6a7624185b55738e8625c2c Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 05 十一月 2026 13:37:31 +0800
Subject: [PATCH] feat(product-issue): 支持按任务工序校验和选择领料物料

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/MesProWorkOrderBomController.java |   20 +++++++++++++++++---
 1 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/MesProWorkOrderBomController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/MesProWorkOrderBomController.java
index edcb18a..53fbdb1 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/MesProWorkOrderBomController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/MesProWorkOrderBomController.java
@@ -18,6 +18,8 @@
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderBomDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderProcessDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskDO;
+import cn.iocoder.yudao.module.mes.service.pro.task.MesProTaskService;
 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstock.MesWmMaterialStockDO;
 import cn.iocoder.yudao.module.mes.dal.mysql.wm.materialstock.MesWmMaterialStockMapper;
 import cn.iocoder.yudao.module.erp.api.purchase.PurchaseOrderApi;
@@ -51,6 +53,9 @@
 @RequestMapping("/mes/pro/work-order-bom")
 @Validated
 public class MesProWorkOrderBomController {
+
+    @Resource
+    private MesProTaskService taskService;
 
     @Resource
     private MesProWorkOrderBomService workOrderBomService;
@@ -100,7 +105,6 @@
     @GetMapping("/get")
     @Operation(summary = "鑾峰緱宸ュ崟 BOM")
     @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('mes:pro-work-order:query')")
     public CommonResult<MesProWorkOrderBomRespVO> getWorkOrderBom(@RequestParam("id") Long id) {
         MesProWorkOrderBomDO workOrderBom = workOrderBomService.getWorkOrderBom(id);
         if (workOrderBom == null) {
@@ -111,16 +115,26 @@
 
     @GetMapping("/page")
     @Operation(summary = "鑾峰緱宸ュ崟 BOM 鍒嗛〉")
-    @PreAuthorize("@ss.hasPermission('mes:pro-work-order:query')")
     public CommonResult<PageResult<MesProWorkOrderBomRespVO>> getWorkOrderBomPage(@Valid MesProWorkOrderBomPageReqVO pageReqVO) {
         PageResult<MesProWorkOrderBomDO> pageResult = workOrderBomService.getWorkOrderBomPage(pageReqVO);
         return success(new PageResult<>(buildWorkOrderBomRespVOList(pageResult.getList()), pageResult.getTotal()));
     }
 
+    @GetMapping("/list-by-task-id")
+    @Operation(summary = "鑾峰緱鐢熶骇浠诲姟宸ュ簭鐨勬姇鍏ョ墿鏂�")
+    public CommonResult<List<MesProWorkOrderBomRespVO>> getWorkOrderBomListByTaskId(@RequestParam("taskId") Long taskId) {
+        MesProTaskDO task = taskService.validateTaskExists(taskId);
+        if (task.getWorkOrderId() == null || task.getProcessId() == null) {
+            return success(Collections.emptyList());
+        }
+        List<MesProWorkOrderBomDO> list = workOrderBomService.getWorkOrderBomListByWorkOrderId(task.getWorkOrderId())
+                .stream().filter(bom -> Objects.equals(bom.getProcessId(), task.getProcessId())).toList();
+        return success(buildWorkOrderBomRespVOList(list));
+    }
+
     @GetMapping("/item-list-by-work-order-id")
     @Operation(summary = "鑾峰緱宸ュ崟鐗╂枡闇�姹傚垪琛�")
     @Parameter(name = "workOrderId", description = "宸ュ崟缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('mes:pro-work-order:query')")
     public CommonResult<List<MesProWorkOrderItemRespVO>> getWorkOrderBomItemListByWorkOrderId(
             @RequestParam("workOrderId") Long workOrderId) {
         // 1. 鑾峰彇宸ュ崟

--
Gitblit v1.9.3