From b83811618d78d7a9832b325334b7a35cd6a3b64b Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期一, 08 六月 2026 13:21:01 +0800
Subject: [PATCH] 采购台账手动入库,保存差额;入库审核 重新计算含水量

---
 src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java |   24 ++++++++++++++++++++++++
 1 files changed, 24 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
index 2436940..e0aa340 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -36,6 +36,7 @@
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.List;
 
 @Service
@@ -231,6 +232,7 @@
             final BigDecimal finalStockInNum;
             if (item.getStockInNum() != null && item.getStockInNum().compareTo(BigDecimal.ZERO) > 0) {
                 finalStockInNum = item.getStockInNum();
+                adjustPurchaseInboundAuditFields(stockInRecord, finalStockInNum);
                 // 鏇存柊鍏ュ簱璁板綍鐨勫叆搴撴暟閲�
                 stockInRecord.setStockInNum(finalStockInNum);
             } else {
@@ -296,6 +298,28 @@
         return items.size();
     }
 
+    private void adjustPurchaseInboundAuditFields(StockInRecord stockInRecord, BigDecimal finalStockInNum) {
+        if (stockInRecord == null || finalStockInNum == null) {
+            return;
+        }
+        if (!StockInQualifiedRecordTypeEnum.PURCHASE_STOCK_IN.getCode().equals(stockInRecord.getRecordType())) {
+            return;
+        }
+        BigDecimal theoryStockInNum = stockInRecord.getTheoryStockInNum();
+        if (theoryStockInNum == null || theoryStockInNum.compareTo(BigDecimal.ZERO) <= 0) {
+            return;
+        }
+        if (finalStockInNum.compareTo(theoryStockInNum) > 0) {
+            throw new BaseException("閲囪喘鍏ュ簱瀹℃牳鏃讹紝瀹為檯鍏ュ簱鏁伴噺涓嶈兘澶т簬鐞嗚鍏ュ簱鏁伴噺");
+        }
+        if (Boolean.TRUE.equals(stockInRecord.getIsContainsWater())) {
+            BigDecimal waterContent = theoryStockInNum.subtract(finalStockInNum)
+                    .multiply(new BigDecimal("100"))
+                    .divide(theoryStockInNum, 4, RoundingMode.HALF_UP);
+            stockInRecord.setWaterContent(waterContent);
+        }
+    }
+
     private static @NonNull StockInventoryDto getStockInventoryDto(StockInRecord stockInRecord) {
         StockInventoryDto stockInventoryDto = new StockInventoryDto();
         stockInventoryDto.setProductModelId(stockInRecord.getProductModelId());

--
Gitblit v1.9.3