From efbf5d341fefb88446c434f02085abe76c83c6e9 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 27 八月 2026 11:19:48 +0800
Subject: [PATCH] fix:工艺路线绑定bom参数

---
 src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java |   77 +++++++++++++++++++++++++++++++++++++-
 1 files changed, 75 insertions(+), 2 deletions(-)

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 a5427d2..f4a7956 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
@@ -1,11 +1,21 @@
 package com.ruoyi.production.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+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.mapper.ProcessRouteItemMapper;
 import com.ruoyi.production.mapper.ProcessRouteMapper;
+import com.ruoyi.production.mapper.ProductOrderMapper;
+import com.ruoyi.production.mapper.ProductProcessRouteMapper;
+import com.ruoyi.production.mapper.ProductStructureMapper;
 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.pojo.ProductStructure;
 import com.ruoyi.production.service.ProcessRouteService;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -15,6 +25,8 @@
 
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
+import java.util.Arrays;
+import java.util.List;
 
 @Service
 @AllArgsConstructor
@@ -24,6 +36,15 @@
     @Autowired
     private ProcessRouteMapper processRouteMapper;
 
+    @Autowired
+    private ProcessRouteItemMapper processRouteItemMapper;
+
+    @Autowired
+    private ProductOrderMapper productOrderMapper;
+
+    @Autowired
+    private ProductStructureMapper productStructureMapper;
+
     @Override
     public IPage<ProcessRouteDto> pageProcessRouteDto(Page<ProcessRouteDto> page, ProcessRouteDto processRouteDto) {
 
@@ -31,13 +52,65 @@
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Integer saveProcessRoute(ProcessRoute processRoute) {
-        this.save(processRoute);
+        if (processRoute.getBomId() == null) {
+            throw new ServiceException("璇烽�夋嫨BOM");
+        }
+        if (!this.save(processRoute)) {
+            throw new ServiceException("宸ヨ壓璺嚎淇濆瓨澶辫触");
+        }
+
         String dateStr = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
         String idStr = String.format("%06d", processRoute.getId());
         String newProductCode = "GYLX" + dateStr + idStr;
         // 鏇存柊鏁版嵁搴撲腑鐨刾roductCode
         processRoute.setProcessRouteCode(newProductCode);
-        return processRouteMapper.updateById(processRoute);
+        if (processRouteMapper.updateById(processRoute) != 1) {
+            throw new ServiceException("宸ヨ壓璺嚎缂栧彿鐢熸垚澶辫触");
+        }
+
+        List<ProductStructure> structures = productStructureMapper.selectList(
+                Wrappers.<ProductStructure>lambdaQuery()
+                        .eq(ProductStructure::getBomId, processRoute.getBomId())
+                        .isNotNull(ProductStructure::getParentId)
+                        .orderByAsc(ProductStructure::getId));
+        if (structures.isEmpty()) {
+            throw new ServiceException("褰撳墠BOM娌℃湁鍙敓鎴愮殑瀛愰」");
+        }
+
+        int dragSort = 1;
+        for (ProductStructure structure : structures) {
+            if (structure.getProductModelId() == null) {
+                throw new ServiceException("BOM涓瓨鍦ㄦ湭缁戝畾浜у搧鐨勫瓙椤�");
+            }
+            if (structure.getProcessId() == null) {
+                throw new ServiceException("BOM涓瓨鍦ㄦ湭閰嶇疆宸ュ簭鐨勫瓙椤�");
+            }
+
+            ProcessRouteItem item = new ProcessRouteItem();
+            item.setRouteId(processRoute.getId());
+            item.setProductModelId(structure.getProductModelId());
+            item.setProcessId(structure.getProcessId());
+            item.setDragSort(dragSort++);
+            item.setIsQuality(false);
+            if (processRouteItemMapper.insert(item) != 1) {
+                throw new ServiceException("宸ヨ壓璺嚎鏄庣粏鐢熸垚澶辫触");
+            }
+        }
+
+        return 1;
+    }
+
+    @Override
+    public int batchDelete(List<Long> ids) {
+        //鍏堝垽鏂槸鍚﹀凡缁忓紩鐢ㄤ簡
+        List<ProductOrder> productOrders = productOrderMapper.selectList(Wrappers.<ProductOrder>lambdaQuery().in(ProductOrder::getRouteId, ids));
+        if (productOrders.size()>0){
+            throw new RuntimeException("璇ュ伐鑹鸿矾绾跨敓浜у凡寮曠敤锛屼笉鑳藉垹闄�");
+        }
+        //鍒犻櫎宸ヨ壓璺嚎璇︽儏
+        processRouteItemMapper.delete(Wrappers.<ProcessRouteItem>lambdaQuery().in(ProcessRouteItem::getRouteId, ids));
+        return processRouteMapper.deleteBatchIds(ids);
     }
 }

--
Gitblit v1.9.3