From b08492fcb6706124bef6e86cd6914c8eba54599a Mon Sep 17 00:00:00 2001
From: zhangnaisong <2434969829@qq.com>
Date: 星期五, 02 二月 2024 16:14:18 +0800
Subject: [PATCH] 三一车辆追踪加入启动即推送提交
---
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 50 insertions(+), 7 deletions(-)
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java
index 8df1d76..b2642f3 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java
@@ -934,15 +934,22 @@
@Override
public Results chaseCarByCarId(String usersId, String carId, String cycle) {
+ String sessionId = "";
+ for(String key : ONLINE_USER_SESSIONS.keySet()){
+ if(key.startsWith(usersId + "_")){
+ sessionId = key;
+ }
+ }
+ if(sessionId.equals("")){//娌℃湁session灏辫繑鍥炲け璐�
+ return Results.error("杩借釜澶辫触");
+ }
try {
- /*Map<String,Map<String,Object>> map = new HashMap();
- map.put(carId,new HashMap());
- PositionContainer.getUserPositionMap().put(usersId,map);*/
if (cycle.equals("0")) {
if (userCarTimerMap.get(usersId) != null) {
userCarTimerMap.get(usersId).cancel();
userCarTimerMap.remove(usersId);
PositionContainer.getUserPositionMap().remove(usersId);
+ System.out.println("鍋滄杩借釜");
}
return Results.succeed("鍋滄杩借釜");
} else {
@@ -953,8 +960,17 @@
Map<String, Map<String, Object>> map = new HashMap();
map.put(carId, new HashMap());
PositionContainer.getUserPositionMap().put(usersId, map);
+ Map<String, Object> position = PositionContainer.getCarPositionMap().get(carId);//鏌ヨ褰撳墠杞﹁締浣嶇疆
+ if (position != null) {
+ if (position.size() != 0) {
+ Map<String, Map<String, Object>> data = new HashMap();
+ data.put("31000", position);
+ WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(sessionId), JSON.toJSONString(data));
+ }
+ }
+
Date date = new Date();
- Timer carPositionTimer = new Timer();//瀹氭椂鎺ㄩ�佸疄鏃朵綅缃�
+ Timer carPositionTimer = new Timer(sessionId);//瀹氭椂鎺ㄩ�佸疄鏃朵綅缃�
TimerTask carPositionTask = new TimerTask() {
@Override
public void run() {
@@ -963,7 +979,16 @@
if (position.size() != 0) {
Map<String, Map<String, Object>> data = new HashMap();
data.put("31000", position);
- WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(usersId), JSON.toJSONString(data));
+ String sessionId = Thread.currentThread().getName();
+ if(ONLINE_USER_SESSIONS.get(sessionId) == null){//鐢ㄦ埛绂荤嚎閲婃斁璧勬簮
+ if (userCarTimerMap.get(usersId) != null) {
+ userCarTimerMap.get(usersId).cancel();
+ userCarTimerMap.remove(usersId);
+ PositionContainer.getUserPositionMap().remove(usersId);
+ System.out.println("鐢ㄦ埛绂荤嚎锛屽仠姝㈣拷韪�");
+ }
+ }
+ WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(sessionId), JSON.toJSONString(data));
}
}
}
@@ -975,8 +1000,17 @@
Map<String, Map<String, Object>> map = new HashMap();
map.put(carId, new HashMap());
PositionContainer.getUserPositionMap().put(usersId, map);
+ Map<String, Object> position = PositionContainer.getCarPositionMap().get(carId);//鏌ヨ褰撳墠杞﹁締浣嶇疆
+ if (position != null) {
+ if (position.size() != 0) {
+ Map<String, Map<String, Object>> data = new HashMap();
+ data.put("31000", position);
+ WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(sessionId), JSON.toJSONString(data));
+ }
+ }
+
Date date = new Date();
- Timer carPositionTimer = new Timer();//瀹氭椂鎺ㄩ�佸疄鏃朵綅缃�
+ Timer carPositionTimer = new Timer(sessionId);//瀹氭椂鎺ㄩ�佸疄鏃朵綅缃�
TimerTask carPositionTask = new TimerTask() {
@Override
public void run() {
@@ -985,7 +1019,16 @@
if (position.size() != 0) {
Map<String, Map<String, Object>> data = new HashMap();
data.put("31000", position);
- WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(usersId), JSON.toJSONString(data));
+ String sessionId = Thread.currentThread().getName();
+ if(ONLINE_USER_SESSIONS.get(sessionId) == null){//鐢ㄦ埛绂荤嚎閲婃斁璧勬簮
+ if (userCarTimerMap.get(usersId) != null) {
+ userCarTimerMap.get(usersId).cancel();
+ userCarTimerMap.remove(usersId);
+ PositionContainer.getUserPositionMap().remove(usersId);
+ System.out.println("鐢ㄦ埛绂荤嚎锛屽仠姝㈣拷韪�");
+ }
+ }
+ WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(sessionId), JSON.toJSONString(data));
}
}
}
--
Gitblit v1.9.3