From cf3482e6a4d40713cc09d107f11092c8db2e245a Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期三, 27 五月 2026 17:18:40 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_天津_阳光彩印' into dev_天津_阳光彩印

---
 src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java |   81 ++++++++++++++++------------------------
 1 files changed, 32 insertions(+), 49 deletions(-)

diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java
index 6c87939..2e97872 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java
@@ -6,9 +6,13 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.framework.web.domain.R;
 import com.ruoyi.production.dto.ProductProcessRouteItemDto;
+import com.ruoyi.production.dto.ProductionProductMainDto;
 import com.ruoyi.production.mapper.*;
 import com.ruoyi.production.pojo.*;
 import com.ruoyi.production.service.ProductProcessRouteItemService;
+import com.ruoyi.production.service.ProductProcessService;
+import com.ruoyi.production.service.ProductWorkOrderService;
+import com.ruoyi.production.service.ProductionProductMainService;
 import com.ruoyi.quality.mapper.QualityInspectMapper;
 import com.ruoyi.quality.pojo.QualityInspect;
 import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
@@ -16,10 +20,12 @@
 import lombok.AllArgsConstructor;
 import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
@@ -33,16 +39,13 @@
 @AllArgsConstructor
 public class ProductProcessRouteItemServiceImpl extends ServiceImpl<ProductProcessRouteItemMapper, ProductProcessRouteItem> implements ProductProcessRouteItemService {
 
+    @Autowired
+    @Lazy
+    private ProductionProductMainService productionProductMainService;
 
     private ProductProcessRouteItemMapper productProcessRouteItemMapper;
 
     private ProductionProductMainMapper productionProductMainMapper;
-
-    private ProductionProductInputMapper productionProductInputMapper;
-
-    private ProductionProductOutputMapper productionProductOutputMapper;
-
-    private QualityInspectMapper qualityInspectMapper;
 
     private SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper;
 
@@ -50,9 +53,9 @@
 
     private ProductOrderMapper productOrderMapper;
 
-    private ProductProcessRouteMapper productProcessRouteMapper;
+    private final ProductWorkOrderService productWorkOrderService;
 
-    private SalesLedgerProductMapper salesLedgerProductMapper;
+    private final ProductProcessService productProcessService;
 
 
     @Override
@@ -73,6 +76,9 @@
             if (productWorkOrder == null) {
                 throw new RuntimeException("鍒犻櫎澶辫触锛氭湭鎵惧埌鍏宠仈鐨勭敓浜у伐鍗�");
             }
+            if (BigDecimal.ZERO.compareTo(productWorkOrder.getCompleteQuantity()) < 0) {
+                throw new RuntimeException("鍒犻櫎澶辫触锛氳宸ュ崟宸插紑濮嬬敓浜э紝璇峰厛鍒犻櫎鐢熶骇鎶ュ伐");
+            }
             Long workOrderId = productWorkOrder.getId();
             Long productOrderId = productWorkOrder.getProductOrderId();
             // 鏌ヨ鐢熶骇涓昏〃
@@ -83,27 +89,23 @@
             if (!productionProductMains.isEmpty()) {
                 // 鎵归噺鍒犻櫎瀛愯〃
                 for (ProductionProductMain main : productionProductMains) {
-                    Long mainId = main.getId();
-                    // 鍒犻櫎鎶曞叆
-                    productionProductInputMapper.delete(new LambdaQueryWrapper<ProductionProductInput>()
-                            .eq(ProductionProductInput::getProductMainId, mainId));
-                    // 鍒犻櫎浜у嚭
-                    productionProductOutputMapper.delete(new LambdaQueryWrapper<ProductionProductOutput>()
-                            .eq(ProductionProductOutput::getProductMainId, mainId));
-                    // 鍒犻櫎璐ㄦ
-                    qualityInspectMapper.delete(new LambdaQueryWrapper<QualityInspect>()
-                            .eq(QualityInspect::getProductMainId, mainId));
+                    productionProductMainService.removeProductMain(main.getId());
+//                    Long mainId = main.getId();
+//                    // 鍒犻櫎鎶曞叆
+//                    productionProductInputMapper.delete(new LambdaQueryWrapper<ProductionProductInput>()
+//                            .eq(ProductionProductInput::getProductMainId, mainId));
+//                    // 鍒犻櫎浜у嚭
+//                    productionProductOutputMapper.delete(new LambdaQueryWrapper<ProductionProductOutput>()
+//                            .eq(ProductionProductOutput::getProductMainId, mainId));
+//                    // 鍒犻櫎璐ㄦ
+//                    qualityInspectMapper.delete(new LambdaQueryWrapper<QualityInspect>()
+//                            .eq(QualityInspect::getProductMainId, mainId));
+                    salesLedgerProductionAccountingMapper.delete(new LambdaQueryWrapper<SalesLedgerProductionAccounting>()
+                            .eq(SalesLedgerProductionAccounting::getProductMainId, main.getId()));
                 }
             }
-            //  鍒犻櫎鎶ュ伐锛堢敓浜т富琛級
-            productionProductMainMapper.delete(new LambdaQueryWrapper<ProductionProductMain>()
-                    .eq(ProductionProductMain::getWorkOrderId, workOrderId));
             // 鏌ヨ璁㈠崟 + 鍒犻櫎鏍哥畻
-            ProductOrder productOrder = productOrderMapper.selectById(productOrderId);
-            if (productOrder != null && productOrder.getSalesLedgerId() != null) {
-                salesLedgerProductionAccountingMapper.delete(new LambdaQueryWrapper<SalesLedgerProductionAccounting>()
-                        .eq(SalesLedgerProductionAccounting::getSalesLedgerId, productOrder.getSalesLedgerId()));
-            }
+
             // 鍒犻櫎鍏宠仈宸ュ崟
             productWorkOrderMapper.delete(new LambdaQueryWrapper<ProductWorkOrder>()
                     .eq(ProductWorkOrder::getProductProcessRouteItemId, routeItemId));
@@ -134,35 +136,16 @@
     @Override
     public R addRouteItem(ProductProcessRouteItem productProcessRouteItem) {
         ProductOrder productOrder = productOrderMapper.selectById(productProcessRouteItem.getProductOrderId());
+        ProductProcess productProcess = productProcessService.getById(productProcessRouteItem.getProcessId());
         int insert = productProcessRouteItemMapper.insert(productProcessRouteItem);
-        // 鐢熸垚褰撳墠鏃ユ湡鐨勫墠缂�锛氬勾鏈堟棩
-        String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
+
         if (insert > 0) {
-            // 鏌ヨ浠婃棩宸插瓨鍦ㄧ殑鏈�澶у伐鍗曞彿
-            QueryWrapper<ProductWorkOrder> queryWrapper = new QueryWrapper<>();
-            queryWrapper.likeRight("work_order_no", datePrefix)
-                    .orderByDesc("work_order_no")
-                    .last("LIMIT 1");
-            ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectOne(queryWrapper);
-            int sequenceNumber = 1; // 榛樿搴忓彿
-            if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) {
-                String lastNo = lastWorkOrder.getWorkOrderNo().toString();
-                if (lastNo.startsWith(datePrefix)) {
-                    String seqStr = lastNo.substring(datePrefix.length());
-                    try {
-                        sequenceNumber = Integer.parseInt(seqStr) + 1;
-                    } catch (NumberFormatException e) {
-                        sequenceNumber = 1;
-                    }
-                }
-            }
-            // 鐢熸垚瀹屾暣鐨勫伐鍗曞彿
-            String workOrderNoStr = String.format("%s%03d", datePrefix, sequenceNumber);
+
             ProductWorkOrder productWorkOrder = new ProductWorkOrder();
             productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId());
             productWorkOrder.setProductOrderId(productProcessRouteItem.getProductOrderId());
             productWorkOrder.setPlanQuantity(productOrder.getQuantity());
-            productWorkOrder.setWorkOrderNo(workOrderNoStr);
+            productWorkOrder.setWorkOrderNo(productWorkOrderService.generateProductWorkOrder(productProcess.getName(),productOrder.getNpsNo()));
             productWorkOrder.setStatus(1);
             productWorkOrderMapper.insert(productWorkOrder);
         }

--
Gitblit v1.9.3