From e94241fc70d1308ea88fec5b57e771c6ecad1cee Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期六, 29 七月 2023 10:37:57 +0800
Subject: [PATCH] 推送app位置优化在线离线

---
 ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java      |   10 +++--
 ard-work/src/main/java/com/ruoyi/utils/websocket/service/ChatServerEndpoint.java       |    8 ++--
 ard-work/src/main/resources/templates/test.html                                        |    2 
 ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPushService.java |   42 ++++++++++++++-------
 4 files changed, 39 insertions(+), 23 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPushService.java b/ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPushService.java
index 5fad187..1fe8209 100644
--- a/ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPushService.java
+++ b/ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPushService.java
@@ -26,11 +26,7 @@
     public static Map<String, List<ArdAppPosition>> tempDataMap = new HashMap<>();//涓存椂鏁版嵁 姣忎釜鐢ㄦ埛鍏宠仈
     public static Map<String, Timer> userTimerMap = new HashMap();//瀹氭椂鍣� 姣忎釜鐢ㄦ埛鍏宠仈
     public static Map<String, Timer> tempUserTimerMap = new HashMap();//涓存椂瀹氭椂鍣� 姣忎釜鐢ㄦ埛鍏宠仈
-    public static List<ArdAppPosition> initDataList;
-
-    static {
-        initDataList = getAppPositionList();
-    }
+//    public static List<ArdAppPosition> initDataList;
 
     //鍚姩鍏ㄥ眬瀹氭椂鍣�
     public static Timer startTimerTask(String userId, Integer period) {
@@ -39,9 +35,10 @@
             @Override
             public void run() {
                 List<ArdAppPosition> data = dataMap.get(userId);
-                if (data.size() > 0) {
+                List<ArdAppPosition> onlineData = isOnlie(data);
+                if (onlineData.size() > 0) {
                     Map newMap = new HashMap<>();
-                    newMap.put("50000", data);
+                    newMap.put("50000", onlineData);
                     WebSocketUtils.sendMessage(WebSocketUtils.ONLINE_USER_SESSIONS.get(userId), newMap);
                 }
             }
@@ -58,9 +55,10 @@
             public void run() {
                 //寰幆
                 List<ArdAppPosition> data = tempDataMap.get(userId);
-                if (data.size() > 0) {
+                List<ArdAppPosition> onlineData = isOnlie(data);
+                if (onlineData.size() > 0) {
                     Map newMap = new HashMap<>();
-                    newMap.put("50000", data);
+                    newMap.put("50000", onlineData);
                     WebSocketUtils.sendMessage(WebSocketUtils.ONLINE_USER_SESSIONS.get(userId), newMap);
                 }
             }
@@ -83,15 +81,31 @@
         ISysUserService sysUserService = SpringUtils.getBean(ISysUserService.class);
         //鑾峰彇鎵�鏈塧pp鐢ㄦ埛
         List<SysUser> list = sysUserService.selectAllAppUserList(new SysUser());
-        List<SysUser> onlineList = list.stream()
-                .filter(obj -> obj.getAppOnlineState().equals("1"))
-                .collect(Collectors.toList());
-        for (SysUser sysUser : onlineList) {
+//        List<SysUser> onlineList = list.stream()
+//                .filter(obj -> obj.getAppOnlineState().equals("1"))
+//                .collect(Collectors.toList());
+        for (SysUser sysUser : list) {
             IArdAppPositionService ardAppPositionService = SpringUtils.getBean(IArdAppPositionService.class);
             ArdAppPosition ardAppPosition = ardAppPositionService.selectLastArdAppPositionByUserId(sysUser.getUserId());
-            ArdAppPositions.add(ardAppPosition);
+            if (StringUtils.isNotNull(ardAppPosition)) {
+                ArdAppPositions.add(ardAppPosition);
+            }
         }
         return ArdAppPositions;
     }
 
+    public static List<ArdAppPosition> isOnlie(List<ArdAppPosition> data) {
+        List<ArdAppPosition> onlineList = new ArrayList<>();
+        if (data.size() > 0) {
+            for (ArdAppPosition ardAppPosition : data) {
+                ISysUserService sysUserService = SpringUtils.getBean(ISysUserService.class);
+                SysUser sysUser = sysUserService.selectUserById(ardAppPosition.getUserId());
+                if (sysUser.getAppOnlineState().equals("1")) {
+                    onlineList.add(ardAppPosition);
+                }
+            }
+        }
+        return onlineList;
+    }
+
 }
diff --git a/ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java b/ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java
index c19876b..765a95f 100644
--- a/ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java
@@ -285,10 +285,12 @@
     @Override
     public ArdAppTask selectNewArdAppTaskByUserId(String userId) {
         ArdAppTask ardAppTask = ardAppTaskMapper.selectNewArdAppTaskByUserId(userId);
-        ArdAppTaskDetail detail=new ArdAppTaskDetail();
-        detail.setViewFlag("1");
-        detail.setTaskId(ardAppTask.getId());
-        int i = ardAppTaskMapper.updateArdAppTaskDetailByTaskId(detail);
+        if(StringUtils.isNotNull(ardAppTask)) {
+            ArdAppTaskDetail detail = new ArdAppTaskDetail();
+            detail.setViewFlag("1");
+            detail.setTaskId(ardAppTask.getId());
+            int i = ardAppTaskMapper.updateArdAppTaskDetailByTaskId(detail);
+        }
         return ardAppTask;
     }
     /**
diff --git a/ard-work/src/main/java/com/ruoyi/utils/websocket/service/ChatServerEndpoint.java b/ard-work/src/main/java/com/ruoyi/utils/websocket/service/ChatServerEndpoint.java
index 6050250..b2f003f 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/websocket/service/ChatServerEndpoint.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/websocket/service/ChatServerEndpoint.java
@@ -59,7 +59,7 @@
             Boolean enabled = (Boolean) map.get("enabled");
             if (enabled) {
                 //鍚姩鍏ㄥ眬鎺ㄩ��
-                List<ArdAppPosition> newList = new ArrayList<>(AppPositionPushService.initDataList);
+                List<ArdAppPosition> newList = new ArrayList<>(AppPositionPushService.getAppPositionList());
                 AppPositionPushService.dataMap.put(userId, newList);
                 if (!AppPositionPushService.userTimerMap.containsKey(userId)) {
                     Timer timer = AppPositionPushService.startTimerTask(userId, 3000);
@@ -84,19 +84,19 @@
             Integer frequency = (Integer) map.get("frequency");
             String uId = (String) map.get("userId");
             if (frequency > 0) {
-                List<ArdAppPosition> List = AppPositionPushService.initDataList.stream()
+                List<ArdAppPosition> List = AppPositionPushService.getAppPositionList().stream()
                         .filter(obj -> !obj.getUserId().equals(uId))
                         .collect(Collectors.toList());//鍘婚櫎寮曞鍚庣殑list
                 AppPositionPushService.dataMap.put(userId,List);
 
-                List<ArdAppPosition> tempList = AppPositionPushService.initDataList.stream()
+                List<ArdAppPosition> tempList = AppPositionPushService.getAppPositionList().stream()
                         .filter(obj -> obj.getUserId().equals(uId))
                         .collect(Collectors.toList());//鑾峰彇寮曞鐨刲ist
                 AppPositionPushService.tempDataMap.put(userId, tempList);
                 Timer timer = AppPositionPushService.startTempTimerTask(userId, frequency);
                 AppPositionPushService.tempUserTimerMap.put(userId, timer);
             } else {
-                List<ArdAppPosition> newList = new ArrayList<>(AppPositionPushService.initDataList);
+                List<ArdAppPosition> newList = new ArrayList<>(AppPositionPushService.getAppPositionList());
                 AppPositionPushService.dataMap.put(userId, newList);
                 Timer timer = AppPositionPushService.tempUserTimerMap.get(userId);
                 AppPositionPushService.stopTimerTask(timer);
diff --git a/ard-work/src/main/resources/templates/test.html b/ard-work/src/main/resources/templates/test.html
index fbe56d5..a9acd06 100644
--- a/ard-work/src/main/resources/templates/test.html
+++ b/ard-work/src/main/resources/templates/test.html
@@ -782,7 +782,7 @@
             } else if (camera.type == "dh") {
                 realViewDh("127.0.0.1", ID, camera.username, camera.password, camera.ipaddr, camera.port);
             } else {
-                realViewHik("192.168.1.15", ID, camera.username, camera.password, camera.ipaddr, camera.port);
+                realViewHik("127.0.0.1", ID, camera.username, camera.password, camera.ipaddr, camera.port);
             }
         }
     });

--
Gitblit v1.9.3