| | |
| | | package com.ruoyi.quality.service.impl; |
| | | |
| | | |
| | | import cn.hutool.core.lang.Assert; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | |
| | | import com.ruoyi.quality.pojo.QualityInspect; |
| | | import com.ruoyi.quality.pojo.QualityInspectParam; |
| | | import com.ruoyi.quality.pojo.QualityUnqualified; |
| | | import com.ruoyi.stock.pojo.StockInRecord; |
| | | import com.ruoyi.stock.service.StockInRecordService; |
| | | import com.ruoyi.quality.service.IQualityInspectParamService; |
| | | import com.ruoyi.quality.service.IQualityInspectService; |
| | | import com.ruoyi.sales.mapper.SalesLedgerProductMapper; |
| | | import com.ruoyi.stock.dto.StockInventoryDto; |
| | | import com.ruoyi.stock.pojo.StockInRecord; |
| | | import com.ruoyi.stock.service.StockInRecordService; |
| | | import com.ruoyi.stock.service.StockInventoryService; |
| | | import jakarta.servlet.http.HttpServletResponse; |
| | | import lombok.AllArgsConstructor; |
| | |
| | | @Override |
| | | public int submit(QualityInspect inspect) { |
| | | QualityInspect qualityInspect = qualityInspectMapper.selectById(inspect.getId()); |
| | | if (qualityInspect == null) { |
| | | throw new ServiceException("检验单不存在"); |
| | | } |
| | | //幂等:已提交的检验单不允许重复提交,防止重复生成入库/不合格记录 |
| | | if (Integer.valueOf(1).equals(qualityInspect.getInspectState())) { |
| | | throw new ServiceException("检验单已提交,请勿重复提交"); |
| | | } |
| | | |
| | | //提交前必须判断是否合格 |
| | | if (ObjectUtils.isNull(qualityInspect.getCheckResult())) { |
| | |
| | | qualityInspect.setUnqualifiedQuantity(BigDecimal.ZERO); |
| | | } |
| | | |
| | | //数量一致性:合格+不合格 不得超过检验数量 |
| | | if (qualityInspect.getQuantity() != null |
| | | && qualityInspect.getQualifiedQuantity().add(qualityInspect.getUnqualifiedQuantity()) |
| | | .compareTo(qualityInspect.getQuantity()) > 0) { |
| | | throw new ServiceException("合格数量与不合格数量之和不能大于检验数量"); |
| | | } |
| | | |
| | | // 合格直接入库 |
| | | if(qualityInspect.getQualifiedQuantity().compareTo(BigDecimal.ZERO) > 0){ |
| | | if(qualityInspect.getQualifiedQuantity().compareTo(BigDecimal.ZERO) > 0 && qualityInspect.getInspectType()!=1){ |
| | | //仅添加入库记录 |
| | | StockInventoryDto stockInventoryDto = new StockInventoryDto(); |
| | | //如果是采购质检合格入库选用CUSTOMIZATION_UNSTOCK_OUT,其余合格入库选用QUALITYINSPECT_STOCK_IN |
| | |
| | | |
| | | @Override |
| | | public int updateQualityInspect(QualityInspectDto qualityInspectDto) { |
| | | QualityInspect exist = qualityInspectMapper.selectById(qualityInspectDto.getId()); |
| | | if (exist == null) { |
| | | throw new ServiceException("检验单不存在"); |
| | | } |
| | | //已提交的检验单已联动入库/不合格记录,禁止再修改 |
| | | if (Integer.valueOf(1).equals(exist.getInspectState())) { |
| | | throw new ServiceException("检验单已提交,不允许修改"); |
| | | } |
| | | if (ObjectUtils.isNotNull(qualityInspectDto.getQualityInspectParams())) { |
| | | qualityInspectParamService.remove(Wrappers.<QualityInspectParam>lambdaQuery().eq(QualityInspectParam::getInspectId, qualityInspectDto.getId())); |
| | | for (QualityInspectParam qualityInspectParam : qualityInspectDto.getQualityInspectParams()) { |