From fe01e3b188e24a20b539f92e436d967aaf77ee1a Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期三, 10 六月 2026 12:00:16 +0800
Subject: [PATCH] 创建库存增加来源

---
 src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java |   85 ++++++++++++++++++++++++++++++++++++++----
 1 files changed, 76 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
index f12c260..d045be5 100644
--- a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
+++ b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
@@ -45,6 +45,7 @@
         stockUninventoryDto.setRecordType(String.valueOf(recordType));
         stockUninventoryDto.setQualitity(quantity);
         stockUninventoryDto.setProductModelId(productModelId);
+        stockUninventoryDto.setType(resolveUninventoryType(recordType));
         stockUninventoryService.addStockInRecordOnly(stockUninventoryDto);
     }
 
@@ -55,14 +56,39 @@
      * @param quantity
      * @param recordType
      * @param recordId
+     * @param batchNo
+     * @param source 搴撳瓨鏉ユ簮
      */
-    public void addUnStockWithBatchNo(Long productModelId, BigDecimal quantity, String recordType, Long recordId, String batchNo) {
+    public void addUnStockWithBatchNo(Long productModelId, BigDecimal quantity, String recordType, Long recordId, String batchNo, String source) {
         StockUninventoryDto stockUninventoryDto = new StockUninventoryDto();
         stockUninventoryDto.setRecordId(recordId);
         stockUninventoryDto.setRecordType(String.valueOf(recordType));
         stockUninventoryDto.setQualitity(quantity);
         stockUninventoryDto.setProductModelId(productModelId);
         stockUninventoryDto.setBatchNo(batchNo);
+        stockUninventoryDto.setType(resolveUninventoryType(recordType));
+        stockUninventoryDto.setSource(source);
+        stockUninventoryService.addStockInRecordOnly(stockUninventoryDto);
+    }
+
+    /**
+     * 搴熷搧鍏ュ簱甯︽壒娆″彿
+     *
+     * @param productModelId 浜у搧瑙勬牸ID
+     * @param quantity 鏁伴噺
+     * @param recordType 璁板綍绫诲瀷
+     * @param recordId 涓氬姟ID
+     * @param batchNo 鎵规鍙�
+     */
+    public void addWasteStockWithBatchNo(Long productModelId, BigDecimal quantity, String recordType, Long recordId, String batchNo, String source) {
+        StockUninventoryDto stockUninventoryDto = new StockUninventoryDto();
+        stockUninventoryDto.setRecordId(recordId);
+        stockUninventoryDto.setRecordType(String.valueOf(recordType));
+        stockUninventoryDto.setQualitity(quantity);
+        stockUninventoryDto.setProductModelId(productModelId);
+        stockUninventoryDto.setBatchNo(batchNo);
+        stockUninventoryDto.setType("waste");
+        stockUninventoryDto.setSource(source);
         stockUninventoryService.addStockInRecordOnly(stockUninventoryDto);
     }
 
@@ -80,6 +106,7 @@
         stockUninventoryDto.setRecordType(String.valueOf(recordType));
         stockUninventoryDto.setQualitity(quantity);
         stockUninventoryDto.setProductModelId(productModelId);
+        stockUninventoryDto.setType("unqualified");
         stockUninventoryService.subtractStockUninventory(stockUninventoryDto);
     }
 
@@ -115,7 +142,27 @@
      * @param recordId
      */
     public void addStockWithBatchNo(Long productModelId, BigDecimal quantity, String recordType, Long recordId, String batchNo) {
-        addStockWithBatchNo(productModelId, quantity, recordType, recordId, batchNo, null);
+        addStockWithBatchNo(productModelId, quantity, recordType, recordId, batchNo, (LocalDateTime) null);
+    }
+
+    /**
+     * 鍚堟牸鍏ュ簱甯︽壒娆″彿鍜屾潵婧�
+     * @param productModelId
+     * @param quantity
+     * @param recordType
+     * @param recordId
+     * @param batchNo
+     * @param source 搴撳瓨鏉ユ簮
+     */
+    public void addStockWithBatchNo(Long productModelId, BigDecimal quantity, String recordType, Long recordId, String batchNo, String source) {
+        StockInventoryDto stockInventoryDto = new StockInventoryDto();
+        stockInventoryDto.setRecordId(recordId);
+        stockInventoryDto.setRecordType(String.valueOf(recordType));
+        stockInventoryDto.setQualitity(quantity);
+        stockInventoryDto.setProductModelId(productModelId);
+        stockInventoryDto.setBatchNo(batchNo);
+        stockInventoryDto.setSource(source);
+        stockInventoryService.addStockInRecordOnly(stockInventoryDto);
     }
 
     /**
@@ -156,6 +203,9 @@
         stockInventoryDto.setIsContainsWater(isContainsWater);
         stockInventoryDto.setWaterContent(waterContent);
         stockInventoryDto.setTheoryStockInNum(theoryStockInNum);
+        if (theoryStockInNum != null && actualStockInNum != null) {
+            stockInventoryDto.setDifferenceNum(theoryStockInNum.subtract(actualStockInNum));
+        }
         stockInventoryService.addStockInRecordOnly(stockInventoryDto);
     }
 
@@ -208,16 +258,33 @@
 
     //鍒犻櫎鍑哄簱璁板綍
     public void deleteStockOutRecord(Long recordId, String recordType) {
-        StockOutRecord one = stockOutRecordService.getOne(new QueryWrapper<StockOutRecord>()
+        java.util.List<StockOutRecord> list = stockOutRecordService.list(new QueryWrapper<StockOutRecord>()
                 .lambda().eq(StockOutRecord::getRecordId, recordId)
-                .eq(StockOutRecord::getRecordType, recordType), false);
-        if (ObjectUtils.isNotEmpty(one)) {
-            if (ReviewStatusEnum.APPROVED.getCode().equals(one.getApprovalStatus())) {
-                stockOutRecordService.batchDelete(Collections.singletonList(one.getId()));
-            } else {
-                stockOutRecordService.removeById(one.getId());
+                .eq(StockOutRecord::getRecordType, recordType));
+        if (ObjectUtils.isNotEmpty(list)) {
+            java.util.List<Long> approvedIds = new java.util.ArrayList<>();
+            java.util.List<Long> pendingIds = new java.util.ArrayList<>();
+            for (StockOutRecord stockOutRecord : list) {
+                if (ReviewStatusEnum.APPROVED.getCode().equals(stockOutRecord.getApprovalStatus())) {
+                    approvedIds.add(stockOutRecord.getId());
+                } else {
+                    pendingIds.add(stockOutRecord.getId());
+                }
+            }
+            if (!approvedIds.isEmpty()) {
+                stockOutRecordService.batchDelete(approvedIds);
+            }
+            if (!pendingIds.isEmpty()) {
+                stockOutRecordService.removeByIds(pendingIds);
             }
         }
 
     }
+
+    private String resolveUninventoryType(String recordType) {
+        if (com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode().equals(recordType)) {
+            return "waste";
+        }
+        return "unqualified";
+    }
 }

--
Gitblit v1.9.3