liding
2026-04-15 1d2d3760bef94013f80cae555bdcbfb2268929a2
fix:生产-质量-仓储(合格,不合格),批号,供应商
已修改9个文件
65 ■■■■■ 文件已修改
src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/pojo/StockUninventory.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/quality/QualityUnqualifiedMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/stock/StockUninventoryMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
@@ -38,12 +38,15 @@
     * @param recordType
     * @param recordId
     */
    public void addUnStock(Long productModelId, BigDecimal quantity, String recordType,Long recordId) {
    public void addUnStock(Long productModelId, BigDecimal quantity, String recordType,Long recordId, String batchNo, String customer, LocalDate productionDate) {
        StockUninventoryDto stockUninventoryDto = new StockUninventoryDto();
        stockUninventoryDto.setRecordId(recordId);
        stockUninventoryDto.setRecordType(String.valueOf(recordType));
        stockUninventoryDto.setQualitity(quantity);
        stockUninventoryDto.setProductModelId(productModelId);
        stockUninventoryDto.setBatchNo(batchNo);
        stockUninventoryDto.setCustomer(customer);
        stockUninventoryDto.setProductionDate(productionDate);
        stockUninventoryService.addStockUninventory(stockUninventoryDto);
    }
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -223,7 +223,7 @@
                order.setDrawMaterials(JSON.toJSONString(existingMaterialList));
                productOrderMapper.updateById(order);
            }
        }else {
        } else {
            throw new RuntimeException("请领取投入材料");
        }
        /*新增报工产出表*/
@@ -237,6 +237,8 @@
        //合格数量=报工数量
        BigDecimal productQty = productionProductOutput.getQuantity();
        //只有合格数量>0才能增加相应数据
        ProductWorkOrder pwo = productWorkOrderMapper.selectById(productionProductMain.getWorkOrderId());
        String customer = "长治市轴承制造有限公司";
        if (productQty.compareTo(BigDecimal.ZERO) > 0) {
            /*新增质检*/
            List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId()));
@@ -249,8 +251,7 @@
                    inspectType = 2;
                    process = null;
                }
                ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(productionProductMain.getWorkOrderId());
                ProductOrder productOrder = productOrderMapper.selectById(productWorkOrder.getProductOrderId());
                ProductOrder productOrder = productOrderMapper.selectById(pwo.getProductOrderId());
                if (productOrder == null) {
                    throw new RuntimeException("生产订单不存在");
                }
@@ -269,6 +270,7 @@
                qualityInspect.setProductModelId(productModel.getId());
                qualityInspect.setBatchNo(productOrder.getBatchNo());
                qualityInspect.setManufacturingTeam(productOrder.getManufacturingTeam());
                qualityInspect.setProductionDate(pwo.getActualStartTime() != null ? pwo.getActualStartTime() : LocalDate.now());
                qualityInspectMapper.insert(qualityInspect);
                List<QualityTestStandard> qualityTestStandard = qualityTestStandardMapper.getQualityTestStandardByProductId(product.getId(), inspectType, process);
                if (qualityTestStandard.size() > 0) {
@@ -286,9 +288,8 @@
                }
            } else {
                //直接入库
                String customer = "长治市轴承制造有限公司";
                stockUtils.addStock(productProcessRouteItem.getProductModelId(), productionProductOutput.getQuantity().subtract(productionProductOutput.getScrapQty()),
                        StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId(),order.getBatchNo(),customer,null
                        StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId(), order.getBatchNo(), customer, pwo.getActualStartTime() != null ? pwo.getActualStartTime() : LocalDate.now()
                );
            }
            /*更新工单和生产订单*/
@@ -335,7 +336,8 @@
        //如果报废数量>0,需要进入报废的库存
        if (ObjectUtils.isNotEmpty(dto.getScrapQty())) {
            if (dto.getScrapQty().compareTo(BigDecimal.ZERO) > 0) {
                stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
                stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId(),
                        order.getBatchNo(), customer, pwo.getActualStartTime() != null ? pwo.getActualStartTime() : LocalDate.now());
            }
        }
        return true;
src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -131,13 +131,13 @@
            String text = inspectParams.stream().map(QualityInspectParam::getParameterItem).collect(Collectors.joining(","));
            qualityUnqualified.setDefectivePhenomena(text + "这些指标中存在不合格");//不合格现象
            qualityUnqualified.setInspectId(qualityInspect.getId());
            qualityUnqualified.setProductionDate(inspect.getProductionDate());
            qualityUnqualified.setBatchNo(inspect.getBatchNo());
            qualityUnqualified.setProductionDate(qualityInspect.getProductionDate());
            qualityUnqualified.setBatchNo(batchNo);
            qualityUnqualifiedMapper.insert(qualityUnqualified);
        } else {
            //合格直接入库
            stockUtils.addStock(qualityInspect.getProductModelId(), qualityInspect.getQuantity(), StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode(),
                    qualityInspect.getId(), batchNo, customer,inspect.getProductionDate()
                    qualityInspect.getId(), batchNo, customer != null ? customer : "长治市轴承制造有限公司", inspect.getProductionDate()
            );
        }
        qualityInspect.setInspectState(1);//已提交
src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
@@ -66,9 +66,16 @@
    public int deal(QualityUnqualified qualityUnqualified) {
        QualityUnqualified unqualified = qualityUnqualifiedMapper.selectById(qualityUnqualified.getId());
        QualityInspect qualityInspect = qualityInspectService.getById(unqualified.getInspectId());
        ProductionProductMain productionProductMain = productionProductMainMapper.selectById(qualityInspect.getProductMainId());
        ProductWorkOrder workOrder = productWorkOrderMapper.selectById(productionProductMain.getWorkOrderId());
        ProductOrder orders = productOrderMapper.selectById(workOrder.getProductOrderId());
        String batchNo;
        if (qualityInspect.getProductMainId() != null) {
            ProductionProductMain productionProductMain = productionProductMainMapper.selectById(qualityInspect.getProductMainId());
            ProductWorkOrder workOrder = productWorkOrderMapper.selectById(productionProductMain.getWorkOrderId());
            ProductOrder orders = productOrderMapper.selectById(workOrder.getProductOrderId());
            batchNo = orders.getBatchNo();
        } else {
            batchNo = qualityInspect.getBatchNo();
        }
        String customer = "长治市轴承制造有限公司";
        if (ObjectUtils.isNotNull(qualityInspect) && qualityInspect.getInspectType() != 0) {
            switch (qualityUnqualified.getDealResult()) {
                case "返修":
@@ -131,13 +138,13 @@
                    break;
                case "报废":
                    //调用不合格库存接口 入不合格库
                    stockUtils.addUnStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId());
                    stockUtils.addUnStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId(),
                            batchNo, customer, qualityInspect.getProductionDate() != null ? qualityInspect.getProductionDate() : LocalDate.now());
                    break;
                case "让步放行":
                    //调用提交合格的接口
                    String customer = "长治市轴承制造有限公司";
                    stockUtils.addStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId(),
                            orders.getBatchNo(), customer,null
                            batchNo, customer, qualityInspect.getProductionDate() != null ? qualityInspect.getProductionDate() : LocalDate.now()
                    );
                    break;
                case "返工":
@@ -150,17 +157,17 @@
            switch (qualityUnqualified.getDealResult()) {
                case "报废":
                    //调用不合格库存接口 入不合格库
                    stockUtils.addUnStock(modelId, unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId());
                    stockUtils.addUnStock(modelId, unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId(),
                            batchNo, customer, qualityInspect.getProductionDate() != null ? qualityInspect.getProductionDate() : LocalDate.now());
                    break;
                case "让步放行":
                    //调用提交合格的接口
                    String customer = "长治市轴承制造有限公司";
                    stockUtils.addStock(modelId, unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId(), orders.getBatchNo(), customer,null);
                    customer = "长治市轴承制造有限公司";
                    stockUtils.addStock(modelId, unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId(), batchNo, customer, qualityInspect.getProductionDate() != null ? qualityInspect.getProductionDate() : LocalDate.now());
                    break;
                default:
                    break;
            }
        }
        qualityUnqualified.setInspectState(1);//已处理
        return qualityUnqualifiedMapper.updateById(qualityUnqualified);
src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java
@@ -19,4 +19,6 @@
    private Long recordId;
    private BigDecimal unLockedQuantity;
    private String uidNo;
}
src/main/java/com/ruoyi/stock/pojo/StockUninventory.java
@@ -12,6 +12,7 @@
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
@@ -65,4 +66,7 @@
    @ApiModelProperty("供应商名称")
    private String customer;
    @ApiModelProperty("生产日期")
    private LocalDate productionDate;
}
src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
@@ -70,6 +70,7 @@
            newStockUnInventory.setRemark(stockUninventoryDto.getRemark());
            newStockUnInventory.setBatchNo(stockUninventoryDto.getBatchNo());
            newStockUnInventory.setCustomer(stockUninventoryDto.getCustomer());
            newStockUnInventory.setProductionDate(stockUninventoryDto.getProductionDate());
            stockUninventoryMapper.insert(newStockUnInventory);
        }else {
            stockUninventoryMapper.updateAddStockUnInventory(stockUninventoryDto);
src/main/resources/mapper/quality/QualityUnqualifiedMapper.xml
@@ -18,7 +18,7 @@
        qu.deal_time,
        qu.production_date,
        pm.uid_no,
        pm.batch_no,
        qu.batch_no,
        CASE
        WHEN qu.model = pm.id THEN pm.model
        ELSE qu.model
src/main/resources/mapper/stock/StockUninventoryMapper.xml
@@ -51,6 +51,9 @@
            <if test="ew.customer != null and ew.customer !=''">
                customer = #{ew.customer},
            </if>
            <if test="ew.productionDate != null">
                production_date = #{ew.productionDate},
            </if>
            update_time = now()
        </set>
        where product_model_id = #{ew.productModelId}
@@ -67,6 +70,7 @@
        (su.qualitity - COALESCE(su.locked_quantity, 0)) as un_locked_quantity,
        pm.model,
        pm.unit,
        pm.uid_no,
        p.product_name,
        su.batch_no,
        su.customer