| | |
| | | |
| | | /** 故障类型 */ |
| | | private List<String> errorTypeList; |
| | | |
| | | /** 故障类型 */ |
| | | private String errorType; |
| | | |
| | | /** 工单检测图片 */ |
| | | private String imgListStr; |
| | | |
| | | private List<String> imgList; |
| | | |
| | | /** 运维人员 */ |
| | | private Integer ywPeopleId; |
| | | |
| | | private String ywPeopleName; |
| | | |
| | | /** 运维处理时间 */ |
| | |
| | | * 是否扣过积分 |
| | | */ |
| | | private Boolean deduct; |
| | | |
| | | public static WorkOrderVO getVoByEntity(@NonNull WorkOrder entity, WorkOrderVO vo) { |
| | | if(vo == null) { |
| | | vo = new WorkOrderVO(); |
| | |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | |
| | | * 查询工单设备信息 |
| | | * @return |
| | | */ |
| | | List<DeviceInfoVO> hasErrorWorkOrderList(); |
| | | List<DeviceInfoVO> hasErrorWorkOrderList(@Param("start") Date start, @Param("end") Date end); |
| | | |
| | | List<WorkOrderVO> selectPassOrder(@Param("startTime") LocalDateTime now, @Param("endTime")LocalDateTime thirtyDaysAgo, @Param("status") String status, @Param("auditStatus") String auditStatus); |
| | | |
| | |
| | | import com.ycl.system.Result; |
| | | import org.bytedeco.javacv.FFmpegFrameGrabber; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | |
| | | /** |
| | | * 查询工单:已下发、已处理、已完成的工单 |
| | | * |
| | | * @param start 开始时间 |
| | | * @param end 结束时间 |
| | | * @return 数据 |
| | | */ |
| | | List<DeviceInfoVO> hasErrorWorkOrderList(); |
| | | List<DeviceInfoVO> hasErrorWorkOrderList(Date start, Date end); |
| | | |
| | | /** |
| | | * 更新工单图片 |
| | |
| | | if (CollectionUtils.isEmpty(workOrderList)) { |
| | | return Boolean.TRUE; |
| | | } |
| | | // 根据国标码去重 |
| | | workOrderList = workOrderList.stream() |
| | | .collect(Collectors.toMap( |
| | | WorkOrder::getSerialNumber, |
| | | p -> p, |
| | | (existing, replacement) -> existing // 冲突时保留第一个 |
| | | )).values().stream().collect(Collectors.toList()); |
| | | List<String> serialNumberList = workOrderList.stream().map(WorkOrder::getSerialNumber).collect(Collectors.toList()); |
| | | // 查出数据库中国标码对应的未完成的工单 |
| | | List<WorkOrder> inDatabaseWorkOrderList = new LambdaQueryChainWrapper<>(baseMapper) |
| | |
| | | if (StringUtils.hasText(item.getErrorType())) { |
| | | item.setErrorTypeList(List.of(item.getErrorType().split(","))); |
| | | } |
| | | if (StringUtils.hasText(item.getImgListStr())) { |
| | | item.setImgList(List.of(item.getImgListStr().split(","))); |
| | | } |
| | | }); |
| | | } |
| | | return Result.ok().data(page.getRecords()).total(page.getTotal()); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<DeviceInfoVO> hasErrorWorkOrderList() { |
| | | List<DeviceInfoVO> list = baseMapper.hasErrorWorkOrderList(); |
| | | public List<DeviceInfoVO> hasErrorWorkOrderList(Date start, Date end) { |
| | | List<DeviceInfoVO> list = baseMapper.hasErrorWorkOrderList(start, end); |
| | | return list; |
| | | } |
| | | |
| | |
| | | //同步的数据进行工单阈值处理 |
| | | ywThresholdService.carCheck(list); |
| | | } |
| | | // 本地测试 |
| | | // Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date()))); |
| | | // ywThresholdService.carCheck(mongoTemplate.find(query, VehicleDeviceInspectionResult.class)); |
| | | log.info("结束车辆设备全检指标监测结果数据同步"); |
| | |
| | | //存放在mongo中 |
| | | mongoTemplate.insertAll(list); |
| | | //同步的数据进行工单阈值处理 |
| | | //TODO:可能有重复工单 |
| | | ywThresholdService.faceCheck(list); |
| | | } |
| | | // Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date()))); |
| | |
| | | } else { |
| | | log.error("图像监测数据为空"); |
| | | } |
| | | // 本地测试 |
| | | // Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date()))); |
| | | // uyErrorTypeCheckService.imageDetectionCheck(mongoTemplate.find(query, ImageDetectionResult.class)); |
| | | log.info("结束执行图像监测数据同步"); |
| | |
| | | } else { |
| | | log.error("一机一档合格率数据为空"); |
| | | } |
| | | // 本地测试 |
| | | // Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date()))); |
| | | // uyErrorTypeCheckService.monitorQualifyCheck(mongoTemplate.find(query, MonitorQualifyResult.class)); |
| | | log.info("结束一机一档合格率数据同步"); |
| | |
| | | } else { |
| | | log.error("点位在线结果数据为空"); |
| | | } |
| | | // 本地测试 |
| | | // Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date()))); |
| | | // uyErrorTypeCheckService.videoOnlineCheck(mongoTemplate.find(query, VideoOnlineResult.class)); |
| | | log.info("结束执行点位在线数据同步"); |
| | |
| | | log.error("录像可用数据为空{}", jsonObject); |
| | | } |
| | | } |
| | | // 本地测试 |
| | | // Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date()))); |
| | | // uyErrorTypeCheckService.recordMetaDSumCheck(mongoTemplate.find(query, RecordMetaDSumResult.class)); |
| | | log.info("结束执行录像可用数据同步"); |
| | |
| | | import org.springframework.util.StringUtils; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.concurrent.ArrayBlockingQueue; |
| | |
| | | 24, |
| | | 5000, |
| | | TimeUnit.SECONDS, |
| | | new ArrayBlockingQueue<>(10), |
| | | new ArrayBlockingQueue<>(600), |
| | | new ThreadPoolExecutor.CallerRunsPolicy() |
| | | ); |
| | | |
| | | public void run() { |
| | | // 查出故障的设备 |
| | | List<DeviceInfoVO> deviceList = workOrderService.hasErrorWorkOrderList(); |
| | | // 查出最近一周的故障的设备 |
| | | Date now = new Date(); |
| | | Calendar ca = Calendar.getInstance(); |
| | | ca.setTime(now); |
| | | ca.add(Calendar.DATE, -6); |
| | | List<DeviceInfoVO> deviceList = workOrderService.hasErrorWorkOrderList(now, ca.getTime()); |
| | | if (CollectionUtils.isEmpty(deviceList)) { |
| | | return; |
| | | } |
| | |
| | | <result column="errorType" property="errorType"/> |
| | | <result column="status" property="status"/> |
| | | <result column="source" property="source"/> |
| | | <result column="imgListStr" property="imgListStr"/> |
| | | <!-- <collection property="errorTypeList" select="getErrorType" column="{workOrderNo=work_order_no,errList=errList}" ofType="string"/>--> |
| | | </resultMap> |
| | | |
| | |
| | | u.unit_name, |
| | | p.yw_person_name, |
| | | tm.name as source, |
| | | GROUP_CONCAT(DISTINCT da.dict_label ORDER BY da.dict_label SEPARATOR ',') AS errorType |
| | | GROUP_CONCAT(DISTINCT da.dict_label ORDER BY da.dict_label SEPARATOR ',') AS errorType, |
| | | GROUP_CONCAT(DISTINCT ci.img_url ORDER BY ci.create_time DESC SEPARATOR ',') AS imgListStr |
| | | FROM |
| | | t_work_order wo |
| | | INNER JOIN t_monitor tm ON wo.serial_number = tm.serial_number |
| | | INNER JOIN t_work_order_error_type et ON wo.work_order_no = et.work_order_no |
| | | INNER JOIN t_work_order_check_img ci ON ci.work_order_no = wo.work_order_no |
| | | INNER JOIN sys_dict_data da ON da.dict_value = et.error_name AND da.dict_type = 'error_type' <if test="query.errorTypeList != null and query.errorTypeList.size() > 0">AND da.dict_value in <foreach |
| | | collection="query.errorTypeList" open="(" separator="," close=")" item="errorType">#{errorType}</foreach> </if> |
| | | LEFT JOIN t_yw_unit u ON wo.unit_id = u.id AND u.deleted = 0 |
| | |
| | | FROM |
| | | t_work_order wo |
| | | WHERE |
| | | deleted = 0 |
| | | wo.create_time BETWEEN #{start} AND #{end} |
| | | AND deleted = 0 |
| | | </select> |
| | | |
| | | <insert id="addMany"> |