liusuyi
2026-01-15 b8973cd2a300c1dddb5fd208a07c71ac1ca9b39d
优化
3 files modified
28 ■■■■■ changed files
ard-work/src/main/java/com/ard/work/component/websocket/handler/TyMessageHandler.java 12 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/work/service/impl/ArdDroneInfoServiceImpl.java 14 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskPartServiceImpl.java 2 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/work/component/websocket/handler/TyMessageHandler.java
@@ -345,14 +345,14 @@
                return;
            }
            if (!WebSocketSessionManager.containsUser(userId)) {
                uavControlService.releaseAllControls(userId);
                uavStreamManager.stopAllPullStreamByUser(userId);
                uavStateManager.removeSubscribe(userId);
                uavTelemetryManager.removeSubscribe(userId);
                uavSignalManager.removeSubscribe(userId);
                uavControlManager.removeSubscribe(userId);
                LoginUser loginUser = tokenService.getLoginUserByUserId(userId);
                if (loginUser != null) {
                    uavControlService.releaseAllControls(userId);
                    uavStreamManager.stopAllPullStreamByUser(userId);
                    uavStateManager.removeSubscribe(userId);
                    uavTelemetryManager.removeSubscribe(userId);
                    uavSignalManager.removeSubscribe(userId);
                    uavControlManager.removeSubscribe(userId);
                    tokenService.delLoginUser(loginUser.getToken(), userId);
                    log.info("【cmd】用户 [{}] 超时未重连,已删除 token", userId);
                }
ard-work/src/main/java/com/ard/work/service/impl/ArdDroneInfoServiceImpl.java
@@ -340,15 +340,15 @@
                ArdDroneInfo local = localMap.get(boxSn);
                boolean dbOnline = local != null && local.getOnLine() == 1;
                boolean needUpdate = (dbOnline != currentOnline);
                // 只要远端设备在线,就刷新Redis缓存(无论状态是否变化),保证缓存一定存在
                if (currentOnline) {
                    redisCache.setCacheObject(redisKey, remote);
                } else {
                    // 远端离线,删除Redis缓存
                    redisCache.deleteObject(redisKey);
                }
                // 如果状态变化才更新
                if (needUpdate){
                    // 更新 Redis
                    if (currentOnline) {
                        redisCache.setCacheObject(redisKey, remote);
                    } else {
                        redisCache.deleteObject(redisKey);
                    }
                    // 发布事件
                    eventPublisher.publishEvent(new DeviceStatusEvent(boxSn, currentOnline));
                    // 更新数据库
ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskPartServiceImpl.java
@@ -60,7 +60,7 @@
            // 2️⃣ 使用遥测自身时间戳判断是否还活着
            long dataTs = telemetryData.getTimestamp(); // 设备时间 / 服务器接收时间
            if (now - dataTs > 3000) {
                log.warn("超过 3 秒没有新遥测 → 认为已离线或冻结,不记录:{}", new Date(dataTs));
                //log.warn("超过 3 秒没有新遥测 → 认为已离线或冻结,不记录:{}", new Date(dataTs));
                return; // 超过 3 秒没有新遥测 → 认为已离线或冻结,不记录
            }