huminmin
2026-07-15 422a5676c2d96dd37c1be62935a314d70fef79b5
src/main/java/com/ruoyi/quality/controller/QualityUnqualifiedController.java
@@ -1,14 +1,19 @@
package com.ruoyi.quality.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.web.domain.AjaxResult;
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;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import java.util.List;
/**
@@ -16,6 +21,7 @@
 */
@RestController
@RequestMapping("/quality/qualityUnqualified")
@Tag(name = "不合格管理")
public class QualityUnqualifiedController {
    @Resource
@@ -28,9 +34,14 @@
     * @return
     */
    @PostMapping("/add")
    public AjaxResult add(@RequestBody QualityUnqualified qualityUnqualified) {
    @Operation(summary = "新增不合格管理")
    @Log(title = "新增不合格管理", businessType = BusinessType.INSERT)
    public R<?> add(@RequestBody QualityUnqualified qualityUnqualified) {
        qualityUnqualified.setInspectState(0);
        return AjaxResult.success(qualityUnqualifiedService.save(qualityUnqualified));
        normalizeDealDecision(qualityUnqualified);
        applyRegenerateNewOrderDefault(qualityUnqualified);
        normalizeRepairWorkHour(qualityUnqualified);
        return R.ok(qualityUnqualifiedService.save(qualityUnqualified));
    }
    /**
@@ -39,11 +50,15 @@
     * @return
     */
    @DeleteMapping("/del")
    public AjaxResult delQualityUnqualified(@RequestBody List<Integer> ids) {
        if(CollectionUtils.isEmpty(ids)){
            return AjaxResult.error("请选择至少一条数据");
        }
        return AjaxResult.success(qualityUnqualifiedService.removeBatchByIds(ids));
    @Operation(summary = "删除不合格管理")
    @Log(title = "删除不合格管理", businessType = BusinessType.DELETE)
    public R<?> delQualityUnqualified(@RequestBody List<Integer> ids) {
       qualityUnqualifiedService.listByIds(ids).stream().forEach(qualityUnqualified -> {
           if (qualityUnqualified.getInspectState()==1){
               throw new RuntimeException("该不合格数据已经处理无法删除!");
           }
       });
        return R.ok(qualityUnqualifiedService.removeBatchByIds(ids));
    }
    /**
@@ -52,8 +67,10 @@
     * @return
     */
    @GetMapping("/{id}")
    public AjaxResult QualityUnqualifiedDetail(@PathVariable("id") Integer id) {
        return AjaxResult.success(qualityUnqualifiedService.getById(id));
    @Operation(summary = "不合格管理详情")
    @Log(title = "不合格管理详情", businessType = BusinessType.OTHER)
    public R<?> QualityUnqualifiedDetail(@PathVariable("id") Integer id) {
        return R.ok(qualityUnqualifiedService.getUnqualified(id));
    }
    /**
@@ -62,8 +79,13 @@
     * @return
     */
    @PostMapping("/update")
    public AjaxResult update(@RequestBody QualityUnqualified qualityUnqualified) {
        return AjaxResult.success(qualityUnqualifiedService.updateById(qualityUnqualified));
    @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));
    }
    /**
@@ -73,8 +95,10 @@
     * @return
     */
    @GetMapping("/listPage")
    public AjaxResult qualityUnqualifiedListPage(Page page, QualityUnqualified qualityUnqualified) {
        return AjaxResult.success(qualityUnqualifiedService.qualityUnqualifiedListPage(page, qualityUnqualified));
    @Operation(summary = "不合格管理分页查询")
    @Log(title = "不合格管理分页查询", businessType = BusinessType.OTHER)
    public R<?> qualityUnqualifiedListPage(Page page, QualityUnqualified qualityUnqualified) {
        return R.ok(qualityUnqualifiedService.qualityUnqualifiedListPage(page, qualityUnqualified));
    }
    /**
@@ -83,6 +107,8 @@
     * @param qualityUnqualified
     */
    @PostMapping("/export")
    @Operation(summary = "不合格管理导出")
    @Log(title = "不合格管理导出", businessType = BusinessType.EXPORT)
    public void qualityUnqualifiedExport(HttpServletResponse response,QualityUnqualified qualityUnqualified) {
        qualityUnqualifiedService.qualityUnqualifiedExport(response, qualityUnqualified);
    }
@@ -93,8 +119,67 @@
     * @return
     */
    @PostMapping("/deal")
    public AjaxResult deal(@RequestBody QualityUnqualified qualityUnqualified) {
        return AjaxResult.success(qualityUnqualifiedService.deal(qualityUnqualified));
    @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);
        }
    }