gongchunyi
2026-06-25 caab0b18b4500c34173f0f932499b7324997ab92
src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -139,22 +139,16 @@
        if (qualifiedQty.compareTo(BigDecimal.ZERO) > 0) {
            if (Objects.equals(qualityInspect.getInspectType(), 0)) {
                Long ledgerId = qualityInspect.getPurchaseLedgerId();
                PurchaseLedger purchaseLedger = ledgerId == null ? null : purchaseLedgerMapper.selectById(ledgerId);
                if (purchaseLedger != null) {
                    submitQualifiedInboundApprove(qualityInspect);
                } else {
                    // 手动新增的原材料检验:无采购台账,不走采购入库审批,直接入合格库存(与过程/出厂检验一致)
                    stockUtils.addStock(
                            null,
                            null,
                            qualityInspect.getProductModelId(),
                            qualifiedQty,
                            StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode(),
                            qualityInspect.getId()
                    );
                    syncQualifiedInboundToPurchaseProducts(qualityInspect, qualifiedQty);
                }
                stockUtils.addStock(
                        qualityInspect.getPurchaseLedgerId(),
                        null,
                        qualityInspect.getProductModelId(),
                        qualifiedQty,
                        StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode(),
                        qualityInspect.getId()
                );
                syncQualifiedInboundToPurchaseProducts(qualityInspect, qualifiedQty);
                qualityInspect.setApprovalStatus(3);
            } else if (Objects.equals(qualityInspect.getInspectType(), 2) && qualityInspect.getSalesLedgerId() != null) {
                // 销售订单的成品出厂检验,提交后直接入库
                StockInventoryDto stockInventoryDto = new StockInventoryDto();
@@ -631,10 +625,21 @@
                allStocked = false;
            }
        }
        long pendingInspectCount = qualityInspectMapper.selectCount(Wrappers.<QualityInspect>lambdaQuery()
                .eq(QualityInspect::getSalesLedgerId, salesLedgerId)
                .eq(QualityInspect::getInspectState, 0));
        boolean allInspectFinished = pendingInspectCount == 0;
        
        SalesLedger ledger = salesLedgerMapper.selectById(salesLedgerId);
        if (ledger != null) {
            ledger.setStockStatus(allStocked ? 2 : (hasStocked ? 1 : 0));
            int newStatus = ledger.getStockStatus() != null ? ledger.getStockStatus() : 0;
            if (allInspectFinished) {
                newStatus = allStocked ? 2 : 5; // 2: 已入库(质检完成), 5: 部分质检完成
            } else {
                newStatus = 4; // 4: 质检中
            }
            ledger.setStockStatus(newStatus);
            salesLedgerMapper.updateById(ledger);
        }
    }