| | |
| | | |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.project.system.domain.SysUser; |
| | | import com.ruoyi.project.system.mapper.SysUserMapper; |
| | | import com.ruoyi.project.system.service.ISysUserService; |
| | | 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.service.IQualityInspectParamService; |
| | | import com.ruoyi.quality.service.IQualityInspectService; |
| | | import com.ruoyi.quality.service.IQualityUnqualifiedService; |
| | | import com.ruoyi.quality.util.QualityInspectionValueValidator; |
| | | 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; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * 原材料检验/过程检验/出厂检验 |
| | |
| | | |
| | | @Resource |
| | | private IQualityInspectFileService qualityInspectFileService; |
| | | @Autowired |
| | | private ProcurementRecordService procurementRecordService; |
| | | |
| | | @Resource |
| | | private ISysUserService sysUserService; |
| | | |
| | | @Resource |
| | | private SysUserMapper sysUserMapper; |
| | | |
| | | |
| | | /** |
| | |
| | | */ |
| | | @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)); |
| | | } |
| | | |
| | |
| | | //删除检验附件 |
| | | qualityInspectFileService.remove(Wrappers.<QualityInspectFile>lambdaQuery() |
| | | .in(QualityInspectFile::getInspectId,ids)); |
| | | //删除入库记录 |
| | | procurementRecordService.remove(Wrappers.<ProcurementRecordStorage>lambdaQuery().in(ProcurementRecordStorage::getQualityInspectId,ids)); |
| | | //删除检验单 |
| | | return AjaxResult.success(qualityInspectService.removeBatchByIds(ids)); |
| | | } |
| | |
| | | */ |
| | | @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)); |
| | | } |
| | | |
| | | /** 仅分配检验员,避免触发整张检验单的必填校验。 */ |
| | | @PostMapping("/assignInspector") |
| | | public AjaxResult assignInspector(@RequestBody QualityInspect inspect) { |
| | | if (inspect == null || inspect.getId() == null) { |
| | | return AjaxResult.error("检验记录ID不能为空"); |
| | | } |
| | | if (inspect.getCheckUserId() == null) { |
| | | return AjaxResult.error("请选择检验员"); |
| | | } |
| | | QualityInspect stored = qualityInspectService.getById(inspect.getId()); |
| | | if (stored == null) { |
| | | return AjaxResult.error("检验记录不存在"); |
| | | } |
| | | if (Integer.valueOf(1).equals(stored.getInspectState())) { |
| | | return AjaxResult.error("已提交的检验记录不能重新分配检验员"); |
| | | } |
| | | SysUser inspector = sysUserService.selectUserById(inspect.getCheckUserId()); |
| | | if (inspector == null || "2".equals(inspector.getDelFlag())) { |
| | | return AjaxResult.error("所选用户不存在或已删除"); |
| | | } |
| | | if (!SecurityUtils.isAdmin(SecurityUtils.getUserId()) |
| | | && !Objects.equals(SecurityUtils.getLoginUser().getTenantId(), inspector.getTenantId())) { |
| | | return AjaxResult.error("只能分配给当前公司用户"); |
| | | } |
| | | if (!"0".equals(inspector.getStatus())) { |
| | | return AjaxResult.error("所选用户已停用"); |
| | | } |
| | | QualityInspect update = new QualityInspect(); |
| | | update.setId(inspect.getId()); |
| | | update.setCheckUserId(inspector.getUserId()); |
| | | update.setCheckName(StringUtils.defaultIfBlank(inspector.getNickName(), inspector.getUserName())); |
| | | return AjaxResult.success(qualityInspectService.updateById(update)); |
| | | } |
| | | |
| | | /** 仅返回当前租户中正常、未删除的系统用户,供质检员分配使用。 */ |
| | | @GetMapping("/inspectorCandidates") |
| | | public AjaxResult inspectorCandidates() { |
| | | Long tenantId = SecurityUtils.isAdmin(SecurityUtils.getUserId()) |
| | | ? null : SecurityUtils.getLoginUser().getTenantId(); |
| | | return AjaxResult.success(sysUserMapper.selectActiveUsers(tenantId)); |
| | | } |
| | | |
| | | /** |
| | |
| | | |
| | | /** |
| | | * 提交 |
| | | * @param id |
| | | * @param qualityInspect |
| | | * @return |
| | | */ |
| | | @PostMapping("/submit") |
| | | public AjaxResult submit(Integer id) { |
| | | return AjaxResult.success(qualityInspectService.submit(id)); |
| | | public AjaxResult submit(@RequestBody QualityInspect qualityInspect) { |
| | | return AjaxResult.success(qualityInspectService.submit(qualityInspect)); |
| | | } |
| | | |
| | | /** |
| | | * 下载 |
| | | * @param response |
| | | * @param id |
| | | * @param qualityInspect |
| | | */ |
| | | @PostMapping("/down") |
| | | public void down(HttpServletResponse response,Integer id) { |
| | | qualityInspectService.down(response, id); |
| | | 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() + "”的检验值"; |
| | | } |
| | | } |
| | | if ("合格".equals(inspect.getCheckResult())) { |
| | | String valueMessage = QualityInspectionValueValidator.validateQualified(inspect.getQualityInspectParams()); |
| | | if (valueMessage != null) { |
| | | return valueMessage; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | } |