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