| | |
| | | faceParam.setDataType(ApiConstants.HK_DataType_FACE); |
| | | List<SnapshotDataMonitorResult> faceList = HkApiUtil.sendAPI(host, appKey, appSecret, "/api/dqd/service/rs/v1/data/snapCountDetail/query", faceParam, SnapshotDataMonitorResult.class); |
| | | if (!CollectionUtils.isEmpty(faceList)) { |
| | | log.info("结果数据大小:{}", faceList.size()); |
| | | //如果今天存在之前的数据先删除 |
| | | Query query = new Query(Criteria |
| | | .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())) |
| | |
| | | faceList.forEach(item -> item.setDataType(ApiConstants.HK_DataType_FACE)); |
| | | mongoTemplate.insertAll(faceList); |
| | | } |
| | | //修改online状态以及生成工单 |
| | | //修改online状态 |
| | | List<SnapshotDataMonitorResult> totalResult = new ArrayList<>(); |
| | | totalResult.addAll(carList); |
| | | totalResult.addAll(faceList); |
| | | if (!CollectionUtils.isEmpty(totalResult)) { |
| | | List<String> numbers = totalResult.stream().map(SnapshotDataMonitorResult::getExternalIndexCode).collect(Collectors.toList()); |
| | | Map<String, TMonitor> map = monitorMapper.selectList(new QueryWrapper<TMonitor>().in("serial_number", numbers)) |
| | | .stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity())); |
| | | Date now = new Date(); |
| | | //过滤 |
| | | totalResult = totalResult.stream().filter(item -> map.get(item.getExternalIndexCode()) != null).collect(Collectors.toList()); |
| | | totalResult.forEach(item -> { |
| | | TMonitor monitor = map.get(item.getExternalIndexCode()); |
| | | item.setIp(monitor.getIp()); |
| | | }); |
| | | //海康不做在线监测 |
| | | //先拿优云的在线,过滤掉优云已有的国标码 |
| | | Query query = new Query(); |
| | | query.addCriteria(Criteria |
| | | .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); |
| | | List<VideoOnlineResult> results = mongoTemplate.find(query, VideoOnlineResult.class); |
| | | if (!CollectionUtils.isEmpty(results)) { |
| | | Date now = new Date(); |
| | | List<String> uyNoList = results.stream().map(VideoOnlineResult::getNo).collect(Collectors.toList()); |
| | | List<String> numbers = totalResult.stream().filter(result->!uyNoList.contains(result.getExternalIndexCode())) |
| | | .map(SnapshotDataMonitorResult::getExternalIndexCode).collect(Collectors.toList()); |
| | | //排除掉优云且不包含视频设备的国标 |
| | | Map<String, TMonitor> map = monitorMapper.selectList(new QueryWrapper<TMonitor>() |
| | | .in("serial_number", numbers)) |
| | | .stream().filter(monitor -> monitor.getCameraFunType()!=null && !monitor.getCameraFunType().contains("1")) |
| | | .collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity())); |
| | | List<UpdateOnlineVO> willUpdateList = new ArrayList<>(); |
| | | totalResult.forEach(item -> { |
| | | TMonitor monitor = map.get(item.getExternalIndexCode()); |
| | | if(monitor!=null) { |
| | | UpdateOnlineVO vo = new UpdateOnlineVO(); |
| | | vo.setOnline(item.getDataCount() > 0 ? 1 : -1); |
| | | vo.setSerialNumber(monitor.getSerialNumber()); |
| | | vo.setUpdateTime(now); |
| | | willUpdateList.add(vo); |
| | | } |
| | | }); |
| | | if(!CollectionUtils.isEmpty(willUpdateList)) monitorMapper.updateOnlineFromHk(willUpdateList); |
| | | // List<UpdateOnlineVO> willUpdateList = totalResult.stream().map(item -> { |
| | | // UpdateOnlineVO vo = new UpdateOnlineVO(); |
| | | // vo.setOnline(item.getDataCount() > 0 ? 1 : -1); |
| | |
| | | // (existing, replacement) -> existing // 如果遇到相同的 IP,保留第一个(existing) |
| | | // )).values()); |
| | | // uyErrorTypeCheckService.hkOnlineCheck(workOrders); |
| | | } |
| | | } |
| | | log.info("结束抓拍数据量检测结果数据同步"); |
| | | } |