src/main/java/com/ruoyi/quality/controller/QualityInspectController.java
@@ -3,6 +3,10 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
import com.ruoyi.procurementrecord.service.ProcurementRecordService;
import com.ruoyi.procurementrecord.service.impl.ProcurementRecordServiceImpl;
import com.ruoyi.quality.dto.QualityInspectDto;
import com.ruoyi.quality.pojo.QualityInspect;
import com.ruoyi.quality.pojo.QualityInspectFile;
import com.ruoyi.quality.pojo.QualityInspectParam;
@@ -11,6 +15,8 @@
import com.ruoyi.quality.service.IQualityInspectParamService;
import com.ruoyi.quality.service.IQualityInspectService;
import com.ruoyi.quality.service.IQualityUnqualifiedService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
@@ -33,16 +39,22 @@
    @Resource
    private IQualityInspectFileService qualityInspectFileService;
    @Autowired
    private ProcurementRecordService procurementRecordService;
    /**
     * 新增
     * @param qualityInspect
     * @param qualityInspectDto
     * @return
     */
    @PostMapping("/add")
    public AjaxResult add(@RequestBody QualityInspect qualityInspect) {
        return AjaxResult.success(qualityInspectService.add(qualityInspect));
    public AjaxResult add(@RequestBody QualityInspectDto qualityInspectDto) {
        String validationMessage = validateInspect(qualityInspectDto, false);
        if (validationMessage != null) {
            return AjaxResult.error(validationMessage);
        }
        return AjaxResult.success(qualityInspectService.add(qualityInspectDto));
    }
    /**
@@ -61,6 +73,8 @@
        //删除检验附件
        qualityInspectFileService.remove(Wrappers.<QualityInspectFile>lambdaQuery()
        .in(QualityInspectFile::getInspectId,ids));
        //删除入库记录
        procurementRecordService.remove(Wrappers.<ProcurementRecordStorage>lambdaQuery().in(ProcurementRecordStorage::getQualityInspectId,ids));
        //删除检验单
        return AjaxResult.success(qualityInspectService.removeBatchByIds(ids));
    }
@@ -72,17 +86,28 @@
     */
    @GetMapping("/{id}")
    public AjaxResult QualityInspectDetail(@PathVariable("id") Integer id) {
        return AjaxResult.success(qualityInspectService.getById(id));
        return AjaxResult.success(qualityInspectService.getDetailById(id));
    }
    /**
     * 修改
     * @param qualityInspect
     * @param qualityInspectDto
     * @return
     */
    @PostMapping("/update")
    public AjaxResult update(@RequestBody QualityInspect qualityInspect) {
        return AjaxResult.success(qualityInspectService.updateQualityInspect(qualityInspect));
    public AjaxResult update(@RequestBody QualityInspectDto qualityInspectDto) {
        String validationMessage = validateInspect(qualityInspectDto, true);
        if (validationMessage != null) {
            return AjaxResult.error(validationMessage);
        }
        QualityInspect stored = qualityInspectService.getById(qualityInspectDto.getId());
        if (stored == null) {
            return AjaxResult.error("检验记录不存在");
        }
        if (Integer.valueOf(1).equals(stored.getInspectState())) {
            return AjaxResult.error("已提交的检验记录不能修改");
        }
        return AjaxResult.success(qualityInspectService.updateQualityInspect(qualityInspectDto));
    }
    /**
@@ -106,5 +131,62 @@
        qualityInspectService.qualityInspectExport(response, qualityInspect);
    }
    /**
     * 提交
     * @param qualityInspect
     * @return
     */
    @PostMapping("/submit")
    public AjaxResult submit(@RequestBody QualityInspect qualityInspect) {
        return AjaxResult.success(qualityInspectService.submit(qualityInspect));
    }
    /**
     * 下载
     * @param response
     * @param qualityInspect
     */
    @PostMapping("/down")
    public void down(HttpServletResponse response,@RequestBody QualityInspect qualityInspect) {
        qualityInspectService.down(response, qualityInspect);
    }
    private String validateInspect(QualityInspectDto inspect, boolean requireId) {
        if (inspect == null) {
            return "检验数据不能为空";
        }
        if (requireId && inspect.getId() == null) {
            return "检验记录ID不能为空";
        }
        if (inspect.getInspectType() == null || inspect.getInspectType() < 0 || inspect.getInspectType() > 2) {
            return "检验类别不正确";
        }
        if (inspect.getProductId() == null) {
            return "请选择产品";
        }
        if (inspect.getCheckTime() == null) {
            return "请选择检测日期";
        }
        if (inspect.getQuantity() == null || inspect.getQuantity().signum() <= 0) {
            return "检验数量必须大于0";
        }
        if (!"合格".equals(inspect.getCheckResult()) && !"不合格".equals(inspect.getCheckResult())) {
            return "请选择有效的检测结果";
        }
        if (inspect.getInspectType() == 1 && StringUtils.isBlank(inspect.getProcess())) {
            return "过程检验必须选择工序";
        }
        if (CollectionUtils.isEmpty(inspect.getQualityInspectParams())) {
            return "当前产品未配置检验指标,请先维护指标";
        }
        for (QualityInspectParam parameter : inspect.getQualityInspectParams()) {
            if (StringUtils.isBlank(parameter.getParameterItem())) {
                return "检验项目不能为空";
            }
            if (StringUtils.isBlank(parameter.getTestValue())) {
                return "请填写“" + parameter.getParameterItem() + "”的检验值";
            }
        }
        return null;
    }
}