huminmin
2026-07-15 422a5676c2d96dd37c1be62935a314d70fef79b5
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,9 @@
    @Log(title = "新增不合格管理", businessType = BusinessType.INSERT)
    public R<?> add(@RequestBody QualityUnqualified qualityUnqualified) {
        qualityUnqualified.setInspectState(0);
        normalizeDealDecision(qualityUnqualified);
        applyRegenerateNewOrderDefault(qualityUnqualified);
        normalizeRepairWorkHour(qualityUnqualified);
        return R.ok(qualityUnqualifiedService.save(qualityUnqualified));
    }
@@ -78,6 +82,9 @@
    @Operation(summary = "不合格管理修改")
    @Log(title = "不合格管理修改", businessType = BusinessType.UPDATE)
    public R<?> update(@RequestBody QualityUnqualified qualityUnqualified) {
        normalizeDealDecision(qualityUnqualified);
        applyRegenerateNewOrderDefault(qualityUnqualified);
        normalizeRepairWorkHour(qualityUnqualified);
        return R.ok(qualityUnqualifiedService.updateById(qualityUnqualified));
    }
@@ -115,8 +122,65 @@
    @Operation(summary = "不合格管理处理")
    @Log(title = "不合格管理处理", businessType = BusinessType.OTHER)
    public R<?> deal(@RequestBody QualityUnqualified qualityUnqualified) {
        normalizeDealDecision(qualityUnqualified);
        applyRegenerateNewOrderDefault(qualityUnqualified);
        normalizeRepairWorkHour(qualityUnqualified);
        return R.ok(qualityUnqualifiedService.deal(qualityUnqualified));
    }
    private void normalizeDealDecision(QualityUnqualified qualityUnqualified) {
        if (qualityUnqualified == null) {
            return;
        }
        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) {
        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);
        }
    }
}