bug
fuliqi
2025-01-16 f97d15e16377b03bdc4b134001fbc532d9222fcf
ycl-server/src/main/java/com/ycl/task/HKTask.java
@@ -173,7 +173,6 @@
        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()))
@@ -189,22 +188,38 @@
            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);
@@ -222,6 +237,7 @@
//                            (existing, replacement) -> existing // 如果遇到相同的 IP,保留第一个(existing)
//                    )).values());
//            uyErrorTypeCheckService.hkOnlineCheck(workOrders);
            }
        }
        log.info("结束抓拍数据量检测结果数据同步");
    }