From 174c4a75e9dac46cf42399646bf49283583a43f5 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期二, 09 六月 2026 14:38:01 +0800
Subject: [PATCH] 增加废品库存列表和导出接口,以及修改发货逻辑

---
 src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java |   25 ++++++++++++++++++++++---
 1 files changed, 22 insertions(+), 3 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 e0aa340..f86c0cb 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -43,6 +43,9 @@
 @AllArgsConstructor
 public class StockInRecordServiceImpl extends ServiceImpl<StockInRecordMapper, StockInRecord> implements StockInRecordService {
 
+    private static final String UNQUALIFIED_TYPE = "unqualified";
+    private static final String WASTE_TYPE = "waste";
+
     private StockInRecordMapper stockInRecordMapper;
     private StockInventoryMapper stockInventoryMapper;
     private StockUninventoryMapper stockUninventoryMapper;
@@ -102,8 +105,10 @@
                     stockInventoryMapper.updateSubtractStockInventory(stockInRecordDto);
                 }
             }else if (stockInRecord.getType().equals("1")) {
+                String uninventoryType = resolveUninventoryTypeByInRecordType(stockInRecord.getRecordType());
                 LambdaQueryWrapper<StockUninventory> eq = new LambdaQueryWrapper<StockUninventory>()
-                        .eq(StockUninventory::getProductModelId, stockInRecord.getProductModelId());
+                        .eq(StockUninventory::getProductModelId, stockInRecord.getProductModelId())
+                        .eq(StockUninventory::getType, uninventoryType);
                 if (StringUtils.isEmpty(stockInRecord.getBatchNo())) {
                     eq.isNull(StockUninventory::getBatchNo);
                 } else {
@@ -117,6 +122,7 @@
                     stockUninventoryDto.setProductModelId(stockUninventory.getProductModelId());
                     stockUninventoryDto.setBatchNo(stockUninventory.getBatchNo());
                     stockUninventoryDto.setQualitity(stockInRecord.getStockInNum());
+                    stockUninventoryDto.setType(uninventoryType);
                     stockUninventoryMapper.updateSubtractStockUnInventory(stockUninventoryDto);
                 }
             }
@@ -149,9 +155,12 @@
         return stockInventoryMapper.selectOne(eq);
     }
 
-    private StockUninventory getStockUninventory(Long productModelId, String batchNo) {
+    private StockUninventory getStockUninventory(Long productModelId, String batchNo, String uninventoryType) {
         LambdaQueryWrapper<StockUninventory> eq = new LambdaQueryWrapper<>();
         eq.eq(StockUninventory::getProductModelId, productModelId);
+        if (StringUtils.isNotEmpty(uninventoryType)) {
+            eq.eq(StockUninventory::getType, uninventoryType);
+        }
         if (StringUtils.isEmpty(batchNo)) {
             eq.isNull(StockUninventory::getBatchNo);
         } else {
@@ -271,7 +280,8 @@
                     }
                 } else if ("1".equals(stockInRecord.getType())) {
                     // 涓嶅悎鏍煎叆搴� -> 鍏堟煡搴撳瓨锛屽瓨鍦ㄥ垯鏇存柊锛屼笉瀛樺湪鍒欐柊澧�
-                    StockUninventory stockUninventory = getStockUninventory(stockInRecord.getProductModelId(), stockInRecord.getBatchNo());
+                    String uninventoryType = resolveUninventoryTypeByInRecordType(stockInRecord.getRecordType());
+                    StockUninventory stockUninventory = getStockUninventory(stockInRecord.getProductModelId(), stockInRecord.getBatchNo(), uninventoryType);
                     StockUninventoryDto stockUninventoryDto = new StockUninventoryDto();
                     stockUninventoryDto.setProductModelId(stockInRecord.getProductModelId());
                     stockUninventoryDto.setBatchNo(stockInRecord.getBatchNo());
@@ -279,11 +289,13 @@
                     stockUninventoryDto.setRemark(stockInRecord.getRemark());
                     stockUninventoryDto.setManufacturerId(stockInRecord.getManufacturerId());
                     stockUninventoryDto.setSource(stockInRecord.getSource());
+                    stockUninventoryDto.setType(uninventoryType);
                     if (stockUninventory == null) {
                         stockUninventoryMapper.insert(new StockUninventory() {{
                             setProductModelId(stockInRecord.getProductModelId());
                             setQualitity(finalStockInNum);
                             setBatchNo(stockInRecord.getBatchNo());
+                            setType(uninventoryType);
                             setRemark(stockInRecord.getRemark());
                             setManufacturerId(stockInRecord.getManufacturerId());
                             setSource(stockInRecord.getSource());
@@ -298,6 +310,13 @@
         return items.size();
     }
 
+    private String resolveUninventoryTypeByInRecordType(String recordType) {
+        if (StockInQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode().equals(recordType)) {
+            return WASTE_TYPE;
+        }
+        return UNQUALIFIED_TYPE;
+    }
+
     private void adjustPurchaseInboundAuditFields(StockInRecord stockInRecord, BigDecimal finalStockInNum) {
         if (stockInRecord == null || finalStockInNum == null) {
             return;

--
Gitblit v1.9.3