huminmin
2 天以前 02047d917004c8f7dc44627c847583e54c297226
入库管理的审批,支持修改入库数量
已修改5个文件
59 ■■■■ 文件已修改
src/main/java/com/ruoyi/production/service/impl/ProductionOrderPickServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/controller/StockInRecordController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/service/StockInRecordService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProductionOrderPickServiceImpl.java
@@ -18,6 +18,7 @@
import com.ruoyi.production.pojo.ProductionOrderPick;
import com.ruoyi.production.pojo.ProductionOrderPickRecord;
import com.ruoyi.production.service.ProductionOrderPickService;
import com.ruoyi.stock.dto.StockInRecordDto;
import com.ruoyi.stock.dto.StockInventoryDto;
import com.ruoyi.stock.mapper.StockInventoryMapper;
import com.ruoyi.stock.pojo.StockInRecord;
@@ -726,9 +727,11 @@
            if (stockInRecord == null || stockInRecord.getId() == null) {
                throw new ServiceException("回补库存失败:未找到对应入库申请记录");
            }
            StockInRecordDto.StockInRecordApproveItemDto approveItem = new StockInRecordDto.StockInRecordApproveItemDto();
            approveItem.setId(stockInRecord.getId());
            stockInRecordService.batchApprove(
                    Collections.singletonList(stockInRecord.getId()),
                    ReviewStatusEnum.APPROVED.getCode()
                    ReviewStatusEnum.APPROVED.getCode(),
                    Collections.singletonList(approveItem)
            );
        } catch (ServiceException ex) {
            throw ex;
src/main/java/com/ruoyi/stock/controller/StockInRecordController.java
@@ -61,12 +61,12 @@
    @PostMapping("/approve")
    @Log(title = "入库管理-审批入库", businessType = BusinessType.UPDATE)
    @Operation(summary = "批量审批入库记录")
    @Operation(summary = "批量审批入库记录(支持修改入库数量)")
    public AjaxResult approve(@RequestBody StockInRecordDto approveDto) {
        if(CollectionUtils.isEmpty(approveDto.getIds())){
        if(CollectionUtils.isEmpty(approveDto.getItems())){
            return AjaxResult.error("请选择至少一条数据");
        }
        stockInRecordService.batchApprove(approveDto.getIds(), approveDto.getApprovalStatus());
        stockInRecordService.batchApprove(approveDto.getApprovalStatus(), approveDto.getItems());
        return AjaxResult.success();
    }
src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
@@ -4,6 +4,7 @@
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@@ -43,4 +44,17 @@
    @Schema(description = "源单号")
    private String sourceOrderNo;
    private List<StockInRecordApproveItemDto> items;
    @Data
    @Schema(description = "入库审批明细项")
    public static class StockInRecordApproveItemDto {
        @Schema(description = "入库记录ID")
        private Long id;
        @Schema(description = "入库数量")
        private BigDecimal stockInNum;
    }
}
src/main/java/com/ruoyi/stock/service/StockInRecordService.java
@@ -22,7 +22,7 @@
    void exportStockInRecord(HttpServletResponse response, StockInRecordDto stockInRecordDto);
    int batchApprove(List<Long> ids, Integer approvalStatus);
    int batchApprove(Integer approvalStatus, List<StockInRecordDto.StockInRecordApproveItemDto> items);
    int batchReAudit(List<Long> ids);
}
src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -207,14 +207,18 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int batchApprove(List<Long> ids, Integer approvalStatus) {
        if (CollectionUtils.isEmpty(ids)) {
    public int batchApprove(Integer approvalStatus, List<StockInRecordDto.StockInRecordApproveItemDto> items) {
        if (CollectionUtils.isEmpty(items)) {
            throw new BaseException("请选择至少一条数据");
        }
        if (approvalStatus == null || (!ReviewStatusEnum.APPROVED.getCode().equals(approvalStatus) && !ReviewStatusEnum.REJECTED.getCode().equals(approvalStatus))) {
            throw new BaseException("审批状态值无效");
        }
        for (Long id : ids) {
        for (StockInRecordDto.StockInRecordApproveItemDto item : items) {
            Long id = item.getId();
            if (id == null) {
                throw new BaseException("入库记录ID不能为空");
            }
            StockInRecord stockInRecord = stockInRecordMapper.selectById(id);
            if (stockInRecord == null) {
                throw new BaseException("入库记录不存在,无法审批!!!");
@@ -222,6 +226,17 @@
            if (stockInRecord.getApprovalStatus() != null && !ReviewStatusEnum.PENDING_REVIEW.getCode().equals(stockInRecord.getApprovalStatus())) {
                throw new BaseException("只有待审批状态的记录才能审批,入库批次:" + stockInRecord.getInboundBatches());
            }
            // 获取审批时修改的入库数量,如果没有修改则使用原数量
            final BigDecimal finalStockInNum;
            if (item.getStockInNum() != null && item.getStockInNum().compareTo(BigDecimal.ZERO) > 0) {
                finalStockInNum = item.getStockInNum();
                // 更新入库记录的入库数量
                stockInRecord.setStockInNum(finalStockInNum);
            } else {
                finalStockInNum = stockInRecord.getStockInNum();
            }
            stockInRecord.setApprovalStatus(approvalStatus);
            stockInRecordMapper.updateById(stockInRecord);
@@ -237,10 +252,11 @@
                    // 合格入库 -> 先查库存,存在则更新,不存在则新增
                    StockInventory stockInventory = getStockInventory(stockInRecord.getProductModelId(), stockInRecord.getBatchNo());
                    StockInventoryDto stockInventoryDto = getStockInventoryDto(stockInRecord);
                    stockInventoryDto.setQualitity(finalStockInNum);
                    if (stockInventory == null) {
                        stockInventoryMapper.insert(new StockInventory() {{
                            setProductModelId(stockInRecord.getProductModelId());
                            setQualitity(stockInRecord.getStockInNum());
                            setQualitity(finalStockInNum);
                            setBatchNo(stockInRecord.getBatchNo());
                            setRemark(stockInRecord.getRemark());
                            setWarnNum(stockInRecord.getWarnNum());
@@ -257,14 +273,14 @@
                    StockUninventoryDto stockUninventoryDto = new StockUninventoryDto();
                    stockUninventoryDto.setProductModelId(stockInRecord.getProductModelId());
                    stockUninventoryDto.setBatchNo(stockInRecord.getBatchNo());
                    stockUninventoryDto.setQualitity(stockInRecord.getStockInNum());
                    stockUninventoryDto.setQualitity(finalStockInNum);
                    stockUninventoryDto.setRemark(stockInRecord.getRemark());
                    stockUninventoryDto.setManufacturerId(stockInRecord.getManufacturerId());
                    stockUninventoryDto.setSource(stockInRecord.getSource());
                    if (stockUninventory == null) {
                        stockUninventoryMapper.insert(new StockUninventory() {{
                            setProductModelId(stockInRecord.getProductModelId());
                            setQualitity(stockInRecord.getStockInNum());
                            setQualitity(finalStockInNum);
                            setBatchNo(stockInRecord.getBatchNo());
                            setRemark(stockInRecord.getRemark());
                            setManufacturerId(stockInRecord.getManufacturerId());
@@ -277,7 +293,7 @@
                }
            }
        }
        return ids.size();
        return items.size();
    }
    private static @NonNull StockInventoryDto getStockInventoryDto(StockInRecord stockInRecord) {