From 9c43ef7d1ce78d5a576c63eb635776646f7b6cc2 Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期五, 04 九月 2026 10:36:37 +0800
Subject: [PATCH] fix: 统一销售和采购相关页面金额、单价、数量、总价保留6位小数

---
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java |   27 +++++++++++++++++++++------
 1 files changed, 21 insertions(+), 6 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 19aa02f..dc327bb 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -35,6 +35,7 @@
 import java.math.RoundingMode;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.Arrays;
 import java.util.List;
@@ -170,7 +171,6 @@
         if (salesLedgerProduct.getId() == null) {
             salesLedgerProduct.setRegisterDate(LocalDateTime.now());
             result = salesLedgerProductMapper.insert(salesLedgerProduct);
-            addProductionData(salesLedgerProduct);
         } else {
             //鏌ヨ鍘熸湰鐨勪骇鍝佸瀷鍙穒d
             result = salesLedgerProductMapper.updateById(salesLedgerProduct);
@@ -214,6 +214,17 @@
      * 鏂板鐢熶骇鏁版嵁
      */
     public void addProductionData(SalesLedgerProduct salesLedgerProduct) {
+        addProductionDataInternal(salesLedgerProduct, null);
+    }
+
+    /**
+     * 瀹℃壒閫氳繃鍚庡垱寤虹敓浜т富璁″垝锛堝甫瀹℃壒鐘舵�侊級
+     */
+    public void addProductionDataForApproved(SalesLedgerProduct salesLedgerProduct, int approvalStatus) {
+        addProductionDataInternal(salesLedgerProduct, approvalStatus);
+    }
+
+    private void addProductionDataInternal(SalesLedgerProduct salesLedgerProduct, Integer approvalStatus) {
         //鍏堝垽鏂浜у搧鏄惁闇�瑕佺敓浜�
         if (!salesLedgerProduct.getIsProduction()) {
             return;
@@ -222,15 +233,19 @@
         ProductionPlan productionPlan = new ProductionPlan();
         productionPlan.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId());
         productionPlan.setSalesLedgerProductId(salesLedgerProduct.getId());
-        productionPlan.setMpsNo(generateNextPlanNo(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"))));
+        productionPlan.setMpsNo(generateNextPlanNo(salesLedger.getEntryDate().toInstant()
+                .atZone(ZoneId.systemDefault())
+                .toLocalDate().format(DateTimeFormatter.ofPattern("yyyyMMdd"))));
         productionPlan.setProductModelId(salesLedgerProduct.getProductModelId());
         productionPlan.setQtyRequired(salesLedgerProduct.getQuantity());
         productionPlan.setSource("閿�鍞�");
         productionPlan.setStatus(0);
-        productionPlan.setRequiredDate(salesLedger.getDeliveryDate());//闇�姹傛棩鏈�=浜よ揣鏃ユ湡
-        productionPlan.setPromisedDeliveryDate(salesLedger.getDeliveryDate());//鎵胯鏃ユ湡=浜よ揣鏃ユ湡
+        productionPlan.setRequiredDate(salesLedger.getDeliveryDate());
+        productionPlan.setPromisedDeliveryDate(salesLedger.getDeliveryDate());
+        if (approvalStatus != null) {
+            productionPlan.setApprovalStatus(approvalStatus);
+        }
         productionPlanMapper.insert(productionPlan);
-
     }
 
     /**
@@ -319,7 +334,7 @@
             BigDecimal remain = stockInventory.getQualitity()
                     .subtract(stockInventory.getLockedQuantity())
                     .subtract(required)
-                    .divide(BigDecimal.ONE, 2, RoundingMode.CEILING);
+                    .divide(BigDecimal.ONE, 6, RoundingMode.CEILING);
             if (remain.compareTo(BigDecimal.ZERO) < 0) {
                 count++;
                 stringBuffer.append(structure.getProductName())

--
Gitblit v1.9.3