From 2329f548c36876a59a7808e8c96466e94e088350 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期三, 04 二月 2026 14:41:16 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New' into dev_New

---
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java |   35 ++++++++++++++++++++++++++++-------
 1 files changed, 28 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
index aa43ebc..25994cf 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -13,6 +13,7 @@
 import com.ruoyi.basic.pojo.ProductModel;
 import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum;
 import com.ruoyi.common.enums.StockUnQualifiedRecordTypeEnum;
+import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.procurementrecord.utils.StockUtils;
 import com.ruoyi.production.dto.ProductStructureDto;
@@ -254,6 +255,7 @@
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Boolean removeProductMain(Long id) {
         ProductionProductMain productionProductMain = productionProductMainMapper.selectById(id);
         //璇ユ姤宸ュ搴旂殑宸ヨ壓璺嚎璇︽儏
@@ -266,16 +268,35 @@
         );
         /*鏇存柊宸ュ崟鍜岀敓浜ц鍗�*/
         ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(productionProductMain.getWorkOrderId());
-        productWorkOrder.setCompleteQuantity(productWorkOrder.getCompleteQuantity().subtract(productionProductOutput.getQuantity()));
-        productWorkOrder.setActualEndTime(null);
-        productWorkOrderMapper.updateById(productWorkOrder);
+        if (productWorkOrder != null && productionProductOutput != null) {
+            BigDecimal outputQty = productionProductOutput.getQuantity() == null ? BigDecimal.ZERO : productionProductOutput.getQuantity();
+            BigDecimal scrapQty = productionProductOutput.getScrapQty() == null ? BigDecimal.ZERO : productionProductOutput.getScrapQty();
+            BigDecimal completeQty = productWorkOrder.getCompleteQuantity() == null ? BigDecimal.ZERO : productWorkOrder.getCompleteQuantity();
+
+            BigDecimal validQuantity = outputQty.subtract(scrapQty);
+
+            productWorkOrder.setCompleteQuantity(completeQty.subtract(validQuantity));
+            productWorkOrder.setActualEndTime(null);
+            productWorkOrderMapper.updateById(productWorkOrder);
+        } else {
+            throw new ServiceException("鎿嶄綔澶辫触锛氬伐鍗曚俊鎭垨浜у嚭璁板綍涓嶅瓨鍦�");
+        }
+
         //鍒ゆ柇鏄惁鏄渶鍚庝竴閬撳伐搴�
         List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId()));
-        if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) {
+        if (productProcessRouteItem.getDragSort() != null && productProcessRouteItems != null && productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) {
             ProductOrder productOrder = productOrderMapper.selectById(productWorkOrder.getProductOrderId());
-            productOrder.setCompleteQuantity(productOrder.getCompleteQuantity().subtract(productionProductOutput.getQuantity()));
-            productOrder.setEndTime(null);
-            productOrderMapper.updateById(productOrder);
+            if (productOrder != null) {
+                BigDecimal orderCompleteQty = productOrder.getCompleteQuantity() == null ? BigDecimal.ZERO : productOrder.getCompleteQuantity();
+                BigDecimal outputQty = productionProductOutput.getQuantity() != null
+                        ? productionProductOutput.getQuantity() : BigDecimal.ZERO;
+
+                productOrder.setCompleteQuantity(orderCompleteQty.subtract(outputQty));
+                productOrder.setEndTime(null);
+                productOrderMapper.updateById(productOrder);
+            } else {
+                throw new ServiceException("鍏宠仈鐨勭敓浜ц鍗曚笉瀛樺湪");
+            }
         }
         //鍒犻櫎璐ㄦ
         qualityInspectMapper.selectList(

--
Gitblit v1.9.3