From 78286a5422d2180df5cd66a85570a7a3cd2f4d71 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期三, 18 三月 2026 10:36:21 +0800
Subject: [PATCH] fix: 新增工艺路线与子集去除绑定产品,改为工序与产品类型

---
 src/main/java/com/ruoyi/production/controller/ProcessRouteController.java        |   26 ++++++--
 src/main/java/com/ruoyi/production/dto/ProcessRouteDto.java                      |    4 
 src/main/resources/mapper/production/ProcessRouteMapper.xml                      |   15 ++--
 doc/宁夏-中盛建材.sql                                                                  |    5 +
 src/main/java/com/ruoyi/production/controller/ProcessRouteItemController.java    |    5 +
 src/main/java/com/ruoyi/production/dto/ProcessRouteItemDto.java                  |    4 +
 src/main/java/com/ruoyi/production/service/ProcessRouteService.java              |    4 +
 src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java     |   42 +++++++++++++-
 src/main/java/com/ruoyi/production/pojo/ProcessRoute.java                        |    3 +
 src/main/java/com/ruoyi/production/service/impl/ProcessRouteItemServiceImpl.java |   13 ----
 10 files changed, 85 insertions(+), 36 deletions(-)

diff --git "a/doc/\345\256\201\345\244\217-\344\270\255\347\233\233\345\273\272\346\235\220.sql" "b/doc/\345\256\201\345\244\217-\344\270\255\347\233\233\345\273\272\346\235\220.sql"
index 8516a9f..bebb0f6 100644
--- "a/doc/\345\256\201\345\244\217-\344\270\255\347\233\233\345\273\272\346\235\220.sql"
+++ "b/doc/\345\256\201\345\244\217-\344\270\255\347\233\233\345\273\272\346\235\220.sql"
@@ -272,4 +272,7 @@
 
 ALTER TABLE `product_bom`
     ADD COLUMN `dict_code` bigint NOT NULL COMMENT '鍏宠仈瀛楀吀鏁版嵁缂栫爜锛坰ys_dict_data.dict_code锛�';
-ALTER TABLE `product_bom` ADD INDEX `idx_dict_code` (`dict_code`);
\ No newline at end of file
+ALTER TABLE `product_bom` ADD INDEX `idx_dict_code` (`dict_code`);
+
+ALTER TABLE `product-inventory-management-zsjc`.`process_route`
+    ADD COLUMN `dict_code` bigint NOT NULL COMMENT '浜у搧绫诲瀷瀛楀吀缂栫爜' AFTER `status`;
diff --git a/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java b/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java
index 50ac4a8..5567696 100644
--- a/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java
@@ -2,8 +2,10 @@
 
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.framework.web.domain.R;
 import com.ruoyi.production.dto.ProcessRouteDto;
+import com.ruoyi.production.dto.ProductStructureDto;
 import com.ruoyi.production.pojo.ProcessRoute;
 import com.ruoyi.production.pojo.ProcessRouteItem;
 import com.ruoyi.production.service.ProcessRouteItemService;
@@ -14,34 +16,44 @@
 import org.springframework.web.bind.annotation.*;
 
 import java.util.Arrays;
+import java.util.List;
 
 @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) {
         return R.ok(processRouteService.saveProcessRoute(processRoute));
     }
+
     @ApiOperation("淇敼宸ヨ壓璺嚎")
-    @PutMapping ()
-    public R update(@RequestBody  ProcessRoute processRoute) {
+    @PutMapping("")
+    public R update(@RequestBody ProcessRoute 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)));
     }
+
+    @GetMapping("/getRouteBom/{id}")
+    @ApiOperation("鑾峰彇宸ヨ壓璺嚎缁戝畾鐨凚OM瀛愰泦")
+    public AjaxResult getRouteBom(@PathVariable Long id) {
+        List<ProductStructureDto> list = processRouteService.getRouteBom(id);
+        return AjaxResult.success(list);
+    }
 }
diff --git a/src/main/java/com/ruoyi/production/controller/ProcessRouteItemController.java b/src/main/java/com/ruoyi/production/controller/ProcessRouteItemController.java
index 5c631e7..117450f 100644
--- a/src/main/java/com/ruoyi/production/controller/ProcessRouteItemController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProcessRouteItemController.java
@@ -21,13 +21,13 @@
 import java.util.List;
 
 @RestController
-@RequestMapping("processRouteItem")
+@RequestMapping("/processRouteItem")
 @Api(tags = "宸ヨ壓璺嚎鏄庣粏")
 public class ProcessRouteItemController {
     @Autowired
     private ProcessRouteItemService processRouteItemService;
 
-    @GetMapping("list")
+    @GetMapping("/list")
     public R listProcessRouteItemDto(ProcessRouteItemDto processRouteItemDto) {
         return R.ok(processRouteItemService.listProcessRouteItemDto(processRouteItemDto));
     }
@@ -50,4 +50,5 @@
     public AjaxResult batchDelete(@PathVariable("id") Long id) {
         return AjaxResult.success(processRouteItemService.batchDelete(id));
     }
+
 }
diff --git a/src/main/java/com/ruoyi/production/dto/ProcessRouteDto.java b/src/main/java/com/ruoyi/production/dto/ProcessRouteDto.java
index 232a00c..1709396 100644
--- a/src/main/java/com/ruoyi/production/dto/ProcessRouteDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProcessRouteDto.java
@@ -11,8 +11,8 @@
 
     private String productName;
 
-    @ApiModelProperty("瑙勬牸")
-    private String model;
+    @ApiModelProperty("浜у搧绫诲瀷")
+    private String dictLabel;
 
     private String bomNo;
 }
diff --git a/src/main/java/com/ruoyi/production/dto/ProcessRouteItemDto.java b/src/main/java/com/ruoyi/production/dto/ProcessRouteItemDto.java
index cb477d1..5b03aa2 100644
--- a/src/main/java/com/ruoyi/production/dto/ProcessRouteItemDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProcessRouteItemDto.java
@@ -26,4 +26,8 @@
 
     @ApiModelProperty("宸ュ簭鍙傛暟涓暟")
     private Integer paramCount;
+
+    @ApiModelProperty("浜у搧绫诲瀷")
+    private String dictLabel;
+
 }
diff --git a/src/main/java/com/ruoyi/production/pojo/ProcessRoute.java b/src/main/java/com/ruoyi/production/pojo/ProcessRoute.java
index 700a33e..81ebd75 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProcessRoute.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProcessRoute.java
@@ -44,4 +44,7 @@
 
     @ApiModelProperty(value = "鐘舵�侊細0-鑽夌锛�1-宸叉壒鍑�")
     private Boolean status;
+
+    @ApiModelProperty(value = "浜у搧绫诲瀷瀛楀吀缂栫爜")
+    private Long dictCode;
 }
diff --git a/src/main/java/com/ruoyi/production/service/ProcessRouteService.java b/src/main/java/com/ruoyi/production/service/ProcessRouteService.java
index 6b408cf..8ec28d7 100644
--- a/src/main/java/com/ruoyi/production/service/ProcessRouteService.java
+++ b/src/main/java/com/ruoyi/production/service/ProcessRouteService.java
@@ -4,8 +4,8 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.production.dto.ProcessRouteDto;
+import com.ruoyi.production.dto.ProductStructureDto;
 import com.ruoyi.production.pojo.ProcessRoute;
-import io.swagger.models.auth.In;
 
 import java.util.List;
 
@@ -16,4 +16,6 @@
     Integer saveProcessRoute(ProcessRoute processRoute);
 
     int batchDelete(List<Long> ids);
+
+    List<ProductStructureDto> getRouteBom(Long id);
 }
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProcessRouteItemServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProcessRouteItemServiceImpl.java
index cc9e2fe..30c2680 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProcessRouteItemServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProcessRouteItemServiceImpl.java
@@ -11,7 +11,6 @@
 import com.ruoyi.production.pojo.ProcessRouteItem;
 import com.ruoyi.production.pojo.ProcessRouteItemParam;
 import com.ruoyi.production.service.ProcessRouteItemService;
-import com.ruoyi.production.service.ProductMaterialSkuService;
 import lombok.AllArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -29,9 +28,6 @@
 
     @Autowired
     private ProcessRouteItemParamMapper processRouteItemParamMapper;
-
-    @Autowired
-    private ProductMaterialSkuService productMaterialSkuService;
 
     @Override
     public List<ProcessRouteItemDto> listProcessRouteItemDto(ProcessRouteItemDto processRouteItemDto) {
@@ -107,14 +103,7 @@
         if (processRouteItem == null) {
             throw new ServiceException("鏁版嵁涓嶈兘涓虹┖");
         }
-        if (processRouteItem.getProductModelId() != null) {
-            Object product = productMaterialSkuService.getById(processRouteItem.getProductModelId());
-            if (product == null) {
-                throw new ServiceException("鎿嶄綔澶辫触锛氬叧鑱旂殑浜у搧(ID:" + processRouteItem.getProductModelId() + ")涓嶅瓨鍦�");
-            }
-        } else {
-            throw new ServiceException("浜у搧ID涓嶈兘涓虹┖");
-        }
+
         Long tenantId = SecurityUtils.getLoginUser().getTenantId();
         processRouteItem.setTenantId(tenantId);
 
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
index 78e15d1..411f2c8 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
@@ -4,16 +4,19 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.production.dto.ProcessRouteDto;
+import com.ruoyi.production.dto.ProductStructureDto;
 import com.ruoyi.production.mapper.ProcessRouteItemMapper;
 import com.ruoyi.production.mapper.ProcessRouteMapper;
 import com.ruoyi.production.mapper.ProductOrderMapper;
-import com.ruoyi.production.mapper.ProductProcessRouteMapper;
 import com.ruoyi.production.pojo.ProcessRoute;
 import com.ruoyi.production.pojo.ProcessRouteItem;
 import com.ruoyi.production.pojo.ProductOrder;
-import com.ruoyi.production.pojo.ProductProcessRoute;
 import com.ruoyi.production.service.ProcessRouteService;
+import com.ruoyi.production.service.ProductStructureService;
+import com.ruoyi.project.system.domain.SysDictData;
+import com.ruoyi.project.system.mapper.SysDictDataMapper;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,7 +25,7 @@
 
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
-import java.util.Arrays;
+import java.util.ArrayList;
 import java.util.List;
 
 @Service
@@ -39,6 +42,13 @@
     @Autowired
     private ProductOrderMapper productOrderMapper;
 
+    @Autowired
+    private ProductStructureService productStructureService;
+
+    @Autowired
+    private SysDictDataMapper sysDictDataMapper;
+
+
     @Override
     public IPage<ProcessRouteDto> pageProcessRouteDto(Page<ProcessRouteDto> page, ProcessRouteDto processRouteDto) {
 
@@ -48,6 +58,14 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Integer saveProcessRoute(ProcessRoute processRoute) {
+        if (processRoute == null || processRoute.getDictCode() == null) {
+            throw new ServiceException("鏂板宸ヨ壓璺嚎澶辫触,浜у搧绫诲瀷涓嶈兘涓虹┖");
+        }
+        SysDictData sysDictData = sysDictDataMapper.selectDictDataById(processRoute.getDictCode());
+        if (sysDictData == null) {
+            throw new ServiceException("鏂板宸ヨ壓璺嚎澶辫触,浜у搧绫诲瀷涓嶅瓨鍦�");
+        }
+
         save(processRoute);
         if (processRoute.getProcessRouteCode() == null || processRoute.getProcessRouteCode().trim().isEmpty()) {
             String dateStr = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
@@ -70,4 +88,22 @@
         processRouteItemMapper.delete(Wrappers.<ProcessRouteItem>lambdaQuery().in(ProcessRouteItem::getRouteId, ids));
         return processRouteMapper.deleteBatchIds(ids);
     }
+
+    @Override
+    public List<ProductStructureDto> getRouteBom(Long id) {
+        if (id == null) {
+            return new ArrayList<>(0);
+        }
+
+        ProcessRoute processRoute = getById(id);
+        if (processRoute == null) {
+            throw new ServiceException("宸ヨ壓璺嚎涓嶅瓨鍦�");
+        }
+
+        List<ProductStructureDto> list = productStructureService.listByBomId(processRoute.getBomId());
+        if (list == null) {
+            list = new ArrayList<>(0);
+        }
+        return list;
+    }
 }
diff --git a/src/main/resources/mapper/production/ProcessRouteMapper.xml b/src/main/resources/mapper/production/ProcessRouteMapper.xml
index 76f2a97..48d0708 100644
--- a/src/main/resources/mapper/production/ProcessRouteMapper.xml
+++ b/src/main/resources/mapper/production/ProcessRouteMapper.xml
@@ -17,16 +17,15 @@
     <select id="pageProcessRouteDto" resultType="com.ruoyi.production.dto.ProcessRouteDto">
         select
         ps.*,
-        pm.product_name, pms.product_id, pms.model, pb.bom_no
+        pb.bom_no,
+        sdd.dict_label AS dictLabel
         from process_route ps
         left join product_bom pb on ps.bom_id = pb.id
-        left join product_material_sku pms on ps.product_model_id = pms.id
-        left join product_material pm on pms.product_id = pm.id
-        <where>
-            <if test="c.model != null and c.model != ''">
-                and pms.model like concat('%', #{c.model}, '%')
-            </if>
-        </where>
+        left join sys_dict_data sdd on sdd.dict_code = ps.dict_code
+        where 1= 1
+        <if test="c.dictCode != null">
+            and ps.dict_code = #{c.dictCode}
+        </if>
         order by ps.id
     </select>
 

--
Gitblit v1.9.3