From 083ac7646ef2ab4a2614678b158a3dce1482e75c Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期四, 05 十二月 2024 02:32:13 +0800
Subject: [PATCH] 省厅标签拆分

---
 ycl-server/src/main/java/com/ycl/task/UYTask.java |  108 +++++++++++++++++++++++++++++++++---------------------
 1 files changed, 66 insertions(+), 42 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 0256642..ebc9afb 100644
--- a/ycl-server/src/main/java/com/ycl/task/UYTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.mongodb.client.result.DeleteResult;
 import com.ycl.feign.UYClient;
+import com.ycl.platform.domain.entity.TMonitor;
 import com.ycl.platform.domain.entity.WorkOrder;
 import com.ycl.platform.domain.param.UY.ImageDetectionParam;
 import com.ycl.platform.domain.param.UY.MonitorQualifyParam;
@@ -24,6 +25,7 @@
 import com.ycl.utils.CheckPointUtil;
 import com.ycl.utils.DateUtils;
 import constant.ApiConstants;
+import constant.CheckConstants;
 import constant.RedisConstant;
 import enumeration.ErrorType;
 import enumeration.general.WorkOrderStatusEnum;
@@ -101,7 +103,7 @@
                                 item.setNo(item.getDeviceId());
                             }
                         });
-                        pointService.setDeviceTagByGB(records);
+                        pointService.setDeviceTagByGB(records, CheckConstants.Rule_Category_Video);
                         //瀛樻斁鍦╩ongo涓�
                         mongoTemplate.insertAll(records);
                         // 宸ュ崟鐢熸垚
@@ -150,7 +152,8 @@
                                 item.setNo(item.getSerialNumber().getShowValue());
                             }
                         });
-                        pointService.setDeviceTagByGB(records);
+                        //TODO:浼樹簯鐨勪竴鏈轰竴妗e寘鍚簡瑙嗛銆佽溅杈嗐�佷汉鑴� 鏄湁涓�绉嶆槸鐪佸巺灏辩畻鐪佸巺鍚�
+                        pointService.setDeviceTagByGB(records,CheckConstants.Rule_Category_Video);
                         pointService.setNew(records);
                         //瀛樻斁鍦╩ongo涓�
                         mongoTemplate.insertAll(records);
@@ -174,8 +177,9 @@
 
     /**
      * 鐐逛綅鍦ㄧ嚎PING妫�娴�
+     * 浠诲姟浼氬厛鎵ц涓�娆′紭浜戝悓姝ワ紝鐒跺悗鎵цping妫�娴�
+     * online瀛楁鏉ヨ嚜浜庝紭浜戯紝pingOnline涓轰富鍔╬ing妫�娴嬬殑銆傚瓨鍏ongo缁欐暟鎹腑蹇冩煡闃�
      */
-    //TODO锛氱偣浣嶅湪绾匡紙淇敼閫昏緫鍙拡瀵瑰伐鍗曪級
     public void pointOnline() throws ExecutionException, InterruptedException {
         log.info("寮�濮嬫娴嬬偣浣嶅湪绾�");
         Integer times = 2;
@@ -188,6 +192,8 @@
             log.error("璇烽厤缃绾挎鏁帮紝姝ゆ璁剧疆涓洪粯璁ゅ��2");
         }
         // 鍏堟煡鍑鸿澶嘔P闆嗗悎,鍓旈櫎鎺夊湪绾挎儏鍐垫槸鏈煡鐨�,骞朵笖鍙娴嬫鍦ㄨ�冩牳鐨勮澶囬伩鍏嶅浣欏伐鍗�
+        //TODO锛氶渶瑕佹妸娴峰悍鍜屼紭浜戠殑浠诲姟鐨勬椂闂磋皟鍒皃ing涔嬪墠
+        //TODO锛氳繖閲岄渶瑕佸瓨涓変釜鏍囩鍚�
         List<TMonitorResult> monitorList = monitorMapper.getDistinctIP();
         //琛ュ厖閿欒鏃堕棿鐐�
         Query onlineQuery = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
@@ -195,7 +201,7 @@
         for (TMonitorResult result : monitorList) {
             TMonitorResult mongoData = mongoMap.get(result.getNo());
             if(mongoData!=null){
-                result.setOffLineTime(mongoData.getOffLineTime());
+                result.setOffLineTimeStr(mongoData.getOffLineTimeStr());
             }
         }
         List<TMonitorResult> dataList = new ArrayList<>(48);
@@ -206,37 +212,44 @@
                             return thread.call(); // 鍋囪 OnlineCheckThread 瀹炵幇浜� Callable 鎺ュ彛
                         }, executorService)
                         .orTimeout(60, TimeUnit.SECONDS)
-                        //鍑虹幇寮傚父
                         .exceptionally(ex -> {
                             if (ex instanceof TimeoutException) {
                                 log.error("浠诲姟鎵ц瓒呮椂:"+monitor.getIp());
                             } else {
-                                log.error("浠诲姟鎵ц寮傚父:"+monitor.getIp() + ex);
+                                log.error("浠诲姟鎵ц寮傚父:"+monitor.getIp() +ex);
+                                ex.printStackTrace();
                             }
-                            int checkTimes = 1;
-                            int offLineTimes = 1;
-                            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.setPingOnline(Boolean.FALSE);
-                            monitor.setCheckCount(checkTimes);
-                            monitor.setOffLineCount(offLineTimes);
-                            List<Date> offLineTime = monitor.getOffLineTime();
-                            if(CollectionUtils.isEmpty(offLineTime)) offLineTime = new ArrayList<>();
-                            offLineTime.add(new Date());
-                            monitor.setOffLineTime(offLineTime);
-                            if (monitor.getOffLineCount() >= time) {
-                                WorkOrder workOrder = new WorkOrder();
-                                workOrder.setSerialNumber(monitor.getNo());
-                                List<String> errList = new ArrayList<>();
-                                errList.add(ErrorType.DEVICE_OFFLINE.getValue());
-                                workOrder.setErrorTypeList(errList);
-                                workOrder.setStatus(WorkOrderStatusEnum.DISTRIBUTED);
-                                monitor.setWorkOrder(workOrder);
-                            }
-                            return monitor; // 杩斿洖澶辫触鐨勭粨鏋�
+                            return null;
+//                            int checkTimes = 1;
+//                            int offLineTimes = 1;
+//                            Map<String, Object> map = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstant.ONLINE_KEY, monitor.getNo());
+//                            if (!CollectionUtils.isEmpty(map)) {
+//                                checkTimes = (Integer) map.get("checkTimes") + 1;
+//                                offLineTimes = (Integer) map.get("offLineTimes");
+//                            }else {
+//                                map = new HashMap<>();
+//                            }
+//                            monitor.setPingOnline(Boolean.FALSE);
+//                            monitor.setCheckCount(checkTimes);
+//                            monitor.setOffLineCount(offLineTimes);
+//                            List<Date> offLineTime = monitor.getOffLineTime();
+//                            if(CollectionUtils.isEmpty(offLineTime)) offLineTime = new ArrayList<>();
+//                            offLineTime.add(new Date());
+//                            monitor.setOffLineTime(offLineTime);
+//                            if (monitor.getOffLineCount() >= time) {
+//                                WorkOrder workOrder = new WorkOrder();
+//                                workOrder.setSerialNumber(monitor.getNo());
+//                                List<String> errList = new ArrayList<>();
+//                                errList.add(ErrorType.DEVICE_OFFLINE.getValue());
+//                                workOrder.setErrorTypeList(errList);
+//                                workOrder.setStatus(WorkOrderStatusEnum.DISTRIBUTED);
+//                                monitor.setWorkOrder(workOrder);
+//                            }
+//                            map.put("checkTimes", checkTimes);
+//                            map.put("offLineTimes", offLineTimes);
+//                            redisTemplate.opsForHash().put(RedisConstant.ONLINE_KEY, monitor.getNo(), map);
+//                            return monitor; // 杩斿洖澶辫触鐨勭粨鏋�
+
                         }))
                 .collect(Collectors.toList());
 
@@ -247,7 +260,7 @@
         try {
             allOf.get(60, TimeUnit.SECONDS); // 缁欎簣棰濆鐨�5绉掓潵鏀堕泦缁撴灉
         } catch (TimeoutException e) {
-            log.warn("閮ㄥ垎浠诲姟鏈湪鎸囧畾鏃堕棿鍐呭畬鎴�");
+            log.error("閮ㄥ垎浠诲姟鏈湪鎸囧畾鏃堕棿鍐呭畬鎴�");
         } catch (Exception e2){
             log.error("鏁版嵁鏀堕泦寮傚父"+e2);
         }
@@ -256,16 +269,27 @@
                 .map(CompletableFuture::join)
                 .filter(Objects::nonNull)
                 .collect(Collectors.toList());
-        //绛涢�夊嚭ping绂荤嚎鐨勮澶囷紝鏇存敼鏁版嵁搴撲负绂荤嚎
+
         Date now = new Date();
-        List<UpdateOnlineVO> willUpdateList = dataList.stream().filter(result->!result.getPingOnline()).map(item -> {
-            UpdateOnlineVO vo = new UpdateOnlineVO();
-            vo.setOnline(ApiConstants.UY_OnlineSite_Offline);
-            vo.setIp(item.getIp());
-            vo.setUpdateTime(now);
-            return vo;
-        }).collect(Collectors.toList());
-        monitorMapper.updateOnline(willUpdateList);
+        List<String> offLineList = new ArrayList<>();
+        List<String> onLineList = new ArrayList<>();
+        //鏌ュ嚭鏁版嵁搴撶函杞﹁締鎴栫函浜鸿劯璁惧
+        List<String> serialNumbers = monitorMapper.selectCarOrFace().stream().map(TMonitor::getSerialNumber).collect(Collectors.toList());
+        dataList.forEach(item->{
+            //鏇存柊绾溅杈嗘垨绾汉鑴哥殑璁惧鐨勫湪绾跨姸鎬�(杩欓儴鍒嗚澶囦笉浼氭媺娴佹娴�)
+            if(item.getPingOnline() && !CollectionUtils.isEmpty(serialNumbers) && serialNumbers.contains(item.getNo())) {
+                onLineList.add(item.getIp());
+            } else if(!item.getPingOnline()) {
+                //绛涢�夊嚭ping绂荤嚎鐨勮澶囷紝鏇存敼鏁版嵁搴撲负绂荤嚎
+                offLineList.add(item.getIp());
+            }
+        });
+        if(!CollectionUtils.isEmpty(offLineList)) {
+            monitorMapper.batchUpdateOnline(offLineList, now, ApiConstants.UY_OnlineSite_Offline);
+        }
+        if(!CollectionUtils.isEmpty(onLineList)) {
+            monitorMapper.batchUpdateOnline(onLineList, now, ApiConstants.UY_OnlineSite_Online);
+        }
         //瀛樻斁鍒癿ongo
         if (!CollectionUtils.isEmpty(dataList)) {
             //濡傛灉瀛樺湪涔嬪墠鐨勬暟鎹厛鍒犻櫎
@@ -320,7 +344,7 @@
                                 item.setNo(item.getDeviceId());
                             }
                         });
-                        pointService.setDeviceTagByGB(records);
+                        pointService.setDeviceTagByGB(records,CheckConstants.Rule_Category_Video);
                         //瀛樻斁鍦╩ongo涓�
                         mongoTemplate.insertAll(records);
                         //鏇存柊point琛ㄥ湪绾跨姸鎬�
@@ -387,7 +411,7 @@
                         }
                     });
                     //鎵撴爣绛�
-                    pointService.setDeviceTagByGB(records);
+                    pointService.setDeviceTagByGB(records,CheckConstants.Rule_Category_Video);
                     //瀛樻斁鍦╩ongo涓�
                     mongoTemplate.insertAll(records);
 //                    // 宸ュ崟鐢熸垚

--
Gitblit v1.8.0