huminmin
2026-07-10 2ee9e158e3129070f6b1fd953da1540f05d4f2b0
src/main/java/com/ruoyi/quality/controller/QualityUnqualifiedController.java
@@ -4,6 +4,7 @@
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.quality.pojo.QualityUnqualified;
import com.ruoyi.quality.service.IQualityUnqualifiedService;
import io.swagger.v3.oas.annotations.Operation;
@@ -37,6 +38,10 @@
    @Log(title = "新增不合格管理", businessType = BusinessType.INSERT)
    public R<?> add(@RequestBody QualityUnqualified qualityUnqualified) {
        qualityUnqualified.setInspectState(0);
        if (qualityUnqualified.getDealType() != null) {
            qualityUnqualified.setDealResult(resolveDealResult(qualityUnqualified.getDealType()));
        }
        normalizeRepairWorkHour(qualityUnqualified);
        return R.ok(qualityUnqualifiedService.save(qualityUnqualified));
    }
@@ -78,6 +83,10 @@
    @Operation(summary = "不合格管理修改")
    @Log(title = "不合格管理修改", businessType = BusinessType.UPDATE)
    public R<?> update(@RequestBody QualityUnqualified qualityUnqualified) {
        if (qualityUnqualified.getDealType() != null) {
            qualityUnqualified.setDealResult(resolveDealResult(qualityUnqualified.getDealType()));
        }
        normalizeRepairWorkHour(qualityUnqualified);
        return R.ok(qualityUnqualifiedService.updateById(qualityUnqualified));
    }
@@ -115,8 +124,38 @@
    @Operation(summary = "不合格管理处理")
    @Log(title = "不合格管理处理", businessType = BusinessType.OTHER)
    public R<?> deal(@RequestBody QualityUnqualified qualityUnqualified) {
        if (qualityUnqualified.getDealType() != null) {
            qualityUnqualified.setDealResult(resolveDealResult(qualityUnqualified.getDealType()));
        }
        normalizeRepairWorkHour(qualityUnqualified);
        return R.ok(qualityUnqualifiedService.deal(qualityUnqualified));
    }
    private String resolveDealResult(Integer dealType) {
        if (dealType == null) {
            return null;
        }
        return switch (dealType) {
            case 0 -> "轻微返工";
            case 1 -> "严重返工";
            case 2 -> "报废";
            default -> null;
        };
    }
    private void normalizeRepairWorkHour(QualityUnqualified qualityUnqualified) {
        if (qualityUnqualified == null || qualityUnqualified.getDealType() == null) {
            return;
        }
        if (qualityUnqualified.getDealType() == 0) {
            if (qualityUnqualified.getRepairWorkHour() == null
                    || qualityUnqualified.getRepairWorkHour().compareTo(java.math.BigDecimal.ZERO) <= 0) {
                throw new ServiceException("轻微返工必须填写大于0的修理工时");
            }
        } else {
            qualityUnqualified.setRepairWorkHour(java.math.BigDecimal.ZERO);
        }
    }
}