liyong
2026-05-14 4336d99906953517399187638925817d969c4e10
src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
@@ -34,7 +34,7 @@
    private final StockInventoryMapper stockInventoryMapper;
    /**
     * 不合格入库
     * 涓嶅悎鏍煎叆搴?
     *
     * @param productModelId
     * @param quantity
@@ -47,11 +47,11 @@
        stockUninventoryDto.setRecordType(String.valueOf(recordType));
        stockUninventoryDto.setQualitity(quantity);
        stockUninventoryDto.setProductModelId(productModelId);
        stockUninventoryService.addStockInRecordOnly(stockUninventoryDto);
        stockUninventoryService.addStockUninventory(stockUninventoryDto);
    }
    /**
     * 不合格出库
     * 涓嶅悎鏍煎嚭搴?
     *
     * @param productModelId
     * @param quantity
@@ -68,38 +68,49 @@
    }
    /**
     * 合格入库
     * 鍚堟牸鍏ュ簱
     * @param recordType
     * @param recordId
     */
    public void addStock(Long productModelId, BigDecimal quantity, String recordType, Long recordId) {
        addStock(productModelId, quantity, recordType, recordId, resolveWarehouseInfoId(null, productModelId, null));
    }
    public void addStock(Long productModelId, BigDecimal quantity, String recordType, Long recordId, Long warehouseInfoId) {
        StockInventoryDto stockInventoryDto = new StockInventoryDto();
        stockInventoryDto.setRecordId(recordId);
        stockInventoryDto.setRecordType(String.valueOf(recordType));
        stockInventoryDto.setQualitity(quantity);
        stockInventoryDto.setProductModelId(productModelId);
        stockInventoryDto.setWarehouseInfoId(warehouseInfoId);
        stockInventoryService.addStockInRecordOnly(stockInventoryDto);
    }
    /**
     * 合格入库带批次号
     * 鍚堟牸鍏ュ簱甯︽壒娆″彿
     * @param productModelId
     * @param quantity
     * @param recordType
     * @param recordId
     */
    public StockInRecordDto addStockWithBatchNo(Long productModelId, BigDecimal quantity, String recordType, Long recordId, String batchNo) {
        return addStockWithBatchNo(productModelId, quantity, recordType, recordId, batchNo,
                resolveWarehouseInfoId(null, productModelId, batchNo));
    }
    public StockInRecordDto addStockWithBatchNo(Long productModelId, BigDecimal quantity, String recordType, Long recordId, String batchNo, Long warehouseInfoId) {
        StockInventoryDto stockInventoryDto = new StockInventoryDto();
        stockInventoryDto.setRecordId(recordId);
        stockInventoryDto.setRecordType(String.valueOf(recordType));
        stockInventoryDto.setQualitity(quantity);
        stockInventoryDto.setProductModelId(productModelId);
        stockInventoryDto.setBatchNo(batchNo);
        stockInventoryDto.setWarehouseInfoId(warehouseInfoId);
       return stockInventoryService.addStockInRecordOnly(stockInventoryDto);
    }
    /**
     * 合格出库
     * 鍚堟牸鍑哄簱
     *
     * @param productModelId
     * @param quantity
@@ -107,26 +118,36 @@
     * @param recordId
     */
    public void substractStock(Long productModelId, BigDecimal quantity, String recordType, Long recordId) {
        substractStock(productModelId, quantity, recordType, recordId, resolveWarehouseInfoId(null, productModelId, null));
    }
    public void substractStock(Long productModelId, BigDecimal quantity, String recordType, Long recordId, Long warehouseInfoId) {
        StockInventoryDto stockInventoryDto = new StockInventoryDto();
        stockInventoryDto.setRecordId(recordId);
        stockInventoryDto.setRecordType(String.valueOf(recordType));
        stockInventoryDto.setQualitity(quantity);
        stockInventoryDto.setProductModelId(productModelId);
        stockInventoryDto.setWarehouseInfoId(warehouseInfoId);
        stockInventoryService.subtractStockInventory(stockInventoryDto);
    }
    public StockOutRecordDto substractStock(Long productModelId, BigDecimal quantity, String recordType, Long recordId, String batchNo) {
        return substractStock(productModelId, quantity, recordType, recordId, batchNo,
                resolveWarehouseInfoId(null, productModelId, batchNo));
    }
    public StockOutRecordDto substractStock(Long productModelId, BigDecimal quantity, String recordType, Long recordId, String batchNo, Long warehouseInfoId) {
        StockInventoryDto stockInventoryDto = new StockInventoryDto();
        stockInventoryDto.setRecordId(recordId);
        stockInventoryDto.setRecordType(String.valueOf(recordType));
        stockInventoryDto.setQualitity(quantity);
        stockInventoryDto.setProductModelId(productModelId);
        stockInventoryDto.setBatchNo(batchNo);
        stockInventoryDto.setWarehouseInfoId(warehouseInfoId);
       return stockInventoryService.addStockOutRecordOnly(stockInventoryDto);
    }
    /**
     * 发货审批状态更改
     * @param recordType
     * @param recordId
     */
@@ -138,18 +159,18 @@
        stockOutRecordService.updateById(stockOutRecord);
    }
    //不合格库存删除
    public void deleteStockInRecord(Long recordId, String recordType) {
        StockInRecord one = stockInRecordService.getOne(new QueryWrapper<StockInRecord>()
                .lambda().eq(StockInRecord::getRecordId, recordId)
                .eq(StockInRecord::getRecordType, recordType));
        if (ObjectUtils.isNotEmpty(one)) {
            stockInRecordService.batchDelete(Collections.singletonList(one.getId()));
            //将库存减回来
            StockInventoryDto stockInventoryDto = new StockInventoryDto();
            stockInventoryDto.setRecordId(recordId);
            stockInventoryDto.setRecordType(recordType);
            stockInventoryDto.setQualitity(one.getStockInNum());
            stockInventoryDto.setProductModelId(one.getProductModelId());
            stockInventoryDto.setBatchNo(one.getBatchNo());
            stockInventoryMapper.updateSubtractStockInventory((stockInventoryDto));
        }
@@ -161,13 +182,22 @@
                .eq(StockOutRecord::getRecordType, recordType));
        if (ObjectUtils.isNotEmpty(one)) {
            stockOutRecordService.batchDelete(Collections.singletonList(one.getId()));
            //将库存加回来
            StockInventoryDto stockInventoryDto = new StockInventoryDto();
            stockInventoryDto.setRecordId(recordId);
            stockInventoryDto.setRecordType(recordType);
            stockInventoryDto.setQualitity(one.getStockOutNum());
            stockInventoryDto.setProductModelId(one.getProductModelId());
            stockInventoryDto.setBatchNo(one.getBatchNo());
            stockInventoryDto.setWarehouseInfoId(one.getWarehouseInfoId());
            stockInventoryMapper.updateAddStockInventory((stockInventoryDto));
        }
    }
    private Long resolveWarehouseInfoId(Long warehouseInfoId, Long productModelId, String batchNo) {
        if (warehouseInfoId == null) {
            throw new IllegalArgumentException("warehouseInfoId不能为空");
        }
        return warehouseInfoId;
    }
}