From e5bcaf0bb598235c5b3747af79fe4a271345997e Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期四, 05 二月 2026 10:22:23 +0800
Subject: [PATCH] fix: 生产订单完成数量出现负数

---
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 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 7a67d50..7935b08 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -288,11 +288,17 @@
             ProductOrder productOrder = productOrderMapper.selectById(productWorkOrder.getProductOrderId());
             if (productOrder != null) {
                 BigDecimal orderCompleteQty = productOrder.getCompleteQuantity() == null ? BigDecimal.ZERO : productOrder.getCompleteQuantity();
-                BigDecimal outputQty = productionProductOutput.getQuantity() != null
-                        ? productionProductOutput.getQuantity() : BigDecimal.ZERO;
+                BigDecimal totalQty = productionProductOutput.getQuantity() != null ? productionProductOutput.getQuantity() : BigDecimal.ZERO;
+                BigDecimal scrapQty = productionProductOutput.getScrapQty() != null ? productionProductOutput.getScrapQty() : BigDecimal.ZERO;
 
-                productOrder.setCompleteQuantity(orderCompleteQty.subtract(outputQty));
+                BigDecimal actualQualifiedQty = totalQty.subtract(scrapQty);
+
+                BigDecimal newCompleteQty = orderCompleteQty.subtract(actualQualifiedQty);
+
+                productOrder.setCompleteQuantity(newCompleteQty.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : newCompleteQty);
+
                 productOrder.setEndTime(null);
+
                 productOrderMapper.updateById(productOrder);
             } else {
                 throw new ServiceException("鍏宠仈鐨勭敓浜ц鍗曚笉瀛樺湪");

--
Gitblit v1.9.3