liyong
2026-05-15 0578c6c76f13e367b5dc7d0882efe3c69ca4cb0e
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();
    }
}