| | |
| | | import constant.CheckConstants; |
| | | import constant.Constants; |
| | | import constant.RedisConstant; |
| | | import enumeration.ErrorType; |
| | | import enumeration.general.*; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | import org.springframework.util.Assert; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.util.StringUtils; |
| | | import pojo.CascadeOption; |
| | | |
| | | import javax.imageio.ImageIO; |
| | | import javax.swing.*; |
| | |
| | | private final NotifyService notifyService; |
| | | private final WorkOrderDistributeRecordMapper workOrderDistributeRecordMapper; |
| | | private final WorkOrderErrorTypeServiceImpl workOrderErrorTypeService; |
| | | private final WorkOrderErrorTypeMapper workOrderErrorTypeMapper; |
| | | private final SysConfigMapper configMapper; |
| | | private final ReportMapper reportMapper; |
| | | private final WorkOrderCheckImgMapper workOrderCheckImgMapper; |
| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Result batchAuditing(WorkOrderBatchAuditingForm form) { |
| | | // 根据故障类型获取列表 |
| | | List<WorkOrder> list = new LambdaQueryChainWrapper<>(baseMapper) |
| | | .in(WorkOrder::getStatus, WorkOrderStatusEnum.YW_HANDLE.getValue()) |
| | | .in(WorkOrder::getErrorType, form.getErrorTypes()) |
| | | .select(WorkOrder::getId, WorkOrder::getUnitId, WorkOrder::getWorkOrderNo, WorkOrder::getSerialNumber) |
| | | .list(); |
| | | List<WorkOrder> list = baseMapper.batchGetByError(form); |
| | | // List<WorkOrder> list = new LambdaQueryChainWrapper<>(baseMapper) |
| | | // .in(WorkOrder::getStatus, WorkOrderStatusEnum.YW_HANDLE.getValue()) |
| | | // .in(WorkOrder::getErrorType, form.getErrorTypes()) |
| | | // .select(WorkOrder::getId, WorkOrder::getUnitId, WorkOrder::getWorkOrderNo, WorkOrder::getSerialNumber) |
| | | // .list(); |
| | | if (list.isEmpty()) { |
| | | return Result.error("没有工单可以审核"); |
| | | } |
| | |
| | | public List<WorkOrderYwConditionRecordVO> selectYwConditionByYwId(String workOrderNo) { |
| | | List<WorkOrderYwConditionRecordVO> ywConditionList = workOrderYwConditionRecordMapper.selectYwConditionByYwId(workOrderNo); |
| | | ywConditionList.stream().forEach(item -> { |
| | | if(item.getUserId().equals(1)){ |
| | | item.setUnitName("管理员"); |
| | | } |
| | | if (Objects.nonNull(item.getSysMsg()) && item.getSysMsg()) { |
| | | item.setUnitName("系统消息"); |
| | | } |
| | |
| | | if (!CollectionUtils.isEmpty(page.getRecords())) { |
| | | page.getRecords().stream().forEach(item -> { |
| | | if (StringUtils.hasText(item.getErrorType())) { |
| | | item.setErrorTypeList(List.of(item.getErrorType().split(","))); |
| | | List<String> errorTypeList = new ArrayList<>(List.of(item.getErrorType().split(","))); |
| | | int index = errorTypeList.indexOf(query.getErrorTypeLabel()); |
| | | if (index != -1) { |
| | | // 保存要移动的元素 |
| | | String firstOccurrence = errorTypeList.get(index); |
| | | // 从列表中移除该元素(第一次出现的位置) |
| | | errorTypeList.remove(index); |
| | | // 将该元素添加到列表的首位 |
| | | errorTypeList.add(0, firstOccurrence); |
| | | } |
| | | // 设置更新后的列表 |
| | | item.setErrorTypeList(errorTypeList); |
| | | } |
| | | if (StringUtils.hasText(item.getImgListStr())) { |
| | | item.setImgList(List.of(item.getImgListStr().split(","))); |
| | |
| | | |
| | | |
| | | @Override |
| | | public synchronized String getFrameImgByDevice(String deviceId, String channelId, String workOrderNo) throws Exception { |
| | | public String getFrameImgByDevice(String deviceId, String channelId, String workOrderNo) throws Exception { |
| | | String url = String.format(this.rtspServer + "/api/play/start/img/%s/%s", deviceId, channelId); |
| | | log.info("访问路径{}",url); |
| | | String result = HttpUtils.sendGet(url); |
| | |
| | | |
| | | @Override |
| | | public List<WorkOrderVO> export (WorkOrderExportQuery query){ |
| | | query.setUnitId(SecurityUtils.getUnitId()); |
| | | if(query.getUnitId()==null) { |
| | | query.setUnitId(SecurityUtils.getUnitId()); |
| | | } |
| | | if (query.getStart() != null) query.setStart(query.getStart() + " 00:00:00"); |
| | | if (query.getEnd() != null) query.setEnd(query.getEnd() + " 23:59:59"); |
| | | |
| | |
| | | insertWhiteList.stream().forEach(white -> workOrderWhiteMapper.insert(white)); |
| | | } |
| | | |
| | | /** |
| | | * 检测工单按钮 |
| | | * @param workOrderNo |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Result checkImage(String workOrderNo,String serialNumber) { |
| | | // 查出国标设备,就一条数据 |
| | | List<DeviceInfo> gbDevices = new LambdaQueryChainWrapper<>(deviceInfoMapper) |
| | | .orderByDesc(DeviceInfo::getUpdateTime) |
| | | .last("limit 1") |
| | | .list(); |
| | | if (!CollectionUtils.isEmpty(gbDevices)) { |
| | | try { |
| | | String imgUrl = this.getFrameImgByDevice(gbDevices.get(0).getDeviceId(), serialNumber,workOrderNo); |
| | | if (StringUtils.hasText(imgUrl)) { |
| | | WorkOrderCheckImg img = new WorkOrderCheckImg(); |
| | | img.setWorkOrderNo(workOrderNo); |
| | | img.setImgUrl(imgUrl); |
| | | img.setCreateTime(new Date()); |
| | | workOrderCheckImgMapper.insert(img); |
| | | } |
| | | return Result.ok().data(imgUrl); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | return Result.ok(); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Result batchDeleteWorkOrder(List<String> workOrderNos) { |
| | | if(!CollectionUtils.isEmpty(workOrderNos)) { |
| | | //删除工单审核记录 |
| | | workOrderAuditingRecordMapper.delete(new QueryWrapper<WorkOrderAuditingRecord>().in("work_order_no", workOrderNos)); |
| | | //删除工单图片记录 |
| | | workOrderCheckImgMapper.delete(new QueryWrapper<WorkOrderCheckImg>().in("work_order_no", workOrderNos)); |
| | | //删除工单下发记录 |
| | | workOrderDistributeRecordMapper.delete(new QueryWrapper<WorkOrderDistributeRecord>().in("work_order_no", workOrderNos)); |
| | | //删除工单故障类型 |
| | | workOrderErrorTypeMapper.delete(new QueryWrapper<WorkOrderErrorType>().in("work_order_no", workOrderNos)); |
| | | //删除工单情况记录 |
| | | workOrderYwConditionRecordMapper.delete(new QueryWrapper<WorkOrderYwConditionRecord>().in("work_order_no", workOrderNos)); |
| | | //删除工单 |
| | | this.baseMapper.delete(new QueryWrapper<WorkOrder>().in("work_order_no", workOrderNos)); |
| | | } |
| | | return Result.ok(); |
| | | } |
| | | |
| | | @Override |
| | | public Result errorAll() { |
| | | List<CascadeOption> results = new ArrayList<>(); |
| | | CascadeOption video = new CascadeOption(); |
| | | video.setLabel("视频"); |
| | | video.setValue("VIDEO"); |
| | | List<ErrorType> videoErr = ErrorType.getErrorTypesByCategory("VIDEO"); |
| | | List<ErrorType> videoErr1 = ErrorType.getErrorTypesByCategory("COMMON"); |
| | | videoErr.addAll(videoErr1); |
| | | List<CascadeOption> videoChildren = videoErr.stream().map(item -> CascadeOption.builder() |
| | | .value(item.getValue()) |
| | | .label(item.getDesc()) |
| | | .build()).collect(Collectors.toList()); |
| | | video.setChildren(videoChildren); |
| | | |
| | | CascadeOption car = new CascadeOption(); |
| | | car.setLabel("车辆"); |
| | | car.setValue("CAR"); |
| | | List<ErrorType> carErr = ErrorType.getErrorTypesByCategory("CAR"); |
| | | List<ErrorType> carErr1 = ErrorType.getErrorTypesByCategory("COMMON"); |
| | | List<ErrorType> carErr2 = ErrorType.getErrorTypesByCategory("CARORFACE"); |
| | | carErr.addAll(carErr1); |
| | | carErr.addAll(carErr2); |
| | | List<CascadeOption> carChildren = carErr.stream().map(item -> CascadeOption.builder() |
| | | .value(item.getValue()) |
| | | .label(item.getDesc()) |
| | | .build()).collect(Collectors.toList()); |
| | | car.setChildren(carChildren); |
| | | |
| | | CascadeOption face = new CascadeOption(); |
| | | face.setLabel("人脸"); |
| | | face.setValue("FACE"); |
| | | List<ErrorType> faceErr = ErrorType.getErrorTypesByCategory("FACE"); |
| | | List<ErrorType> faceErr1 = ErrorType.getErrorTypesByCategory("COMMON"); |
| | | List<ErrorType> faceErr2 = ErrorType.getErrorTypesByCategory("CARORFACE"); |
| | | faceErr.addAll(faceErr1); |
| | | faceErr.addAll(faceErr2); |
| | | List<CascadeOption> faceChildren = faceErr.stream().map(item -> CascadeOption.builder() |
| | | .value(item.getValue()) |
| | | .label(item.getDesc()) |
| | | .build()).collect(Collectors.toList()); |
| | | face.setChildren(faceChildren); |
| | | |
| | | results.add(video); |
| | | results.add(car); |
| | | results.add(face); |
| | | return Result.ok().data(results); |
| | | } |
| | | } |