package com.ruoyi.quality.controller; 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; import com.ruoyi.quality.pojo.QualityUnqualified; import com.ruoyi.quality.service.IQualityInspectFileService; 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.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.util.List; /** * 原材料检验/过程检验/出厂检验 */ @RestController @RequestMapping("/quality/qualityInspect") public class QualityInspectController { @Resource private IQualityInspectService qualityInspectService; @Resource private IQualityInspectParamService qualityInspectParamService; @Resource private IQualityInspectFileService qualityInspectFileService; @Autowired private ProcurementRecordService procurementRecordService; /** * 新增 * @param qualityInspectDto * @return */ @PostMapping("/add") public AjaxResult add(@RequestBody QualityInspectDto qualityInspectDto) { String validationMessage = validateInspect(qualityInspectDto, false); if (validationMessage != null) { return AjaxResult.error(validationMessage); } return AjaxResult.success(qualityInspectService.add(qualityInspectDto)); } /** * 删除 * @param ids * @return */ @DeleteMapping("/del") public AjaxResult delQualityInspect(@RequestBody List ids) { if(CollectionUtils.isEmpty(ids)){ return AjaxResult.error("请选择至少一条数据"); } //删除检验参数 qualityInspectParamService.remove(Wrappers.lambdaQuery() .in(QualityInspectParam::getInspectId,ids)); //删除检验附件 qualityInspectFileService.remove(Wrappers.lambdaQuery() .in(QualityInspectFile::getInspectId,ids)); //删除入库记录 procurementRecordService.remove(Wrappers.lambdaQuery().in(ProcurementRecordStorage::getQualityInspectId,ids)); //删除检验单 return AjaxResult.success(qualityInspectService.removeBatchByIds(ids)); } /** * 详情 * @param id * @return */ @GetMapping("/{id}") public AjaxResult QualityInspectDetail(@PathVariable("id") Integer id) { return AjaxResult.success(qualityInspectService.getDetailById(id)); } /** * 修改 * @param qualityInspectDto * @return */ @PostMapping("/update") 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)); } /** *分页查询 * @param page * @param qualityInspect * @return */ @GetMapping("/listPage") public AjaxResult qualityInspectListPage(Page page, QualityInspect qualityInspect) { return AjaxResult.success(qualityInspectService.qualityInspectListPage(page, qualityInspect)); } /** * 导出 * @param response * @param qualityInspect */ @PostMapping("/export") public void qualityInspectExport(HttpServletResponse response,QualityInspect qualityInspect) { 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; } }