From d715a933d9f599c9586b07a34e076a6c614916b8 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期四, 31 十月 2024 02:04:09 +0800
Subject: [PATCH] 点位导出加个区县表头

---
 ycl-server/src/main/java/com/ycl/task/UYTask.java |   79 ++++++++++++++++++++++-----------------
 1 files changed, 45 insertions(+), 34 deletions(-)

diff --git a/ycl-server/src/main/java/com/ycl/task/UYTask.java b/ycl-server/src/main/java/com/ycl/task/UYTask.java
index 3afaece..2f92fa3 100644
--- a/ycl-server/src/main/java/com/ycl/task/UYTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -172,8 +172,9 @@
     }
 
     /**
-     * 鐐逛綅鍦ㄧ嚎妫�娴�
+     * 鐐逛綅鍦ㄧ嚎PING妫�娴�
      */
+    //TODO锛氱偣浣嶅湪绾匡紙淇敼閫昏緫鍙拡瀵瑰伐鍗曪級
     public void pointOnline() throws ExecutionException, InterruptedException {
         log.info("寮�濮嬫娴嬬偣浣嶅湪绾�");
         Integer times = 2;
@@ -185,40 +186,31 @@
         } else {
             log.error("璇烽厤缃绾挎鏁帮紝姝ゆ璁剧疆涓洪粯璁ゅ��2");
         }
-        // 鍏堟煡鍑鸿澶嘔P闆嗗悎
+        // 鍏堟煡鍑鸿澶嘔P闆嗗悎,鍓旈櫎鎺夊湪绾挎儏鍐垫槸鏈煡鐨�,骞朵笖鍙娴嬫鍦ㄨ�冩牳鐨勮澶囬伩鍏嶅浣欏伐鍗�
         List<TMonitorResult> monitorList = monitorMapper.getDistinctIP();
-//        List<Future<TMonitorResult>> futureList = new ArrayList<>(48);
         List<TMonitorResult> dataList = new ArrayList<>(48);
-//        for (TMonitorResult monitor : monitorList) {
-//            OnlineCheckThread thread = new OnlineCheckThread(monitor, checkPointUtil, times);
-//            Future<TMonitorResult> future = executorService.submit(thread);
-//            futureList.add(future);
-//        }
-//        for (Future<TMonitorResult> future : futureList) {
-//            dataList.add(future.get()); // get鏂规硶浼氶樆濉烇紝鐭ラ亾鎷垮埌缁撴灉鎵嶇户缁墽琛宖or
-//        }
         Integer time = times;
         List<CompletableFuture<TMonitorResult>> futureList = monitorList.stream()
                 .map(monitor -> CompletableFuture.supplyAsync(() -> {
                             OnlineCheckThread thread = new OnlineCheckThread(monitor, checkPointUtil, time);
                             return thread.call(); // 鍋囪 OnlineCheckThread 瀹炵幇浜� Callable 鎺ュ彛
                         }, executorService)
-                        .orTimeout(30, TimeUnit.SECONDS)
+                        .orTimeout(60, TimeUnit.SECONDS)
+                        //鍑虹幇寮傚父
                         .exceptionally(ex -> {
                             if (ex instanceof TimeoutException) {
-                                log.error("浠诲姟鎵ц瓒呮椂:");
+                                log.error("浠诲姟鎵ц瓒呮椂:"+monitor.getIp());
                             } else {
-                                log.error("浠诲姟鎵ц寮傚父:" + ex);
+                                log.error("浠诲姟鎵ц寮傚父:"+monitor.getIp() + ex);
                             }
                             int checkTimes = 1;
                             int offLineTimes = 1;
-                            //TODO:BUG
                             Map<String, Object> map = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstant.ONLINE_KEY, monitor.getIp());
                             if (!CollectionUtils.isEmpty(map)) {
                                 checkTimes = (Integer) map.get("checkTimes") + 1;
                                 offLineTimes = (Integer) map.get("offLineTimes");
                             }
-                            monitor.setOnline(Boolean.FALSE);
+                            monitor.setPingOnline(Boolean.FALSE);
                             monitor.setCheckCount(checkTimes);
                             monitor.setOffLineCount(offLineTimes);
                             if (monitor.getOffLineCount() >= time) {
@@ -239,7 +231,7 @@
                 futureList.toArray(new CompletableFuture[0])
         );
         try {
-            allOf.get(35, TimeUnit.SECONDS); // 缁欎簣棰濆鐨�5绉掓潵鏀堕泦缁撴灉
+            allOf.get(60, TimeUnit.SECONDS); // 缁欎簣棰濆鐨�5绉掓潵鏀堕泦缁撴灉
         } catch (TimeoutException e) {
             log.warn("閮ㄥ垎浠诲姟鏈湪鎸囧畾鏃堕棿鍐呭畬鎴�");
         } catch (Exception e2){
@@ -248,26 +240,18 @@
 
         dataList = futureList.stream()
                 .map(CompletableFuture::join)
-                .filter(result -> result != null)
+                .filter(Objects::nonNull)
                 .collect(Collectors.toList());
-        // 鏇存柊point琛ㄧ殑鍦ㄧ嚎鏍囪瘑
+        //绛涢�夊嚭ping绂荤嚎鐨勮澶囷紝鏇存敼鏁版嵁搴撲负绂荤嚎
         Date now = new Date();
-        List<UpdateOnlineVO> willUpdateList = dataList.stream().map(item -> {
+        List<UpdateOnlineVO> willUpdateList = dataList.stream().filter(result->!result.getPingOnline()).map(item -> {
             UpdateOnlineVO vo = new UpdateOnlineVO();
-            vo.setOnline(item.getOnline());
+            vo.setOnline(ApiConstants.UY_OnlineSite_Offline);
             vo.setIp(item.getIp());
             vo.setUpdateTime(now);
             return vo;
         }).collect(Collectors.toList());
         monitorMapper.updateOnline(willUpdateList);
-        // 宸ュ崟
-        List<WorkOrder> workOrderList = dataList.stream()
-                .filter(item -> Objects.nonNull(item.getWorkOrder()))
-                .map(TMonitorResult::getWorkOrder)
-                .collect(Collectors.toList());
-        if (!CollectionUtils.isEmpty(workOrderList)) {
-            workOrderService.innerAddWorkOrder(workOrderList);
-        }
         //瀛樻斁鍒癿ongo
         if (!CollectionUtils.isEmpty(dataList)) {
             //濡傛灉瀛樺湪涔嬪墠鐨勬暟鎹厛鍒犻櫎
@@ -276,10 +260,18 @@
             //瀛樻斁鍦╩ongo涓�
             mongoTemplate.insertAll(dataList);
         }
+        //宸ュ崟
+        List<WorkOrder> workOrderList = dataList.stream()
+                .filter(item -> Objects.nonNull(item.getWorkOrder()))
+                .map(TMonitorResult::getWorkOrder)
+                .collect(Collectors.toList());
+        if (!CollectionUtils.isEmpty(workOrderList)) {
+            workOrderService.innerAddWorkOrder(workOrderList);
+        }
         log.info("鐐逛綅鍦ㄧ嚎鐩戞祴瀹屾垚");
     }
 
-    //锛堝純鐢級鐐逛綅鍦ㄧ嚎鐜�
+    //鐐逛綅鍦ㄧ嚎鐜囷紙浼樹簯锛�
     public void videoOnlineTask() {
         //瑙嗛鍥惧儚璐ㄩ噺
         log.info("寮�濮嬫墽琛岀偣浣嶅湪绾挎暟鎹悓姝�");
@@ -301,10 +293,28 @@
                         Query query = new Query(Criteria
                                 .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
                         DeleteResult result = mongoTemplate.remove(query, VideoOnlineResult.class);
+                        //鎵撴爣绛�
+                        records.forEach(item -> {
+                            if (Objects.nonNull(item.getDeviceId())) {
+                                item.setNo(item.getDeviceId());
+                            }
+                        });
+                        pointService.setDeviceTagByGB(records);
                         //瀛樻斁鍦╩ongo涓�
                         mongoTemplate.insertAll(records);
-                        // 宸ュ崟鐢熸垚
-                        uyErrorTypeCheckService.videoOnlineCheck(records);
+                        //鏇存柊point琛ㄥ湪绾跨姸鎬�
+                        Date now = new Date();
+                        List<UpdateOnlineVO> willUpdateList = records.stream().map(item -> {
+                            UpdateOnlineVO vo = new UpdateOnlineVO();
+                            vo.setOnline(item.getStatus());
+                            vo.setIp(item.getIpAddr());
+                            vo.setUpdateTime(now);
+                            return vo;
+                        }).collect(Collectors.toList());
+                        monitorMapper.updateOnline(willUpdateList);
+                        //绂荤嚎鐢熸垚宸ュ崟
+                        List<VideoOnlineResult> workOrders = records.stream().filter(item -> ApiConstants.UY_OnlineSite_Offline.equals(item.getStatus())).collect(Collectors.toList());
+                        uyErrorTypeCheckService.videoOnlineCheck(workOrders);
                     } else {
                         log.error("鐐逛綅鍦ㄧ嚎缁撴灉鏁版嵁涓虹┖{}", data);
                     }
@@ -349,11 +359,12 @@
                             item.setNo(item.getDeviceId());
                         }
                     });
+                    //鎵撴爣绛�
                     pointService.setDeviceTagByGB(records);
                     //瀛樻斁鍦╩ongo涓�
                     mongoTemplate.insertAll(records);
-                    // 宸ュ崟鐢熸垚
-                    uyErrorTypeCheckService.recordMetaDSumCheck(records);
+//                    // 宸ュ崟鐢熸垚
+//                    uyErrorTypeCheckService.recordMetaDSumCheck(records);
                 }
             } else {
                 log.error("褰曞儚鍙敤鏁版嵁涓虹┖{}", jsonObject);

--
Gitblit v1.8.0