zhangnaisong
2024-02-02 527f4fd86eafb17dea8b9589b269da531299a6e5
三一车辆追踪线程加入sessionId修改提交
已修改1个文件
39 ■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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 {
@@ -954,7 +961,7 @@
                    map.put(carId, new HashMap());
                    PositionContainer.getUserPositionMap().put(usersId, map);
                    Date date = new Date();
                    Timer carPositionTimer = new Timer();//定时推送实时位置
                    Timer carPositionTimer = new Timer(sessionId);//定时推送实时位置
                    TimerTask carPositionTask = new TimerTask() {
                        @Override
                        public void run() {
@@ -963,18 +970,13 @@
                                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 = "";
                                    for(String key : ONLINE_USER_SESSIONS.keySet()){
                                        if(key.startsWith(usersId + "_")){
                                            sessionId = key;
                                        }
                                    }
                                    if(sessionId.equals("")){//用户离线释放资源
                                    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));
@@ -990,7 +992,7 @@
                    map.put(carId, new HashMap());
                    PositionContainer.getUserPositionMap().put(usersId, map);
                    Date date = new Date();
                    Timer carPositionTimer = new Timer();//定时推送实时位置
                    Timer carPositionTimer = new Timer(sessionId);//定时推送实时位置
                    TimerTask carPositionTask = new TimerTask() {
                        @Override
                        public void run() {
@@ -999,18 +1001,13 @@
                                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 = "";
                                    for(String key : ONLINE_USER_SESSIONS.keySet()){
                                        if(key.startsWith(usersId + "_")){
                                            sessionId = key;
                                        }
                                    }
                                    if(sessionId.equals("")){//用户离线释放资源
                                    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));