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/stock/enums/StockInventorySourceEnum.java                       |    1 
 src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java |   14 +++++-
 src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java         |    4 +
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java   |    4 +
 src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java             |    1 
 src/main/resources/mapper/stock/StockInventoryMapper.xml                                |    3 +
 src/main/resources/mapper/stock/StockUninventoryMapper.xml                              |    3 +
 src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java                         |   30 +++++++++++++-
 src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java                |    1 
 src/main/java/com/ruoyi/production/service/impl/ProductionOperationTaskServiceImpl.java |    1 
 10 files changed, 54 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java
index 42519d0..169a8a0 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java
@@ -23,12 +23,16 @@
 import com.ruoyi.sales.mapper.SalesLedgerMapper;
 import com.ruoyi.sales.pojo.ShippingInfo;
 import com.ruoyi.sales.service.ShippingInfoService;
+import com.ruoyi.stock.enums.StockInventorySourceEnum;
+import com.ruoyi.stock.pojo.StockInRecord;
+import com.ruoyi.stock.service.StockInRecordService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.ObjectUtils;
+import org.springframework.util.StringUtils;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -49,6 +53,7 @@
     private final SalesLedgerMapper salesLedgerMapper;
     private final SalesRefundAmountOrderService salesRefundAmountOrderService;
     private final StockUtils stockUtils;
+    private final StockInRecordService stockInRecordService;
 
     @Override
     public IPage<ReturnManagementDto> listPage(Page page, ReturnManagementDto returnManagement) {
@@ -122,7 +127,8 @@
                         returnSaleProduct.getNum(),
                         StockInQualifiedRecordTypeEnum.RETURN_WASTE_IN.getCode(),
                         returnSaleProduct.getId(),
-                        returnSaleProduct.getBatchNo()
+                        returnSaleProduct.getBatchNo(),
+                        StockInventorySourceEnum.RETURN_GENERATED.getCode()
                 );
             } else if (hasQualityIssue) {
                 // 鍚堟牸鍙戣揣涓旀湁璐ㄩ噺闂锛屽洖涓嶅悎鏍煎簱銆�
@@ -131,7 +137,8 @@
                         returnSaleProduct.getNum(),
                         StockInQualifiedRecordTypeEnum.RETURN_UNSTOCK_IN.getCode(),
                         returnSaleProduct.getId(),
-                        returnSaleProduct.getBatchNo()
+                        returnSaleProduct.getBatchNo(),
+                        StockInventorySourceEnum.RETURN_GENERATED.getCode()
                 );
             } else {
                 // 鍚堟牸鍙戣揣涓旀棤璐ㄩ噺闂锛屽洖鍚堟牸搴撱��
@@ -140,7 +147,8 @@
                         returnSaleProduct.getNum(),
                         StockInQualifiedRecordTypeEnum.RETURN_HE_IN.getCode(),
                         returnSaleProduct.getId(),
-                        returnSaleProduct.getBatchNo()
+                        returnSaleProduct.getBatchNo(),
+                        StockInventorySourceEnum.RETURN_GENERATED.getCode()
                 );
             }
         }
diff --git a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
index e367385..d045be5 100644
--- a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
+++ b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
@@ -56,8 +56,10 @@
      * @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));
@@ -65,6 +67,7 @@
         stockUninventoryDto.setProductModelId(productModelId);
         stockUninventoryDto.setBatchNo(batchNo);
         stockUninventoryDto.setType(resolveUninventoryType(recordType));
+        stockUninventoryDto.setSource(source);
         stockUninventoryService.addStockInRecordOnly(stockUninventoryDto);
     }
 
@@ -77,7 +80,7 @@
      * @param recordId 涓氬姟ID
      * @param batchNo 鎵规鍙�
      */
-    public void addWasteStockWithBatchNo(Long productModelId, BigDecimal quantity, String recordType, Long recordId, String 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));
@@ -85,6 +88,7 @@
         stockUninventoryDto.setProductModelId(productModelId);
         stockUninventoryDto.setBatchNo(batchNo);
         stockUninventoryDto.setType("waste");
+        stockUninventoryDto.setSource(source);
         stockUninventoryService.addStockInRecordOnly(stockUninventoryDto);
     }
 
@@ -138,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);
     }
 
     /**
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionOperationTaskServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionOperationTaskServiceImpl.java
index bd6f2df..58754d1 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionOperationTaskServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionOperationTaskServiceImpl.java
@@ -398,6 +398,7 @@
                 .selectBatchIds(new ArrayList<>(operationIds))
                 .stream()
                 .filter(Objects::nonNull)
+                .filter(op -> op.getType() != null)  // 杩囨护 type 涓� null 鐨勮褰�
                 .collect(Collectors.toMap(
                         ProductionOrderRoutingOperation::getId,
                         ProductionOrderRoutingOperation::getType,
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
index c52892a..f31ba26 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -26,6 +26,7 @@
 import com.ruoyi.project.system.mapper.SysUserMapper;
 import com.ruoyi.quality.mapper.*;
 import com.ruoyi.quality.pojo.*;
+import com.ruoyi.stock.enums.StockInventorySourceEnum;
 import com.ruoyi.stock.pojo.StockInRecord;
 import com.ruoyi.stock.service.StockInRecordService;
 import com.ruoyi.stock.dto.StockInventoryDto;
@@ -412,7 +413,8 @@
                     scrapQty,
                     StockInQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(),
                     productionProductMain.getId(),
-                    qualifiedBatchNo);
+                    qualifiedBatchNo,
+                    StockInventorySourceEnum.PROD_GENERATED.getCode());
         }
         return true;
     }
diff --git a/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java b/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
index b3d93b8..d715e1f 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
@@ -23,6 +23,7 @@
 import com.ruoyi.quality.mapper.QualityUnqualifiedMapper;
 import com.ruoyi.quality.pojo.QualityInspect;
 import com.ruoyi.quality.pojo.QualityUnqualified;
+import com.ruoyi.stock.enums.StockInventorySourceEnum;
 import com.ruoyi.stock.pojo.StockInRecord;
 import com.ruoyi.stock.service.StockInRecordService;
 import com.ruoyi.quality.service.IQualityInspectService;
@@ -87,7 +88,8 @@
                     break;
                 case "鎶ュ簾":
                     stockUtils.addUnStockWithBatchNo(qualityInspect.getProductModelId(), unqualified.getQuantity(),
-                            StockInQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId(), batchNo);
+                            StockInQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId(), batchNo,
+                            StockInventorySourceEnum.PROD_GENERATED.getCode());
                     break;
                 case "璁╂鏀捐":
                     stockUtils.addStockWithBatchNo(qualityInspect.getProductModelId(), unqualified.getQuantity(),
diff --git a/src/main/java/com/ruoyi/stock/enums/StockInventorySourceEnum.java b/src/main/java/com/ruoyi/stock/enums/StockInventorySourceEnum.java
index bdfe97f..7bdc524 100644
--- a/src/main/java/com/ruoyi/stock/enums/StockInventorySourceEnum.java
+++ b/src/main/java/com/ruoyi/stock/enums/StockInventorySourceEnum.java
@@ -21,6 +21,7 @@
     PROD_GENERATED("prodGenerated", "鐢熶骇浜х敓"),
     TRANS_GENERATED("transGenerated", "杩愯緭浜х敓"),
     CUTTING_GENERATED("cuttingGenerated", "瑁佸壀浜х敓"),
+    RETURN_GENERATED("returnGenerated", "閿�鍞��璐т骇鐢�"),
     CUSTOM("custom", "鑷畾涔�");
 
     @EnumValue
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 81e6ae9..b085676 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -290,6 +290,7 @@
                     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());
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
index 9648ee1..184ab5d 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
@@ -174,6 +174,7 @@
             stockInRecordDto.setType("2");
         }
         stockInRecordDto.setRemark(stockUninventoryDto.getRemark());
+        stockInRecordDto.setSource(stockUninventoryDto.getSource());
         stockInRecordService.add(stockInRecordDto);
         return 1;
     }
diff --git a/src/main/resources/mapper/stock/StockInventoryMapper.xml b/src/main/resources/mapper/stock/StockInventoryMapper.xml
index d92fecf..23bd168 100644
--- a/src/main/resources/mapper/stock/StockInventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -31,6 +31,9 @@
             <if test="ew.lockedQuantity != null and ew.lockedQuantity !=''">
                 locked_quantity = locked_quantity + #{ew.lockedQuantity},
             </if>
+            <if test="ew.source != null and ew.source != ''">
+                source = #{ew.source},
+            </if>
             update_time = now()
         </set>
         where product_model_id = #{ew.productModelId}
diff --git a/src/main/resources/mapper/stock/StockUninventoryMapper.xml b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
index 3427221..b484666 100644
--- a/src/main/resources/mapper/stock/StockUninventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
@@ -67,6 +67,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}

--
Gitblit v1.9.3