From ab4767af08870c339969311dda28b017d354140b Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期二, 09 六月 2026 16:55:28 +0800
Subject: [PATCH] 废品退货后,入废品库

---
 src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java |   82 +++++++++++++++++++++++++++++++++++++---
 1 files changed, 75 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
index 9b8735f..e367385 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);
     }
 
@@ -63,6 +64,27 @@
         stockUninventoryDto.setQualitity(quantity);
         stockUninventoryDto.setProductModelId(productModelId);
         stockUninventoryDto.setBatchNo(batchNo);
+        stockUninventoryDto.setType(resolveUninventoryType(recordType));
+        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) {
+        StockUninventoryDto stockUninventoryDto = new StockUninventoryDto();
+        stockUninventoryDto.setRecordId(recordId);
+        stockUninventoryDto.setRecordType(String.valueOf(recordType));
+        stockUninventoryDto.setQualitity(quantity);
+        stockUninventoryDto.setProductModelId(productModelId);
+        stockUninventoryDto.setBatchNo(batchNo);
+        stockUninventoryDto.setType("waste");
         stockUninventoryService.addStockInRecordOnly(stockUninventoryDto);
     }
 
@@ -80,6 +102,7 @@
         stockUninventoryDto.setRecordType(String.valueOf(recordType));
         stockUninventoryDto.setQualitity(quantity);
         stockUninventoryDto.setProductModelId(productModelId);
+        stockUninventoryDto.setType("unqualified");
         stockUninventoryService.subtractStockUninventory(stockUninventoryDto);
     }
 
@@ -135,6 +158,34 @@
     }
 
     /**
+     * 鍚堟牸鍏ュ簱甯︽壒娆″彿鍜屽惈姘撮噺淇℃伅
+     * @param productModelId 浜у搧瑙勬牸ID
+     * @param actualStockInNum 瀹為檯鍏ュ簱鏁伴噺
+     * @param recordType 璁板綍绫诲瀷
+     * @param recordId 璁板綍ID
+     * @param batchNo 鎵规鍙�
+     * @param isContainsWater 鏄惁鍚按
+     * @param waterContent 鍚按閲�
+     * @param theoryStockInNum 鐞嗚鍏ュ簱鏁伴噺
+     */
+    public void addStockWithBatchNo(Long productModelId, BigDecimal actualStockInNum, String recordType, Long recordId,
+                                    String batchNo, Boolean isContainsWater, BigDecimal waterContent, BigDecimal theoryStockInNum) {
+        StockInventoryDto stockInventoryDto = new StockInventoryDto();
+        stockInventoryDto.setRecordId(recordId);
+        stockInventoryDto.setRecordType(String.valueOf(recordType));
+        stockInventoryDto.setQualitity(actualStockInNum);
+        stockInventoryDto.setProductModelId(productModelId);
+        stockInventoryDto.setBatchNo(batchNo);
+        stockInventoryDto.setIsContainsWater(isContainsWater);
+        stockInventoryDto.setWaterContent(waterContent);
+        stockInventoryDto.setTheoryStockInNum(theoryStockInNum);
+        if (theoryStockInNum != null && actualStockInNum != null) {
+            stockInventoryDto.setDifferenceNum(theoryStockInNum.subtract(actualStockInNum));
+        }
+        stockInventoryService.addStockInRecordOnly(stockInventoryDto);
+    }
+
+    /**
      * 鍚堟牸鍑哄簱
      *
      * @param productModelId
@@ -183,16 +234,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