| | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.basic.mapper.StandardProductListMapper; |
| | | import com.ruoyi.basic.pojo.StandardProductList; |
| | | import com.ruoyi.basic.utils.StandardTreePathParser; |
| | | import com.ruoyi.framework.exception.ErrorException; |
| | | import com.ruoyi.inspect.dto.InsProductBindingDto; |
| | | import com.ruoyi.inspect.dto.WriteInspectionConditionDto; |
| | | import com.ruoyi.inspect.mapper.InsOrderMapper; |
| | | import com.ruoyi.inspect.mapper.InsOrderStandardTemplateMapper; |
| | | import com.ruoyi.inspect.mapper.InsOrderTemplateDeviceMapper; |
| | | import com.ruoyi.inspect.mapper.InsProductMapper; |
| | | import com.ruoyi.inspect.mapper.InsSampleMapper; |
| | | import com.ruoyi.inspect.pojo.InsOrder; |
| | | import com.ruoyi.inspect.pojo.InsOrderStandardTemplate; |
| | | import com.ruoyi.inspect.pojo.InsOrderTemplateDevice; |
| | | import com.ruoyi.inspect.pojo.InsProduct; |
| | | import com.ruoyi.inspect.pojo.InsSample; |
| | | import com.ruoyi.inspect.service.InsProductService; |
| | | import com.ruoyi.performance.pojo.AuxiliaryOutputWorkingHours; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | |
| | | private StandardProductListMapper standardProductListMapper; |
| | | |
| | | private InsOrderStandardTemplateMapper insOrderStandardTemplateMapper; |
| | | |
| | | private InsOrderTemplateDeviceMapper insOrderTemplateDeviceMapper; |
| | | |
| | | @Override |
| | | public int selectOrderManDay(Integer orderId) { |
| | | return insProductMapper.selectOrderManDay(orderId); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public boolean write(InsOrder insOrder) { |
| | | public boolean write(WriteInspectionConditionDto dto) { |
| | | if (dto == null || dto.getId() == null) { |
| | | throw new ErrorException("订单ID不能为空"); |
| | | } |
| | | if (dto.getTemplateId() != null) { |
| | | InsOrderStandardTemplate snapshot = insOrderStandardTemplateMapper.selectOne( |
| | | Wrappers.<InsOrderStandardTemplate>lambdaQuery() |
| | | .eq(InsOrderStandardTemplate::getInsOrderId, dto.getId()) |
| | | .eq(InsOrderStandardTemplate::getTemplateId, dto.getTemplateId()) |
| | | .last("limit 1")); |
| | | if (snapshot == null) { |
| | | throw new ErrorException("未找到当前模板的原始记录快照"); |
| | | } |
| | | boolean hasSnapshotField = dto.isTemperaturePresent() || dto.isHumidityPresent() |
| | | || dto.isDetectionTimePresent() || dto.isDetectionPlacePresent() |
| | | || dto.isInsResultPresent(); |
| | | if (hasSnapshotField) { |
| | | insOrderStandardTemplateMapper.update(null, |
| | | Wrappers.<InsOrderStandardTemplate>lambdaUpdate() |
| | | .eq(InsOrderStandardTemplate::getId, snapshot.getId()) |
| | | .set(dto.isTemperaturePresent(), |
| | | InsOrderStandardTemplate::getTemperature, dto.getTemperature()) |
| | | .set(dto.isHumidityPresent(), |
| | | InsOrderStandardTemplate::getHumidity, dto.getHumidity()) |
| | | .set(dto.isDetectionTimePresent(), |
| | | InsOrderStandardTemplate::getDetectionTime, dto.getDetectionTime()) |
| | | .set(dto.isDetectionPlacePresent(), |
| | | InsOrderStandardTemplate::getDetectionPlace, dto.getDetectionPlace()) |
| | | .set(dto.isInsResultPresent(), |
| | | InsOrderStandardTemplate::getInsResult, dto.getInsResult())); |
| | | } |
| | | if (dto.isDeviceIdsPresent()) { |
| | | insOrderTemplateDeviceMapper.delete( |
| | | Wrappers.<InsOrderTemplateDevice>lambdaQuery() |
| | | .eq(InsOrderTemplateDevice::getInsOrderId, dto.getId()) |
| | | .eq(InsOrderTemplateDevice::getTemplateId, dto.getTemplateId())); |
| | | List<Integer> deviceIds = dto.getDeviceIds() == null |
| | | ? Collections.emptyList() |
| | | : dto.getDeviceIds().stream() |
| | | .filter(Objects::nonNull) |
| | | .distinct() |
| | | .collect(Collectors.toList()); |
| | | if (!deviceIds.isEmpty() |
| | | && insOrderTemplateDeviceMapper.selectExistingDeviceIds(deviceIds).size() != deviceIds.size()) { |
| | | throw new ErrorException("所选设备不存在,请刷新设备列表后重试"); |
| | | } |
| | | for (int index = 0; index < deviceIds.size(); index++) { |
| | | InsOrderTemplateDevice relation = new InsOrderTemplateDevice(); |
| | | relation.setInsOrderId(dto.getId()); |
| | | relation.setTemplateId(dto.getTemplateId()); |
| | | relation.setDeviceId(deviceIds.get(index)); |
| | | relation.setSort(index); |
| | | insOrderTemplateDeviceMapper.insert(relation); |
| | | } |
| | | } |
| | | if (!hasSnapshotField && !dto.isDeviceIdsPresent()) { |
| | | throw new ErrorException("没有需要保存的模板检验条件"); |
| | | } |
| | | return true; |
| | | } |
| | | InsOrder insOrder = new InsOrder(); |
| | | insOrder.setId(dto.getId()); |
| | | insOrder.setRemark(dto.getRemark()); |
| | | insOrderMapper.updateById(insOrder); |
| | | return true; |
| | | } |
| | |
| | | public List<InsProduct> getProductTreeByProductId(Integer productId) { |
| | | // 查询检验项信息 |
| | | InsProduct insProduct = insProductMapper.selectById(productId); |
| | | String tree = insProduct.getFactory() + " - " + |
| | | insProduct.getLaboratory() + " - " + |
| | | insProduct.getSampleType() + " - " + |
| | | insProduct.getSample() + " - " + |
| | | insProduct.getModel(); |
| | | String tree; |
| | | if (insProduct.getSampleType() == null && insProduct.getModel() == null |
| | | && StringUtils.isNotBlank(insProduct.getLaboratory()) |
| | | && StringUtils.isNotBlank(insProduct.getSample())) { |
| | | tree = StandardTreePathParser.canonical(insProduct.getLaboratory(), insProduct.getSample()); |
| | | } else { |
| | | tree = insProduct.getFactory() + " - " + |
| | | insProduct.getLaboratory() + " - " + |
| | | insProduct.getSampleType() + " - " + |
| | | insProduct.getSample() + " - " + |
| | | insProduct.getModel(); |
| | | } |
| | | // 查询标准树 |
| | | List<StandardProductList> standardProductLists = standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery() |
| | | .eq(StandardProductList::getStandardMethodListId, insProduct.getStandardMethodListId()) |
| | |
| | | product.setTemplate(null); |
| | | product.setStyle(null); |
| | | return product; |
| | | }).collect(Collectors.toList()); |
| | | }).sorted((o1, o2) -> (o1.getSort() == null ? 0 : o1.getSort()) |
| | | - (o2.getSort() == null ? 0 : o2.getSort())).collect(Collectors.toList()); |
| | | return insProducts; |
| | | } |
| | | |
| | |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | | public List<InsProduct> getRevocationInsProductList(Integer orderId) { |
| | | InsOrder insOrder = insOrderMapper.selectById(orderId); |
| | | if(Objects.isNull(insOrder)){ |
| | | throw new RuntimeException("未找到该订单"); |
| | | } |
| | | String revocationInsProductIds = insOrder.getRevocationInsProductIds(); |
| | | List<Integer> ids = new ArrayList<>(); |
| | | if(StringUtils.isNotBlank(revocationInsProductIds)){ |
| | | ids = Arrays.asList(revocationInsProductIds.split(",")).stream().map(Integer::parseInt).collect(Collectors.toList()); |
| | | } |
| | | return baseMapper.getRevocationInsProductList(ids); |
| | | } |
| | | |
| | | |
| | | } |
| | | |