From 901e3c96c76f168ddbeaa10562a4d2d6f4d3ba8c Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 25 五月 2026 15:07:09 +0800
Subject: [PATCH] refactor(approve): 重构审批业务状态同步逻辑

---
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java |   21 ++++++++++++++++++++-
 1 files changed, 20 insertions(+), 1 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 6a86537..6addf3c 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -168,6 +168,11 @@
         int result;
         Long salesLedgerId = salesLedgerProduct.getSalesLedgerId();
         salesLedgerProduct.setSingleQuantity(normalizeSingleQuantity(salesLedgerProduct.getSingleQuantity()));
+        salesLedgerProduct.setTotalQuantity(normalizeTotalQuantity(
+                salesLedgerProduct.getTotalQuantity(),
+                salesLedgerProduct.getQuantity(),
+                salesLedgerProduct.getSingleQuantity()
+        ));
         if (salesLedgerProduct.getId() == null) {
             salesLedgerProduct.setRegisterDate(LocalDateTime.now());
             result = salesLedgerProductMapper.insert(salesLedgerProduct);
@@ -225,7 +230,11 @@
         productionPlan.setSalesLedgerProductId(salesLedgerProduct.getId());
         productionPlan.setMpsNo(generateNextPlanNo(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"))));
         productionPlan.setProductModelId(salesLedgerProduct.getProductModelId());
-        productionPlan.setQtyRequired(salesLedgerProduct.getQuantity());
+        productionPlan.setQtyRequired(normalizeTotalQuantity(
+                salesLedgerProduct.getTotalQuantity(),
+                salesLedgerProduct.getQuantity(),
+                salesLedgerProduct.getSingleQuantity()
+        ));
         productionPlan.setSource("閿�鍞�");
         productionPlan.setStatus(0);
         productionPlan.setRequiredDate(salesLedger.getDeliveryDate());//闇�姹傛棩鏈�=浜よ揣鏃ユ湡
@@ -344,6 +353,16 @@
         return singleQuantity;
     }
 
+    private BigDecimal normalizeTotalQuantity(BigDecimal totalQuantity, BigDecimal quantity, BigDecimal singleQuantity) {
+        if (totalQuantity != null && totalQuantity.compareTo(BigDecimal.ZERO) > 0) {
+            return totalQuantity;
+        }
+        if (quantity == null || quantity.compareTo(BigDecimal.ZERO) <= 0) {
+            return BigDecimal.ZERO;
+        }
+        return quantity.multiply(normalizeSingleQuantity(singleQuantity));
+    }
+
     private String generateNextPlanNo(String datePrefix) {
         QueryWrapper<ProductionPlan> queryWrapper = new QueryWrapper<>();
         queryWrapper.likeRight("mps_no", "JH" + datePrefix);

--
Gitblit v1.9.3