From a3f68029372d566db4b852e0d1df72b7773c30c2 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期一, 23 三月 2026 17:00:04 +0800
Subject: [PATCH] fix(production): 修正完成数量减少逻辑仅针对审核通过状态

---
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java |   22 ++++++++++++++--------
 1 files changed, 14 insertions(+), 8 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 36a02b7..a41e537 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -207,12 +207,7 @@
             }
             productOrderMapper.updateById(productOrder);
         }
-        //濡傛灉鎶ュ簾鏁伴噺>0,闇�瑕佽繘鍏ユ姤搴熺殑搴撳瓨
-        if (ObjectUtils.isNotEmpty(dto.getScrapQty())) {
-            if (dto.getScrapQty().compareTo(BigDecimal.ZERO) > 0) {
-                stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
-            }
-        }
+
         //nextAddProductMain(productionProductOutput) // 鐢变簬闇�瑕佸鏍革紝鎵�浠ラ渶瑕佹媶灏佷笅鏉�
         return true;
     }
@@ -366,6 +361,13 @@
                     .build();
             salesLedgerProductionAccountingMapper.insert(salesLedgerProductionAccounting);
         }
+
+        //濡傛灉鎶ュ簾鏁伴噺>0,闇�瑕佽繘鍏ユ姤搴熺殑搴撳瓨
+        if (ObjectUtils.isNotEmpty(productionProductOutput.getScrapQty())) {
+            if (productionProductOutput.getScrapQty().compareTo(BigDecimal.ZERO) > 0) {
+                stockUtils.addUnStock(productModel.getId(), productionProductOutput.getScrapQty(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
+            }
+        }
     }
 
     @Override
@@ -395,9 +397,13 @@
             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));
+
+            BigDecimal validQuantity = outputQty.subtract(scrapQty);
+            if(productionProductMain.getAuditStatus() != 2){
+                productWorkOrder.setCompleteQuantity(completeQty.subtract(validQuantity).max(BigDecimal.ZERO));
+            }
             productWorkOrder.setActualEndTime(null);
             productWorkOrderMapper.updateById(productWorkOrder);
         } else {

--
Gitblit v1.9.3