huminmin
2026-07-15 422a5676c2d96dd37c1be62935a314d70fef79b5
src/main/java/com/ruoyi/quality/controller/QualityUnqualifiedController.java
@@ -1,7 +1,10 @@
package com.ruoyi.quality.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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;
@@ -32,8 +35,12 @@
     */
    @PostMapping("/add")
    @Operation(summary = "新增不合格管理")
    @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));
    }
@@ -44,6 +51,7 @@
     */
    @DeleteMapping("/del")
    @Operation(summary = "删除不合格管理")
    @Log(title = "删除不合格管理", businessType = BusinessType.DELETE)
    public R<?> delQualityUnqualified(@RequestBody List<Integer> ids) {
       qualityUnqualifiedService.listByIds(ids).stream().forEach(qualityUnqualified -> {
           if (qualityUnqualified.getInspectState()==1){
@@ -60,6 +68,7 @@
     */
    @GetMapping("/{id}")
    @Operation(summary = "不合格管理详情")
    @Log(title = "不合格管理详情", businessType = BusinessType.OTHER)
    public R<?> QualityUnqualifiedDetail(@PathVariable("id") Integer id) {
        return R.ok(qualityUnqualifiedService.getUnqualified(id));
    }
@@ -71,7 +80,11 @@
     */
    @PostMapping("/update")
    @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));
    }
@@ -83,6 +96,7 @@
     */
    @GetMapping("/listPage")
    @Operation(summary = "不合格管理分页查询")
    @Log(title = "不合格管理分页查询", businessType = BusinessType.OTHER)
    public R<?> qualityUnqualifiedListPage(Page page, QualityUnqualified qualityUnqualified) {
        return R.ok(qualityUnqualifiedService.qualityUnqualifiedListPage(page, qualityUnqualified));
    }
@@ -94,6 +108,7 @@
     */
    @PostMapping("/export")
    @Operation(summary = "不合格管理导出")
    @Log(title = "不合格管理导出", businessType = BusinessType.EXPORT)
    public void qualityUnqualifiedExport(HttpServletResponse response,QualityUnqualified qualityUnqualified) {
        qualityUnqualifiedService.qualityUnqualifiedExport(response, qualityUnqualified);
    }
@@ -105,9 +120,67 @@
     */
    @PostMapping("/deal")
    @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);
        }
    }
}