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

---
 src/main/java/com/ruoyi/production/controller/ProcessRouteController.java |   51 +++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 41 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java b/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java
index 50ac4a8..c80542a 100644
--- a/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java
@@ -1,47 +1,78 @@
 package com.ruoyi.production.controller;
 
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.framework.web.domain.R;
 import com.ruoyi.production.dto.ProcessRouteDto;
 import com.ruoyi.production.pojo.ProcessRoute;
-import com.ruoyi.production.pojo.ProcessRouteItem;
-import com.ruoyi.production.service.ProcessRouteItemService;
 import com.ruoyi.production.service.ProcessRouteService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
 
 @RestController
-@RequestMapping("processRoute")
+@RequestMapping("/processRoute")
 @Api(tags = "宸ヨ壓璺嚎")
 public class ProcessRouteController {
 
     @Autowired
     private ProcessRouteService processRouteService;
 
-    @GetMapping("page")
+    @GetMapping("/page")
     @ApiOperation("鍒嗛〉鏌ヨ")
-    public R page(Page<ProcessRouteDto>  page, ProcessRouteDto processRouteDto) {
+    public R page(Page<ProcessRouteDto> page, ProcessRouteDto processRouteDto) {
         return R.ok(processRouteService.pageProcessRouteDto(page, processRouteDto));
     }
 
     @ApiOperation("鏂板宸ヨ壓璺嚎")
-    @PostMapping ()
-    public R add(@RequestBody  ProcessRoute processRoute) {
+    @PostMapping
+    public R add(@RequestBody ProcessRoute processRoute) {
+        normalizeProductBinding(processRoute);
         return R.ok(processRouteService.saveProcessRoute(processRoute));
     }
+
     @ApiOperation("淇敼宸ヨ壓璺嚎")
-    @PutMapping ()
-    public R update(@RequestBody  ProcessRoute processRoute) {
+    @PutMapping
+    public R update(@RequestBody ProcessRoute processRoute) {
+        normalizeProductBinding(processRoute);
         return R.ok(processRouteService.updateById(processRoute));
     }
+
     @ApiOperation("鍒犻櫎宸ヨ壓璺嚎")
     @DeleteMapping("/{ids}")
     public R delete(@PathVariable("ids") Long[] ids) {
         return R.ok(processRouteService.batchDelete(Arrays.asList(ids)));
     }
+
+    private void normalizeProductBinding(ProcessRoute processRoute) {
+        if (processRoute == null) {
+            return;
+        }
+        String ids = null;
+        List<Long> idList = processRoute.getProductModelIdList();
+        if (idList != null && !idList.isEmpty()) {
+            ids = idList.stream()
+                    .filter(item -> item != null && item > 0)
+                    .distinct()
+                    .map(String::valueOf)
+                    .collect(Collectors.joining(","));
+        } else if (StringUtils.hasText(processRoute.getProductModelIds())) {
+            ids = Arrays.stream(processRoute.getProductModelIds().split(","))
+                    .map(String::trim)
+                    .filter(StringUtils::hasText)
+                    .distinct()
+                    .collect(Collectors.joining(","));
+        } else if (processRoute.getProductModelId() != null) {
+            ids = String.valueOf(processRoute.getProductModelId());
+        }
+        processRoute.setProductModelIds(ids);
+        if (StringUtils.hasText(ids)) {
+            processRoute.setProductModelId(Long.valueOf(ids.split(",")[0]));
+        }
+    }
 }

--
Gitblit v1.9.3