19 小时以前 44ceeeee9cd3f76b0f3a2135421407b73dea9bb0
src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
@@ -18,7 +18,9 @@
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.List;
@Component
@RequiredArgsConstructor
@@ -88,11 +90,21 @@
     * @param recordId
     */
    public void addStock(Long productModelId, BigDecimal quantity, String recordType, Long recordId) {
        addStock(productModelId, quantity, recordType, recordId, null);
    }
    /**
     * 合格入库
     * @param recordType
     * @param recordId
     */
    public void addStock(Long productModelId, BigDecimal quantity, String recordType, Long recordId, LocalDateTime createTime) {
        StockInventoryDto stockInventoryDto = new StockInventoryDto();
        stockInventoryDto.setRecordId(recordId);
        stockInventoryDto.setRecordType(String.valueOf(recordType));
        stockInventoryDto.setQualitity(quantity);
        stockInventoryDto.setProductModelId(productModelId);
        stockInventoryDto.setCreateTime(createTime);
        stockInventoryService.addStockInRecordOnly(stockInventoryDto);
    }
@@ -104,12 +116,22 @@
     * @param recordId
     */
    public void addStockWithBatchNo(Long productModelId, BigDecimal quantity, String recordType, Long recordId, String batchNo) {
        addStockWithBatchNo(productModelId, quantity, recordType, recordId, batchNo, null);
    }
    /**
     * 合格入库带批次号
     * @param recordType
     * @param recordId
     */
    public void addStockWithBatchNo(Long productModelId, BigDecimal quantity, String recordType, Long recordId, String batchNo, LocalDateTime createTime) {
        StockInventoryDto stockInventoryDto = new StockInventoryDto();
        stockInventoryDto.setRecordId(recordId);
        stockInventoryDto.setRecordType(String.valueOf(recordType));
        stockInventoryDto.setQualitity(quantity);
        stockInventoryDto.setProductModelId(productModelId);
        stockInventoryDto.setBatchNo(batchNo);
        stockInventoryDto.setCreateTime(createTime);
        stockInventoryService.addStockInRecordOnly(stockInventoryDto);
    }
@@ -138,9 +160,10 @@
     */
    public void shipmentStatus(String recordType, Long recordId) {
        LambdaQueryWrapper<StockOutRecord> queryWrapper = new LambdaQueryWrapper<StockOutRecord>().eq(StockOutRecord::getRecordType, recordType)
                .eq(StockOutRecord::getRecordId, recordId);
        stockOutRecordService.list(queryWrapper).stream().forEach(stockOutRecord -> {
            stockOutRecord.setApprovalStatus(0);
                .eq(StockOutRecord::getRecordId, recordId)
                .eq(StockOutRecord::getApprovalStatus, 3);
        stockOutRecordService.list(queryWrapper).forEach(stockOutRecord -> {
            stockOutRecord.setApprovalStatus(ReviewStatusEnum.PENDING_REVIEW.getCode());
            stockOutRecordService.updateById(stockOutRecord);
        });
    }
@@ -162,15 +185,25 @@
    //删除出库记录
    public void deleteStockOutRecord(Long recordId, String recordType) {
        StockOutRecord one = stockOutRecordService.getOne(new QueryWrapper<StockOutRecord>()
        List<StockOutRecord> records = stockOutRecordService.list(new QueryWrapper<StockOutRecord>()
                .lambda().eq(StockOutRecord::getRecordId, recordId)
                .eq(StockOutRecord::getRecordType, recordType), false);
        if (ObjectUtils.isNotEmpty(one)) {
            if (ReviewStatusEnum.APPROVED.getCode().equals(one.getApprovalStatus())) {
                stockOutRecordService.batchDelete(Collections.singletonList(one.getId()));
            } else {
                stockOutRecordService.removeById(one.getId());
            }
                .eq(StockOutRecord::getRecordType, recordType));
        if (ObjectUtils.isEmpty(records)) {
            return;
        }
        List<Long> approvedIds = records.stream()
                .filter(one -> ReviewStatusEnum.APPROVED.getCode().equals(one.getApprovalStatus()))
                .map(StockOutRecord::getId)
                .toList();
        List<Long> pendingIds = records.stream()
                .filter(one -> !ReviewStatusEnum.APPROVED.getCode().equals(one.getApprovalStatus()))
                .map(StockOutRecord::getId)
                .toList();
        if (!approvedIds.isEmpty()) {
            stockOutRecordService.batchDelete(approvedIds);
        }
        if (!pendingIds.isEmpty()) {
            stockOutRecordService.removeByIds(pendingIds);
        }
    }