gaoluyang
6 天以前 befe7f238921f08091ba22f8a6c067e9aced28ba
src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
@@ -4,9 +4,13 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.ruoyi.common.enums.ReviewStatusEnum;
import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
import com.ruoyi.procurementrecord.mapper.ProcurementRecordMapper;
import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper;
import com.ruoyi.sales.mapper.ShippingProductDetailMapper;
import com.ruoyi.sales.pojo.ShippingProductDetail;
import com.ruoyi.stock.dto.StockInventoryDto;
import com.ruoyi.stock.dto.StockOutRecordDto;
import com.ruoyi.stock.dto.StockUninventoryDto;
import com.ruoyi.stock.pojo.StockInRecord;
import com.ruoyi.stock.pojo.StockOutRecord;
@@ -31,6 +35,7 @@
    private final StockInventoryService stockInventoryService;
    private final StockInRecordService stockInRecordService;
    private final StockOutRecordService stockOutRecordService;
    private final ShippingProductDetailMapper shippingProductDetailMapper;
    /**
     * 不合格入库
@@ -154,15 +159,47 @@
    }
    /**
     * 发货审批状态更改
     * 只登记出库流水,不校验、不扣减库存。
     * 用于未启用仓储模块、发货没有库存批号的场景。
     *
     * @param productModelId
     * @param quantity
     * @param recordType
     * @param recordId
     * @param batchNo
     */
    public void recordStockOutWithoutInventory(Long productModelId, BigDecimal quantity, String recordType, Long recordId, String batchNo) {
        StockOutRecordDto stockOutRecordDto = new StockOutRecordDto();
        stockOutRecordDto.setRecordId(recordId);
        stockOutRecordDto.setRecordType(String.valueOf(recordType));
        stockOutRecordDto.setStockOutNum(quantity);
        stockOutRecordDto.setProductModelId(productModelId);
        stockOutRecordDto.setBatchNo(batchNo);
        stockOutRecordDto.setType("0");
        stockOutRecordService.add(stockOutRecordDto);
    }
    /**
     * 发货审批状态更改。
     * 没有库存批号的发货(未启用仓储模块)没有出库审核环节,审批通过即视为已出库,
     * 否则发货数量统计不到。
     *
     * @param recordType
     * @param recordId
     */
    public void shipmentStatus(String recordType, Long recordId) {
        Long inventoryBatchCount = shippingProductDetailMapper.selectCount(new LambdaQueryWrapper<ShippingProductDetail>()
                .eq(ShippingProductDetail::getShippingInfoId, recordId)
                .isNotNull(ShippingProductDetail::getStockInventoryId));
        boolean withoutInventoryBatch = StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode().equals(recordType)
                && inventoryBatchCount == 0;
        Integer approvalStatus = withoutInventoryBatch
                ? ReviewStatusEnum.APPROVED.getCode()
                : ReviewStatusEnum.PENDING_REVIEW.getCode();
        LambdaQueryWrapper<StockOutRecord> queryWrapper = new LambdaQueryWrapper<StockOutRecord>().eq(StockOutRecord::getRecordType, recordType)
                .eq(StockOutRecord::getRecordId, recordId);
        stockOutRecordService.list(queryWrapper).stream().forEach(stockOutRecord -> {
            stockOutRecord.setApprovalStatus(0);
            stockOutRecord.setApprovalStatus(approvalStatus);
            stockOutRecordService.updateById(stockOutRecord);
        });
    }