From 39e8f88af6d3c07c183cda4e7c1d1b1c850209f5 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 18 六月 2026 15:58:59 +0800
Subject: [PATCH] 生产报废、废品发货退货后、不合格处理报废的产品都要进到废品库

---
 src/main/java/com/ruoyi/stock/enums/StockInventorySourceEnum.java        |    1 +
 src/main/resources/mapper/stock/StockUninventoryMapper.xml               |    6 +++++-
 src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java          |    2 +-
 src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java |   25 ++++++++++++++++++++++++-
 4 files changed, 31 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
index d045be5..35dbd96 100644
--- a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
+++ b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
@@ -282,7 +282,7 @@
     }
 
     private String resolveUninventoryType(String recordType) {
-        if (com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode().equals(recordType)) {
+        if (com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode().equals(recordType) || com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode().equals(recordType)) {
             return "waste";
         }
         return "unqualified";
diff --git a/src/main/java/com/ruoyi/stock/enums/StockInventorySourceEnum.java b/src/main/java/com/ruoyi/stock/enums/StockInventorySourceEnum.java
index 7bdc524..b0eece3 100644
--- a/src/main/java/com/ruoyi/stock/enums/StockInventorySourceEnum.java
+++ b/src/main/java/com/ruoyi/stock/enums/StockInventorySourceEnum.java
@@ -19,6 +19,7 @@
     OUTSOURCED_RECEIPT("outsourcedReceipt", "澶栧崗鍏ュ簱"),
     REPAIR_RECEIPT("repairReceipt", "淇鍏ュ簱"),
     PROD_GENERATED("prodGenerated", "鐢熶骇浜х敓"),
+    DEFECTIVE_SCRAP("defectiveScrap", "涓嶅悎鏍煎鐞嗘姤搴熶骇鐢�"),
     TRANS_GENERATED("transGenerated", "杩愯緭浜х敓"),
     CUTTING_GENERATED("cuttingGenerated", "瑁佸壀浜х敓"),
     RETURN_GENERATED("returnGenerated", "閿�鍞��璐т骇鐢�"),
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 fd08560..6c7722e 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -13,6 +13,7 @@
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.stock.enums.StockInventorySourceEnum;
 
 import java.time.LocalDateTime;
 import com.ruoyi.stock.dto.StockInRecordDto;
@@ -240,6 +241,12 @@
                 throw new BaseException("鍙湁寰呭鎵圭姸鎬佺殑璁板綍鎵嶈兘瀹℃壒,鍏ュ簱鎵规:" + stockInRecord.getInboundBatches());
             }
 
+            // 鍏煎鍘嗗彶鏁版嵁鎴栦笂娓告紡浼犲満鏅紝瀹℃壒鏃惰ˉ榻愭潵婧愶紝閬垮厤搴熷搧搴撳瓨鍙拌处鏉ユ簮涓虹┖
+            String resolvedSource = resolveStockSource(stockInRecord);
+            if (StringUtils.isNotEmpty(resolvedSource)) {
+                stockInRecord.setSource(resolvedSource);
+            }
+
             // 鑾峰彇瀹℃壒鏃朵慨鏀圭殑鍏ュ簱鏁伴噺锛屽鏋滄病鏈変慨鏀瑰垯浣跨敤鍘熸暟閲�
             final BigDecimal finalStockInNum;
             if (item.getStockInNum() != null && item.getStockInNum().compareTo(BigDecimal.ZERO) > 0) {
@@ -293,7 +300,6 @@
                     stockUninventoryDto.setManufacturerId(stockInRecord.getManufacturerId());
                     stockUninventoryDto.setSource(stockInRecord.getSource());
                     stockUninventoryDto.setType(uninventoryType);
-                    stockUninventoryDto.setSource(stockInRecord.getSource());
                     if (stockUninventory == null) {
                         stockUninventoryMapper.insert(new StockUninventory() {{
                             setProductModelId(stockInRecord.getProductModelId());
@@ -354,6 +360,23 @@
         return stockInventoryDto;
     }
 
+    private String resolveStockSource(StockInRecord stockInRecord) {
+        if (stockInRecord == null || StringUtils.isNotEmpty(stockInRecord.getSource())) {
+            return stockInRecord == null ? null : stockInRecord.getSource();
+        }
+        if (StockInQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode().equals(stockInRecord.getRecordType())
+                || StockInQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode().equals(stockInRecord.getRecordType())) {
+            if (StockInQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode().equals(stockInRecord.getRecordType())) {
+                return StockInventorySourceEnum.DEFECTIVE_SCRAP.getCode();
+            }
+            return StockInventorySourceEnum.PROD_GENERATED.getCode();
+        }
+        if (StockInQualifiedRecordTypeEnum.RETURN_WASTE_IN.getCode().equals(stockInRecord.getRecordType())) {
+            return StockInventorySourceEnum.RETURN_GENERATED.getCode();
+        }
+        return stockInRecord.getSource();
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public int batchReAudit(List<Long> ids) {
diff --git a/src/main/resources/mapper/stock/StockUninventoryMapper.xml b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
index b484666..1d3f3e9 100644
--- a/src/main/resources/mapper/stock/StockUninventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
@@ -103,6 +103,9 @@
             <if test="ew.type != null and ew.type != ''">
                 type = #{ew.type},
             </if>
+            <if test="ew.source != null and ew.source != ''">
+                source = #{ew.source},
+            </if>
             update_time = now()
         </set>
         where product_model_id = #{ew.productModelId}
@@ -131,7 +134,8 @@
         (su.qualitity - COALESCE(su.locked_quantity, 0)) as un_locked_quantity,
         pm.model,
         pm.unit,
-        p.product_name
+        p.product_name,
+        su.source
         <include refid="BaseWasteFromClause" />
         <where>
             <if test="ew.type != null and ew.type != ''">

--
Gitblit v1.9.3