huminmin
2026-07-15 422a5676c2d96dd37c1be62935a314d70fef79b5
src/main/java/com/ruoyi/quality/controller/QualityUnqualifiedController.java
@@ -38,9 +38,8 @@
    @Log(title = "新增不合格管理", businessType = BusinessType.INSERT)
    public R<?> add(@RequestBody QualityUnqualified qualityUnqualified) {
        qualityUnqualified.setInspectState(0);
        if (qualityUnqualified.getDealType() != null) {
            qualityUnqualified.setDealResult(resolveDealResult(qualityUnqualified.getDealType()));
        }
        normalizeDealDecision(qualityUnqualified);
        applyRegenerateNewOrderDefault(qualityUnqualified);
        normalizeRepairWorkHour(qualityUnqualified);
        return R.ok(qualityUnqualifiedService.save(qualityUnqualified));
    }
@@ -83,9 +82,8 @@
    @Operation(summary = "不合格管理修改")
    @Log(title = "不合格管理修改", businessType = BusinessType.UPDATE)
    public R<?> update(@RequestBody QualityUnqualified qualityUnqualified) {
        if (qualityUnqualified.getDealType() != null) {
            qualityUnqualified.setDealResult(resolveDealResult(qualityUnqualified.getDealType()));
        }
        normalizeDealDecision(qualityUnqualified);
        applyRegenerateNewOrderDefault(qualityUnqualified);
        normalizeRepairWorkHour(qualityUnqualified);
        return R.ok(qualityUnqualifiedService.updateById(qualityUnqualified));
    }
@@ -124,23 +122,50 @@
    @Operation(summary = "不合格管理处理")
    @Log(title = "不合格管理处理", businessType = BusinessType.OTHER)
    public R<?> deal(@RequestBody QualityUnqualified qualityUnqualified) {
        if (qualityUnqualified.getDealType() != null) {
            qualityUnqualified.setDealResult(resolveDealResult(qualityUnqualified.getDealType()));
        }
        normalizeDealDecision(qualityUnqualified);
        applyRegenerateNewOrderDefault(qualityUnqualified);
        normalizeRepairWorkHour(qualityUnqualified);
        return R.ok(qualityUnqualifiedService.deal(qualityUnqualified));
    }
    private String resolveDealResult(Integer dealType) {
        if (dealType == null) {
            return null;
    private void normalizeDealDecision(QualityUnqualified qualityUnqualified) {
        if (qualityUnqualified == null) {
            return;
        }
        return switch (dealType) {
            case 0 -> "轻微返工";
            case 1 -> "严重返工";
            case 2 -> "报废";
            default -> null;
        };
        String dealResult = qualityUnqualified.getDealResult();
        Integer dealType = qualityUnqualified.getDealType();
        if ("报废".equals(dealResult)) {
            qualityUnqualified.setDealType(2);
            return;
        }
        if ("报工".equals(dealResult)) {
            if (dealType == null) {
                throw new ServiceException("报工时必须选择不合格类型");
            }
            if (dealType == 2) {
                qualityUnqualified.setDealResult("报废");
            }
            return;
        }
        if (dealType == null) {
            return;
        }
        if (dealType == 2) {
            qualityUnqualified.setDealResult("报废");
        } else if (dealType == 0 || dealType == 1) {
            qualityUnqualified.setDealResult("报工");
        }
    }
    private void applyRegenerateNewOrderDefault(QualityUnqualified qualityUnqualified) {
        if (qualityUnqualified == null || qualityUnqualified.getDealType() == null) {
            return;
        }
        if (qualityUnqualified.getDealType() == 0) {
            qualityUnqualified.setRegenerateNewOrder(0);
        } else if (qualityUnqualified.getDealType() == 1 || qualityUnqualified.getDealType() == 2) {
            qualityUnqualified.setRegenerateNewOrder(1);
        }
    }
    private void normalizeRepairWorkHour(QualityUnqualified qualityUnqualified) {