‘liusuyi’
2023-07-27 f1e1115bd10c15dec59f8770538ad1642fb3a2e8
ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPush.java
@@ -33,15 +33,15 @@
    //app位置上传
    public static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(20);
    public static final Map<Session, ScheduledFuture<?>> taskMap = new HashMap<>();
    public static final Map<String, List<ArdAppPosition>> defaultDataMap = new HashMap<>();//默认会话发送数据map
    public static final Map<String, List<ArdAppPosition>> initDataMap = new HashMap<>();//每个会话初始发送数据map
    // 初始定时任务,根据用户设置的频率定期推送实时位置信息
    public  static void initPushTask(String userId,Session session, int pushFrequency) {
        defaultDataMap.put(userId,getAppPositionList());
        initDataMap.put(userId, getAppPositionList());
        // 启动新的定时任务
        if (pushFrequency > 0) {
            scheduler.scheduleAtFixedRate(() -> {
                List<ArdAppPosition> appPositionList = defaultDataMap.get(userId);
                List<ArdAppPosition> appPositionList = initDataMap.get(userId);
                Map newMap = new HashMap<>();
                newMap.put("50000", appPositionList);
                WebSocketUtils.sendMessage(session, newMap);
@@ -55,13 +55,7 @@
        stopLocationPushTask(session);
        // 启动新的定时任务
        if (pushFrequency > 0) {
            ScheduledFuture<?> task = ScheduledFutureTask(session, userId,guideUserId, pushFrequency);
            taskMap.put(session, task); // 存储新的定时任务
        }
    }
    public static ScheduledFuture<?> ScheduledFutureTask(Session session, String userId,String guideUserId, Integer pushFrequency) {
        return scheduler.scheduleAtFixedRate(() -> {
            ScheduledFuture<?> task = scheduler.scheduleAtFixedRate(() -> {
            List<ArdAppPosition> appPositionList = getAppPositionList().stream()
                    .filter(obj -> obj.getUserId().equals(guideUserId))
                    .collect(Collectors.toList());
@@ -69,6 +63,8 @@
            newMap.put("50000", appPositionList);
            WebSocketUtils.sendMessage(session, newMap);
        }, 0, pushFrequency, TimeUnit.MILLISECONDS);
            taskMap.put(session, task); // 存储新的定时任务
        }
    }
    //取消定时任务