| | |
| | | import com.ruoyi.system.service.ISysUserService; |
| | | |
| | | import javax.websocket.Session; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | |
| | | //app位置上传 |
| | | public static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(20); |
| | | public static final Map<Session, ScheduledFuture<?>> taskMap = new HashMap<>(); |
| | | public static final Map<Session, Map> defaultDataMap = new HashMap<>();//默认会话发送数据map |
| | | public static final Map<Session, Map<String, ArdAppPosition>> defaultDataMap = new HashMap<>();//默认会话发送数据map |
| | | |
| | | // 初始定时任务,根据用户设置的频率定期推送实时位置信息 |
| | | public static void initPushTask(Session session, int pushFrequency) { |
| | | // 启动新的定时任务 |
| | | if (pushFrequency > 0) { |
| | | scheduler.scheduleAtFixedRate(() -> { |
| | | Map map = defaultDataMap.get(session); |
| | | WebSocketUtils.sendMessage(session, map); |
| | | Map<String, ArdAppPosition> map = defaultDataMap.get(session); |
| | | Map newMap = new HashMap<>(); |
| | | List<ArdAppPosition> positionList = new ArrayList<>(); |
| | | for (String key : map.keySet()) { |
| | | positionList.add(map.get(key)); |
| | | } |
| | | newMap.put("50000", positionList); |
| | | WebSocketUtils.sendMessage(session, newMap); |
| | | }, 0, pushFrequency, TimeUnit.MILLISECONDS); |
| | | } |
| | | } |
| | | |
| | | // 新的定时任务,根据用户设置的频率定期推送实时位置信息 |
| | | public static void startLocationPushTask(String userId, Session session, int pushFrequency) { |
| | | // 取消之前设置的定时任务 |
| | |
| | | taskMap.put(session, task); // 存储新的定时任务 |
| | | } |
| | | } |
| | | |
| | | public static ScheduledFuture<?> ScheduledFutureTask(Session session, String userId, Integer pushFrequency) { |
| | | return scheduler.scheduleAtFixedRate(() -> { |
| | | ArdAppPosition ardAppPosition = getAppPositionList().get(userId); |
| | | Map<String, ArdAppPosition> DataMap = new HashMap<>(); |
| | | DataMap.put(userId,ardAppPosition); |
| | | WebSocketUtils.sendMessage(session, DataMap); |
| | | DataMap.put(userId, ardAppPosition); |
| | | Map newMap = new HashMap<>(); |
| | | List<ArdAppPosition> positionList = new ArrayList<>(); |
| | | for (String key : DataMap.keySet()) { |
| | | positionList.add(DataMap.get(key)); |
| | | } |
| | | newMap.put("50000", positionList); |
| | | WebSocketUtils.sendMessage(session, newMap); |
| | | }, 0, pushFrequency, TimeUnit.MILLISECONDS); |
| | | } |
| | | |
| | | //取消定时任务 |
| | | public static void stopLocationPushTask(Session session) { |
| | | ScheduledFuture<?> scheduledTask = taskMap.get(session); |
| | |
| | | scheduledTask.cancel(false); |
| | | } |
| | | } |
| | | |
| | | //查询所有app用户的位置信息 |
| | | public static Map<String,ArdAppPosition> getAppPositionList() |
| | | { |
| | | Map<String,ArdAppPosition> userMap=new HashMap<>(); |
| | | public static Map<String, ArdAppPosition> getAppPositionList() { |
| | | Map<String, ArdAppPosition> userMap = new HashMap<>(); |
| | | ISysUserService sysUserService = SpringUtils.getBean(ISysUserService.class); |
| | | //获取所有app用户 |
| | | List<SysUser> list = sysUserService.selectAppUserListNoDataScope(new SysUser()); |
| | | for(SysUser sysUser:list) |
| | | { |
| | | List<SysUser> list = sysUserService.selectAllocatedList(new SysUser()); |
| | | for (SysUser sysUser : list) { |
| | | IArdAppPositionService ardAppPositionService = SpringUtils.getBean(IArdAppPositionService.class); |
| | | ArdAppPosition ardAppPosition = ardAppPositionService.selectLastArdAppPositionByUserId(sysUser.getUserId()); |
| | | userMap.put(sysUser.getUserId(),ardAppPosition); |
| | | userMap.put(sysUser.getUserId(), ardAppPosition); |
| | | } |
| | | |
| | | return userMap; |