From a383e7dbc619cdb468979d4863349c43550a9af2 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 16 四月 2026 11:33:13 +0800
Subject: [PATCH] feat(production): 扩展生产工艺路线支持多产品绑定及工单权限控制

---
 src/main/java/com/ruoyi/production/controller/ProductBomController.java |   24 +++++++++++++++++++++++-
 1 files changed, 23 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/ruoyi/production/controller/ProductBomController.java b/src/main/java/com/ruoyi/production/controller/ProductBomController.java
index b6c9bce..91a87ac 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductBomController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductBomController.java
@@ -3,9 +3,11 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.aspectj.lang.annotation.Log;
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.production.dto.BomImportDto;
 import com.ruoyi.production.dto.ProductBomDto;
 import com.ruoyi.production.pojo.ProcessRoute;
 import com.ruoyi.production.pojo.ProductBom;
@@ -19,6 +21,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -98,8 +101,18 @@
         return AjaxResult.success(productBoms);
     }
 
+    @PostMapping("/getByModelList")
+    @Log(title = "BOM-鏍规嵁閫夋嫨鐨勮鏍煎瀷鍙穒ds鏌ヨ瀛樺湪鐨刡om", businessType = BusinessType.OTHER)
+    @ApiOperation("BOM-鏍规嵁閫夋嫨鐨勮鏍煎瀷鍙穒d鏌ヨ瀛樺湪鐨刡om")
+    public AjaxResult getByModelList(@RequestBody List<Long> productModelId) {
+        if (CollectionUtils.isEmpty(productModelId)) return AjaxResult.error("璇烽�夋嫨瑕佹煡璇㈢殑瑙勬牸鍨嬪彿");
+        List<ProductBom> productBoms = productBomService.list(Wrappers.<ProductBom>lambdaQuery().in(ProductBom::getProductModelId, productModelId));
+        return AjaxResult.success(productBoms);
+    }
+
 
     @PostMapping("uploadBom")
+    @PreAuthorize("@ss.hasPermi('product:bom:import')")
     @Log(title = "鏍规嵁Excel瀵煎叆BOM", businessType = BusinessType.IMPORT)
     @ApiOperation("鏍规嵁Excel瀵煎叆BOM")
     public AjaxResult uploadBom(@RequestParam("file") MultipartFile file) {
@@ -107,9 +120,18 @@
     }
 
     @PostMapping("exportBom")
-    @Log(title = "瀵煎嚭BOM鏂囦欢", businessType = BusinessType.EXPORT)
+    @PreAuthorize("@ss.hasPermi('product:bom:export')")
     @ApiOperation("瀵煎嚭BOM鏂囦欢")
+    @Log(title = "瀵煎嚭BOM鏂囦欢", businessType = BusinessType.EXPORT)
     public void exportBom(HttpServletResponse response, @RequestParam Integer bomId) {
         productBomService.exportBom(response, bomId);
     }
+
+    @GetMapping("/downloadTemplate")
+    @Log(title = "涓嬭浇BOM瀵煎叆妯℃澘", businessType = BusinessType.EXPORT)
+    @ApiOperation("涓嬭浇BOM瀵煎叆妯℃澘")
+    public void importTemplate(HttpServletResponse response) {
+        ExcelUtil<BomImportDto> excelUtil = new ExcelUtil<>(BomImportDto.class);
+        excelUtil.importTemplateExcel(response, "BOM瀵煎叆妯℃澘");
+    }
 }

--
Gitblit v1.9.3