From 3e28d83281050fb1f06b786a4a0c4839ba643a06 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期三, 15 四月 2026 16:23:46 +0800
Subject: [PATCH] fix:发货分批发货

---
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java |  153 ++++++++++++++++++++++++++------------------------
 1 files changed, 79 insertions(+), 74 deletions(-)

diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
index 90b74f7..b7fc043 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -8,8 +8,8 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.basic.mapper.ProductModelMapper;
 import com.ruoyi.basic.pojo.ProductModel;
-import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
 import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
 import com.ruoyi.framework.web.domain.R;
 import com.ruoyi.procurementrecord.utils.StockUtils;
 import com.ruoyi.production.dto.ProductStructureDto;
@@ -44,7 +44,10 @@
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
-import java.util.*;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -344,91 +347,93 @@
      */
     public void deleteProductionData(List<Long> productIds) {
         //鎵归噺鏌ヨproductOrder
-        List<ProductOrder> productOrders = productOrderMapper.selectList(
-                new LambdaQueryWrapper<ProductOrder>()
-                        .in(ProductOrder::getSaleLedgerProductId, productIds)
-        );
-        if (!org.springframework.util.CollectionUtils.isEmpty(productOrders)) {
-            List<Long> orderIds = productOrders.stream()
-                    .map(ProductOrder::getId)
-                    .collect(Collectors.toList());
-
-            // 鎵归噺鏌ヨprocessRouteItems
-            List<ProductProcessRouteItem> allRouteItems = productProcessRouteItemMapper.selectList(
-                    new LambdaQueryWrapper<ProductProcessRouteItem>()
-                            .in(ProductProcessRouteItem::getProductOrderId, orderIds)
+        if (productIds != null && !productIds.isEmpty()) {
+            List<ProductOrder> productOrders = productOrderMapper.selectList(
+                    new LambdaQueryWrapper<ProductOrder>()
+                            .in(ProductOrder::getSaleLedgerProductId, productIds)
             );
-
-            if (!com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(allRouteItems)) {
-                // 鑾峰彇瑕佸垹闄ょ殑宸ュ簭椤笽D
-                List<Long> routeItemIds = allRouteItems.stream()
-                        .map(ProductProcessRouteItem::getId)
+            if (!org.springframework.util.CollectionUtils.isEmpty(productOrders)) {
+                List<Long> orderIds = productOrders.stream()
+                        .map(ProductOrder::getId)
                         .collect(Collectors.toList());
 
-                // 鏌ヨ鍏宠仈鐨勫伐鍗旾D
-                List<ProductWorkOrder> workOrders = productWorkOrderMapper.selectList(
-                        new LambdaQueryWrapper<ProductWorkOrder>()
-                                .in(ProductWorkOrder::getProductProcessRouteItemId, routeItemIds)
+                // 鎵归噺鏌ヨprocessRouteItems
+                List<ProductProcessRouteItem> allRouteItems = productProcessRouteItemMapper.selectList(
+                        new LambdaQueryWrapper<ProductProcessRouteItem>()
+                                .in(ProductProcessRouteItem::getProductOrderId, orderIds)
                 );
-                if (!com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(workOrders)) {
-                    List<Long> workOrderIds = workOrders.stream()
-                            .map(ProductWorkOrder::getId)
+
+                if (!com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(allRouteItems)) {
+                    // 鑾峰彇瑕佸垹闄ょ殑宸ュ簭椤笽D
+                    List<Long> routeItemIds = allRouteItems.stream()
+                            .map(ProductProcessRouteItem::getId)
                             .collect(Collectors.toList());
 
-                    // 鏌ヨ鍏宠仈鐨勭敓浜т富琛↖D
-                    List<ProductionProductMain> productMains = productionProductMainMapper.selectList(
-                            new LambdaQueryWrapper<ProductionProductMain>()
-                                    .in(ProductionProductMain::getWorkOrderId, workOrderIds)
+                    // 鏌ヨ鍏宠仈鐨勫伐鍗旾D
+                    List<ProductWorkOrder> workOrders = productWorkOrderMapper.selectList(
+                            new LambdaQueryWrapper<ProductWorkOrder>()
+                                    .in(ProductWorkOrder::getProductProcessRouteItemId, routeItemIds)
                     );
-                    List<Long> productMainIds = productMains.stream()
-                            .map(ProductionProductMain::getId)
-                            .collect(Collectors.toList());
+                    if (!com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(workOrders)) {
+                        List<Long> workOrderIds = workOrders.stream()
+                                .map(ProductWorkOrder::getId)
+                                .collect(Collectors.toList());
 
-                    // 鍒犻櫎浜у嚭琛ㄣ�佹姇鍏ヨ〃鏁版嵁
-                    if (!com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(productMainIds)) {
-                        productionProductOutputMapper.deleteByProductMainIds(productMainIds);
-                        productionProductInputMapper.deleteByProductMainIds(productMainIds);
-                        List<QualityInspect> qualityInspects = qualityInspectMapper.selectList(
-                                new LambdaQueryWrapper<QualityInspect>()
-                                        .in(QualityInspect::getProductMainId, productMainIds)
+                        // 鏌ヨ鍏宠仈鐨勭敓浜т富琛↖D
+                        List<ProductionProductMain> productMains = productionProductMainMapper.selectList(
+                                new LambdaQueryWrapper<ProductionProductMain>()
+                                        .in(ProductionProductMain::getWorkOrderId, workOrderIds)
                         );
-                        //鍒犻櫎鍑哄簱璁板綍
-                        for (Long productMainId : productMainIds) {
-                            //鍒犻櫎鐢熶骇鍑哄簱璁板綍
-                            stockUtils.deleteStockOutRecord(productMainId, StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode());
-                            //鍒犻櫎鎶ュ簾鐨勫叆搴撹褰�
-                            stockUtils.deleteStockInRecord(productMainId, StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode());
-                        }
-                        qualityInspects.forEach(qualityInspect -> {
-                            //inspectState=1 宸叉彁浜� 涓嶈兘鍒犻櫎
-                            if (qualityInspect.getInspectState() == 1) {
-                                throw new RuntimeException("宸叉彁浜ょ殑妫�楠屽崟涓嶈兘鍒犻櫎");
+                        List<Long> productMainIds = productMains.stream()
+                                .map(ProductionProductMain::getId)
+                                .collect(Collectors.toList());
+
+                        // 鍒犻櫎浜у嚭琛ㄣ�佹姇鍏ヨ〃鏁版嵁
+                        if (!com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(productMainIds)) {
+                            productionProductOutputMapper.deleteByProductMainIds(productMainIds);
+                            productionProductInputMapper.deleteByProductMainIds(productMainIds);
+                            List<QualityInspect> qualityInspects = qualityInspectMapper.selectList(
+                                    new LambdaQueryWrapper<QualityInspect>()
+                                            .in(QualityInspect::getProductMainId, productMainIds)
+                            );
+                            //鍒犻櫎鍑哄簱璁板綍
+                            for (Long productMainId : productMainIds) {
+                                //鍒犻櫎鐢熶骇鍑哄簱璁板綍
+                                stockUtils.deleteStockOutRecord(productMainId, StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode());
+                                //鍒犻櫎鎶ュ簾鐨勫叆搴撹褰�
+                                stockUtils.deleteStockInRecord(productMainId, StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode());
                             }
-                        });
-                        qualityInspectMapper.deleteByProductMainIds(productMainIds);
-                        salesLedgerProductionAccountingMapper.delete(new LambdaQueryWrapper<SalesLedgerProductionAccounting>()
-                                .in(SalesLedgerProductionAccounting::getProductMainId, productMainIds));
+                            qualityInspects.forEach(qualityInspect -> {
+                                //inspectState=1 宸叉彁浜� 涓嶈兘鍒犻櫎
+                                if (qualityInspect.getInspectState() == 1) {
+                                    throw new RuntimeException("宸叉彁浜ょ殑妫�楠屽崟涓嶈兘鍒犻櫎");
+                                }
+                            });
+                            qualityInspectMapper.deleteByProductMainIds(productMainIds);
+                            salesLedgerProductionAccountingMapper.delete(new LambdaQueryWrapper<SalesLedgerProductionAccounting>()
+                                    .in(SalesLedgerProductionAccounting::getProductMainId, productMainIds));
+                        }
+
+                        // 鍒犻櫎鐢熶骇涓昏〃鏁版嵁
+                        productionProductMainMapper.deleteByWorkOrderIds(workOrderIds);
+
+                        // 鍒犻櫎宸ュ崟鏁版嵁
+                        productWorkOrderMapper.delete(new LambdaQueryWrapper<ProductWorkOrder>()
+                                .in(ProductWorkOrder::getProductProcessRouteItemId, routeItemIds));
                     }
-
-                    // 鍒犻櫎鐢熶骇涓昏〃鏁版嵁
-                    productionProductMainMapper.deleteByWorkOrderIds(workOrderIds);
-
-                    // 鍒犻櫎宸ュ崟鏁版嵁
-                    productWorkOrderMapper.delete(new LambdaQueryWrapper<ProductWorkOrder>()
-                            .in(ProductWorkOrder::getProductProcessRouteItemId, routeItemIds));
                 }
+                // 鎵归噺鍒犻櫎processRouteItem
+                productProcessRouteItemMapper.delete(new LambdaQueryWrapper<ProductProcessRouteItem>()
+                        .in(ProductProcessRouteItem::getProductOrderId, orderIds));
+
+                // 鎵归噺鍒犻櫎productProcessRoute
+                productProcessRouteMapper.delete(new LambdaQueryWrapper<ProductProcessRoute>()
+                        .in(ProductProcessRoute::getProductOrderId, orderIds));
+
+                // 鎵归噺鍒犻櫎productOrder
+                productOrderMapper.delete(new LambdaQueryWrapper<ProductOrder>()
+                        .in(ProductOrder::getSaleLedgerProductId, productIds));
             }
-            // 鎵归噺鍒犻櫎processRouteItem
-            productProcessRouteItemMapper.delete(new LambdaQueryWrapper<ProductProcessRouteItem>()
-                    .in(ProductProcessRouteItem::getProductOrderId, orderIds));
-
-            // 鎵归噺鍒犻櫎productProcessRoute
-            productProcessRouteMapper.delete(new LambdaQueryWrapper<ProductProcessRoute>()
-                    .in(ProductProcessRoute::getProductOrderId, orderIds));
-
-            // 鎵归噺鍒犻櫎productOrder
-            productOrderMapper.delete(new LambdaQueryWrapper<ProductOrder>()
-                    .in(ProductOrder::getSaleLedgerProductId, productIds));
         }
     }
 

--
Gitblit v1.9.3