zxl
4 天以前 c83101eb62f5d4906b9c01ceea6b21a37f9e84d8
ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -193,7 +193,6 @@
            log.error("请配置离线次数,此次设置为默认值2");
        }
        // 先查出设备IP集合,剔除掉在线情况是未知的,并且只检测正在考核的设备避免多余工单
        List<TMonitorResult> monitorList = monitorMapper.getDistinctIP();
        //补充错误时间点
@@ -252,6 +251,10 @@
        //查出数据库纯车辆或纯人脸设备
//        List<String> serialNumbers = monitorMapper.selectCarOrFace().stream().map(TMonitor::getSerialNumber).collect(Collectors.toList());
        dataList.forEach(item->{
//            if ("DX_长征大道贡兴路路口东南方向_枪机_细节".equals(item.getName())){
//                log.info("2.数据流入:{}",item);
//                log.info("打印状态pingOnline:{}",item.getPingOnline());
//            }
            if(item.getPingOnline()) {
                onLineList.add(item.getIp());
            } else if(!item.getPingOnline()) {
@@ -261,14 +264,17 @@
                unKnownList.add(item.getIp());
            }
        });
        log.error("unKnownList:{}",unKnownList);
        log.error("通过pingOnline未知点位的集合大小:{}",unKnownList.size());
        log.error("通过pingOnline修改离线线的点位集合大小:{}",offLineList.size());
        log.error("通过pingOnline修改在线的点位集合大小:{}",onLineList.size());
        if(!CollectionUtils.isEmpty(offLineList)) {
            log.error("修改离线的点位集合:{}",offLineList);
            monitorMapper.batchUpdateOnline(offLineList, now, ApiConstants.UY_OnlineSite_Offline);
            monitorMapper.batchUpdatePingOnline(offLineList, now, ApiConstants.UY_OnlineSite_Offline);
        }
        if(!CollectionUtils.isEmpty(onLineList)) {
            log.error("修改在线的点位集合:{}",onLineList);
            monitorMapper.batchUpdateOnline(onLineList, now, ApiConstants.UY_OnlineSite_Online);
            monitorMapper.batchUpdatePingOnline(onLineList, now, ApiConstants.UY_OnlineSite_Online);
        }
        //存放到mongo
        if (!CollectionUtils.isEmpty(dataList)) {
@@ -288,6 +294,10 @@
                            mongoData.setProvinceTag(mongoData.getProvinceTagCar());
                        }else if("3".equals(type)){
                            mongoData.setProvinceTag(mongoData.getProvinceTagFace());
                        }
                        //修改线上
                        if(mongoData.getPingOnline()){
                            mongoData.setOnline(1);
                        }
                        mongoList.add(mongoData);
                    }
@@ -363,6 +373,31 @@
                            vo.setUpdateTime(now);
                            return vo;
                        }).collect(Collectors.toList());
                        log.info("打印点位在线(优云)需要修改的状态:{}",willUpdateList);
                        log.info("打印点位在线(优云)需要修改的大小:{}",willUpdateList.size());
                        Map<Integer, Long> statusCountMap = willUpdateList.stream()
                                .collect(Collectors.groupingBy(
                                        item -> {
                                            int online = item.getOnline();
                                            // 自定义分组规则:-1、1 单独分组,其他归为 0(或其他标识)
                                            if (online == -1) {
                                                return -1;
                                            } else if (online == 1) {
                                                return 1;
                                            } else {
                                                return 0; // 用 0 代表其他状态
                                            }
                                        },
                                        Collectors.counting() // 统计每个分组的数量
                                ));
                        // 从map中获取各状态的数量(默认值为0,避免空指针)
                        long offlineCount = statusCountMap.getOrDefault(-1, 0L);   // -1状态的数量
                        long onlineCount = statusCountMap.getOrDefault(1, 0L);     // 1状态的数量
                        long otherCount = statusCountMap.getOrDefault(0, 0L);      // 其他状态的数量
                        log.info("打印点位在线(优云)需要修改离线大小:{}",offlineCount);
                        log.info("打印点位在线(优云)需要修改在线大小:{}",onlineCount);
                        log.info("打印点位在线(优云)需要修改其他状态大小:{}",otherCount);
                        monitorMapper.updateOnlineFromUyOrHk(willUpdateList);
                        //离线生成工单,一个ip只生成一个工单
                        List<VideoOnlineResult> workOrders = new ArrayList<>(records.stream()