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 |   87 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 87 insertions(+), 0 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 1772404..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,17 +1,32 @@
 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;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.Arrays;
+import java.util.List;
 
 @Service
 @AllArgsConstructor
@@ -21,9 +36,81 @@
     @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) {
 
         return processRouteMapper.pageProcessRouteDto(page, processRouteDto);
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Integer saveProcessRoute(ProcessRoute 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);
+        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