Administrator
2023-08-01 79b466a6b77ed62f2275f97c5812a26da27ca489
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java
@@ -395,6 +395,13 @@
                }
            }
        }
        for(String userId : userCarTimerMap.keySet()){//用户离线后将车辆追踪资源释放
            if(!ONLINE_USER_SESSIONS.keySet().contains(userId)){
                userCarTimerMap.get(userId).cancel();
                userCarTimerMap.remove(userId);
                PositionContainer.getUserPositionMap().remove(userId);
            }
        }
    }
    @Override
@@ -699,16 +706,10 @@
    @Override
    public Results chaseCarByCarId(String usersId, String carId, String cycle) {
        if(ONLINE_USER_SESSIONS.get(usersId) == null){
            userCarTimerMap.get(usersId).cancel();
            userCarTimerMap.remove(usersId);
            PositionContainer.getUserPositionMap().remove(usersId);
            return Results.succeed("停止追踪");
        }
        try{
            Map<String,Map<String,Object>> map = new HashMap();
            /*Map<String,Map<String,Object>> map = new HashMap();
            map.put(carId,new HashMap());
            PositionContainer.getUserPositionMap().put(usersId,map);
            PositionContainer.getUserPositionMap().put(usersId,map);*/
            if(cycle.equals("0")){
                if(userCarTimerMap.get(usersId) != null){
                    userCarTimerMap.get(usersId).cancel();
@@ -721,30 +722,44 @@
                    userCarTimerMap.get(usersId).cancel();
                    userCarTimerMap.remove(usersId);
                    PositionContainer.getUserPositionMap().remove(usersId);
                    Map<String,Map<String,Object>> map = new HashMap();
                    map.put(carId,new HashMap());
                    PositionContainer.getUserPositionMap().put(usersId,map);
                    Date date = new Date();
                    Timer carPositionTimer = new Timer();//定时推送实时位置
                    TimerTask carPositionTask =new TimerTask(){
                        @Override
                        public void run(){
                            Map<String,Object> position = PositionContainer.getUserPositionMap().get(usersId).get(carId);
                            Map<String,Map<String,Object>> data = new HashMap();
                            data.put("31000",position);
                            WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(usersId), JSON.toJSONString(data));
                            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(usersId), JSON.toJSONString(data));
                                }
                            }
                        }
                    };
                    carPositionTimer.scheduleAtFixedRate(carPositionTask,date,Integer.parseInt(cycle));//启用
                    this.userCarTimerMap.put(usersId,carPositionTimer);
                    return Results.succeed("开始追踪");
                }else{
                    Map<String,Map<String,Object>> map = new HashMap();
                    map.put(carId,new HashMap());
                    PositionContainer.getUserPositionMap().put(usersId,map);
                    Date date = new Date();
                    Timer carPositionTimer = new Timer();//定时推送实时位置
                    TimerTask carPositionTask =new TimerTask(){
                        @Override
                        public void run(){
                            Map<String,Object> position = PositionContainer.getUserPositionMap().get(usersId).get(carId);
                            Map<String,Map<String,Object>> data = new HashMap();
                            data.put("31000",position);
                            WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(usersId), JSON.toJSONString(data));
                            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(usersId), JSON.toJSONString(data));
                                }
                            }
                        }
                    };
                    carPositionTimer.scheduleAtFixedRate(carPositionTask,date,Integer.parseInt(cycle));//启用