huminmin
16 小时以前 174c4a75e9dac46cf42399646bf49283583a43f5
src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
@@ -45,6 +45,7 @@
        stockUninventoryDto.setRecordType(String.valueOf(recordType));
        stockUninventoryDto.setQualitity(quantity);
        stockUninventoryDto.setProductModelId(productModelId);
        stockUninventoryDto.setType(resolveUninventoryType(recordType));
        stockUninventoryService.addStockInRecordOnly(stockUninventoryDto);
    }
@@ -63,6 +64,7 @@
        stockUninventoryDto.setQualitity(quantity);
        stockUninventoryDto.setProductModelId(productModelId);
        stockUninventoryDto.setBatchNo(batchNo);
        stockUninventoryDto.setType(resolveUninventoryType(recordType));
        stockUninventoryService.addStockInRecordOnly(stockUninventoryDto);
    }
@@ -80,6 +82,7 @@
        stockUninventoryDto.setRecordType(String.valueOf(recordType));
        stockUninventoryDto.setQualitity(quantity);
        stockUninventoryDto.setProductModelId(productModelId);
        stockUninventoryDto.setType("unqualified");
        stockUninventoryService.subtractStockUninventory(stockUninventoryDto);
    }
@@ -135,6 +138,34 @@
    }
    /**
     * 合格入库带批次号和含水量信息
     * @param productModelId 产品规格ID
     * @param actualStockInNum 实际入库数量
     * @param recordType 记录类型
     * @param recordId 记录ID
     * @param batchNo 批次号
     * @param isContainsWater 是否含水
     * @param waterContent 含水量
     * @param theoryStockInNum 理论入库数量
     */
    public void addStockWithBatchNo(Long productModelId, BigDecimal actualStockInNum, String recordType, Long recordId,
                                    String batchNo, Boolean isContainsWater, BigDecimal waterContent, BigDecimal theoryStockInNum) {
        StockInventoryDto stockInventoryDto = new StockInventoryDto();
        stockInventoryDto.setRecordId(recordId);
        stockInventoryDto.setRecordType(String.valueOf(recordType));
        stockInventoryDto.setQualitity(actualStockInNum);
        stockInventoryDto.setProductModelId(productModelId);
        stockInventoryDto.setBatchNo(batchNo);
        stockInventoryDto.setIsContainsWater(isContainsWater);
        stockInventoryDto.setWaterContent(waterContent);
        stockInventoryDto.setTheoryStockInNum(theoryStockInNum);
        if (theoryStockInNum != null && actualStockInNum != null) {
            stockInventoryDto.setDifferenceNum(theoryStockInNum.subtract(actualStockInNum));
        }
        stockInventoryService.addStockInRecordOnly(stockInventoryDto);
    }
    /**
     * 合格出库
     *
     * @param productModelId
@@ -183,16 +214,33 @@
    //删除出库记录
    public void deleteStockOutRecord(Long recordId, String recordType) {
        StockOutRecord one = stockOutRecordService.getOne(new QueryWrapper<StockOutRecord>()
        java.util.List<StockOutRecord> list = 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.isNotEmpty(list)) {
            java.util.List<Long> approvedIds = new java.util.ArrayList<>();
            java.util.List<Long> pendingIds = new java.util.ArrayList<>();
            for (StockOutRecord stockOutRecord : list) {
                if (ReviewStatusEnum.APPROVED.getCode().equals(stockOutRecord.getApprovalStatus())) {
                    approvedIds.add(stockOutRecord.getId());
                } else {
                    pendingIds.add(stockOutRecord.getId());
                }
            }
            if (!approvedIds.isEmpty()) {
                stockOutRecordService.batchDelete(approvedIds);
            }
            if (!pendingIds.isEmpty()) {
                stockOutRecordService.removeByIds(pendingIds);
            }
        }
    }
    private String resolveUninventoryType(String recordType) {
        if (com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode().equals(recordType)) {
            return "waste";
        }
        return "unqualified";
    }
}