From 76c84d95506998f546e6f3ebbf70414c0dd9da9d Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期五, 15 五月 2026 17:15:15 +0800
Subject: [PATCH] refactor(stock): 优化库存记录服务中的仓库信息处理逻辑

---
 src/main/java/com/ruoyi/stock/service/impl/StockInventoryCheckPlanServiceImpl.java |   29 +++++++++++++++++++++++++----
 1 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryCheckPlanServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryCheckPlanServiceImpl.java
index 6f5525b..77f9c44 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryCheckPlanServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryCheckPlanServiceImpl.java
@@ -17,10 +17,12 @@
 import com.ruoyi.stock.mapper.StockInventoryCheckItemMapper;
 import com.ruoyi.stock.mapper.StockInventoryCheckPlanMapper;
 import com.ruoyi.stock.mapper.StockInventoryCheckProductMapper;
+import com.ruoyi.stock.mapper.WarehouseInfoMapper;
 import com.ruoyi.stock.pojo.*;
 import com.ruoyi.stock.service.*;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.*;
@@ -47,6 +49,7 @@
     private final StockUtils stockUtils;
     private final StockInRecordService stockInRecordService;
     private final StockOutRecordService stockOutRecordService;
+    private final WarehouseInfoMapper warehouseInfoMapper;
 
     @Override
     public IPage<StockInventoryCheckPlanDto> listPage(Page page, StockInventoryCheckPlanDto stockInventoryCheckPlanDto) {
@@ -59,6 +62,7 @@
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public R start(Long id) {
         StockInventoryCheckPlan stockInventoryCheckPlan = this.getById(id);
         StockInventoryCheckPlanDto stockInventoryCheckPlanDto = new StockInventoryCheckPlanDto();
@@ -97,6 +101,7 @@
                 StockInventoryCheckItemDto stockInventoryCheckItemDto = new StockInventoryCheckItemDto();
                 stockInventoryCheckItemDto.setProductModelId(stockInventory.getProductModelId());
                 stockInventoryCheckItemDto.setBatchNo(stockInventory.getBatchNo());
+                stockInventoryCheckItemDto.setWarehouseInfoId(stockInventory.getWarehouseInfoId());
                 stockInventoryCheckItemDto.setSystemQuantity(stockInventory.getQualitity());
                 stockInventoryCheckItemDto.setModel(stockInventory.getModel());
                 stockInventoryCheckItemDto.setUnit(stockInventory.getUnit());
@@ -131,14 +136,14 @@
 
             if (item.getDifferenceQuantity().compareTo(BigDecimal.ZERO) > 0) {
                 stockInventoryDto.setRecordType(StockInQualifiedRecordTypeEnum.INVENTORY_CHECK_STOCK_IN.getCode());
-                StockInRecordDto stockInRecordDto = stockUtils.addStockWithBatchNo(stockInventoryDto.getProductModelId(), item.getDifferenceQuantity().abs (), stockInventoryDto.getRecordType(), stockInventoryDto.getRecordId(), stockInventoryDto.getBatchNo());
+                StockInRecordDto stockInRecordDto = stockUtils.addStockWithBatchNo(stockInventoryDto.getProductModelId(), item.getDifferenceQuantity().abs (), stockInventoryDto.getRecordType(), stockInventoryDto.getRecordId(), stockInventoryDto.getBatchNo(), resolveWarehouseInfoId(item.getProductModelId(), item.getBatchNo()));
                 //鐩存帴瀹℃牳閫氳繃
-                stockInRecordService.batchApprove(Collections.singletonList(stockInRecordDto.getId()), 1);
+                stockInRecordService.batchApprove(Collections.singletonList(stockInRecordDto.getId()), 1, resolveWarehouseInfoId(item.getProductModelId(), item.getBatchNo()));
             }else {
                 stockInventoryDto.setRecordType(StockOutQualifiedRecordTypeEnum.INVENTORY_CHECK_STOCK_OUT.getCode());
-                StockOutRecordDto stock = stockUtils.substractStock(stockInventoryDto.getProductModelId(), item.getDifferenceQuantity().abs(), stockInventoryDto.getRecordType(), stockInventoryDto.getRecordId(), stockInventoryDto.getBatchNo());
+                StockOutRecordDto stock = stockUtils.substractStock(stockInventoryDto.getProductModelId(), item.getDifferenceQuantity().abs(), stockInventoryDto.getRecordType(), stockInventoryDto.getRecordId(), stockInventoryDto.getBatchNo(), resolveWarehouseInfoId(item.getProductModelId(), item.getBatchNo()));
                 //鐩存帴瀹℃牳閫氳繃
-                stockOutRecordService.batchApprove(Collections.singletonList(stock.getId()), 1);
+                stockOutRecordService.batchApprove(Collections.singletonList(stock.getId()), 1,item.getWarehouseInfoId());
             }
         }
         stockInventoryCheckItemMapper.updateById(stockInventoryCheckPlanDto.getCheckItems());
@@ -149,6 +154,9 @@
 
     @Override
     public StockInventoryCheckPlanDto detail(Long id) {
+        //鏌ヨ浠撳簱
+        List<WarehouseInfo> warehouseInfos = warehouseInfoMapper.selectList(null);
+
         StockInventoryCheckPlan byId = this.getById(id);
         if (byId == null) {
             return null;
@@ -169,6 +177,9 @@
             List<StockInventoryCheckItem> checkItems = stockInventoryCheckItemMapper.selectList(
                     new LambdaQueryWrapper<StockInventoryCheckItem>()
                             .eq(StockInventoryCheckItem::getMainId, checkMain.getId()));
+            checkItems.stream().forEach(item -> {
+                item.setWarehouseName(warehouseInfos.stream().filter(warehouseInfo -> warehouseInfo.getId().equals(item.getWarehouseInfoId())).findFirst().get().getWarehouseName());
+            });
             stockInventoryCheckPlanDto.setCheckItems(checkItems);
         }
 
@@ -254,4 +265,14 @@
     }
 
 
+    private Long resolveWarehouseInfoId(Long productModelId, String batchNo) {
+        List<StockInventory> inventories = stockInventoryService.list(new LambdaQueryWrapper<StockInventory>()
+                .eq(StockInventory::getProductModelId, productModelId)
+                .eq(batchNo != null, StockInventory::getBatchNo, batchNo)
+                .isNull(batchNo == null, StockInventory::getBatchNo));
+        if (inventories.isEmpty() || inventories.get(0).getWarehouseInfoId() == null) {
+            return 1L;
+        }
+        return inventories.get(0).getWarehouseInfoId();
+    }
 }

--
Gitblit v1.9.3