‘liusuyi’
2023-07-29 e94241fc70d1308ea88fec5b57e771c6ecad1cee
推送app位置优化在线离线
已修改4个文件
62 ■■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPushService.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/utils/websocket/service/ChatServerEndpoint.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/resources/templates/test.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPushService.java
@@ -26,11 +26,7 @@
    public static Map<String, List<ArdAppPosition>> tempDataMap = new HashMap<>();//临时数据 每个用户关联
    public static Map<String, Timer> userTimerMap = new HashMap();//定时器 每个用户关联
    public static Map<String, Timer> tempUserTimerMap = new HashMap();//临时定时器 每个用户关联
    public static List<ArdAppPosition> initDataList;
    static {
        initDataList = getAppPositionList();
    }
//    public static List<ArdAppPosition> initDataList;
    //启动全局定时器
    public static Timer startTimerTask(String userId, Integer period) {
@@ -39,9 +35,10 @@
            @Override
            public void run() {
                List<ArdAppPosition> data = dataMap.get(userId);
                if (data.size() > 0) {
                List<ArdAppPosition> onlineData = isOnlie(data);
                if (onlineData.size() > 0) {
                    Map newMap = new HashMap<>();
                    newMap.put("50000", data);
                    newMap.put("50000", onlineData);
                    WebSocketUtils.sendMessage(WebSocketUtils.ONLINE_USER_SESSIONS.get(userId), newMap);
                }
            }
@@ -58,9 +55,10 @@
            public void run() {
                //循环
                List<ArdAppPosition> data = tempDataMap.get(userId);
                if (data.size() > 0) {
                List<ArdAppPosition> onlineData = isOnlie(data);
                if (onlineData.size() > 0) {
                    Map newMap = new HashMap<>();
                    newMap.put("50000", data);
                    newMap.put("50000", onlineData);
                    WebSocketUtils.sendMessage(WebSocketUtils.ONLINE_USER_SESSIONS.get(userId), newMap);
                }
            }
@@ -83,15 +81,31 @@
        ISysUserService sysUserService = SpringUtils.getBean(ISysUserService.class);
        //获取所有app用户
        List<SysUser> list = sysUserService.selectAllAppUserList(new SysUser());
        List<SysUser> onlineList = list.stream()
                .filter(obj -> obj.getAppOnlineState().equals("1"))
                .collect(Collectors.toList());
        for (SysUser sysUser : onlineList) {
//        List<SysUser> onlineList = list.stream()
//                .filter(obj -> obj.getAppOnlineState().equals("1"))
//                .collect(Collectors.toList());
        for (SysUser sysUser : list) {
            IArdAppPositionService ardAppPositionService = SpringUtils.getBean(IArdAppPositionService.class);
            ArdAppPosition ardAppPosition = ardAppPositionService.selectLastArdAppPositionByUserId(sysUser.getUserId());
            ArdAppPositions.add(ardAppPosition);
            if (StringUtils.isNotNull(ardAppPosition)) {
                ArdAppPositions.add(ardAppPosition);
            }
        }
        return ArdAppPositions;
    }
    public static List<ArdAppPosition> isOnlie(List<ArdAppPosition> data) {
        List<ArdAppPosition> onlineList = new ArrayList<>();
        if (data.size() > 0) {
            for (ArdAppPosition ardAppPosition : data) {
                ISysUserService sysUserService = SpringUtils.getBean(ISysUserService.class);
                SysUser sysUser = sysUserService.selectUserById(ardAppPosition.getUserId());
                if (sysUser.getAppOnlineState().equals("1")) {
                    onlineList.add(ardAppPosition);
                }
            }
        }
        return onlineList;
    }
}
ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java
@@ -285,10 +285,12 @@
    @Override
    public ArdAppTask selectNewArdAppTaskByUserId(String userId) {
        ArdAppTask ardAppTask = ardAppTaskMapper.selectNewArdAppTaskByUserId(userId);
        ArdAppTaskDetail detail=new ArdAppTaskDetail();
        detail.setViewFlag("1");
        detail.setTaskId(ardAppTask.getId());
        int i = ardAppTaskMapper.updateArdAppTaskDetailByTaskId(detail);
        if(StringUtils.isNotNull(ardAppTask)) {
            ArdAppTaskDetail detail = new ArdAppTaskDetail();
            detail.setViewFlag("1");
            detail.setTaskId(ardAppTask.getId());
            int i = ardAppTaskMapper.updateArdAppTaskDetailByTaskId(detail);
        }
        return ardAppTask;
    }
    /**
ard-work/src/main/java/com/ruoyi/utils/websocket/service/ChatServerEndpoint.java
@@ -59,7 +59,7 @@
            Boolean enabled = (Boolean) map.get("enabled");
            if (enabled) {
                //启动全局推送
                List<ArdAppPosition> newList = new ArrayList<>(AppPositionPushService.initDataList);
                List<ArdAppPosition> newList = new ArrayList<>(AppPositionPushService.getAppPositionList());
                AppPositionPushService.dataMap.put(userId, newList);
                if (!AppPositionPushService.userTimerMap.containsKey(userId)) {
                    Timer timer = AppPositionPushService.startTimerTask(userId, 3000);
@@ -84,19 +84,19 @@
            Integer frequency = (Integer) map.get("frequency");
            String uId = (String) map.get("userId");
            if (frequency > 0) {
                List<ArdAppPosition> List = AppPositionPushService.initDataList.stream()
                List<ArdAppPosition> List = AppPositionPushService.getAppPositionList().stream()
                        .filter(obj -> !obj.getUserId().equals(uId))
                        .collect(Collectors.toList());//去除引导后的list
                AppPositionPushService.dataMap.put(userId,List);
                List<ArdAppPosition> tempList = AppPositionPushService.initDataList.stream()
                List<ArdAppPosition> tempList = AppPositionPushService.getAppPositionList().stream()
                        .filter(obj -> obj.getUserId().equals(uId))
                        .collect(Collectors.toList());//获取引导的list
                AppPositionPushService.tempDataMap.put(userId, tempList);
                Timer timer = AppPositionPushService.startTempTimerTask(userId, frequency);
                AppPositionPushService.tempUserTimerMap.put(userId, timer);
            } else {
                List<ArdAppPosition> newList = new ArrayList<>(AppPositionPushService.initDataList);
                List<ArdAppPosition> newList = new ArrayList<>(AppPositionPushService.getAppPositionList());
                AppPositionPushService.dataMap.put(userId, newList);
                Timer timer = AppPositionPushService.tempUserTimerMap.get(userId);
                AppPositionPushService.stopTimerTask(timer);
ard-work/src/main/resources/templates/test.html
@@ -782,7 +782,7 @@
            } else if (camera.type == "dh") {
                realViewDh("127.0.0.1", ID, camera.username, camera.password, camera.ipaddr, camera.port);
            } else {
                realViewHik("192.168.1.15", ID, camera.username, camera.password, camera.ipaddr, camera.port);
                realViewHik("127.0.0.1", ID, camera.username, camera.password, camera.ipaddr, camera.port);
            }
        }
    });