From b8973cd2a300c1dddb5fd208a07c71ac1ca9b39d Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Thu, 15 Jan 2026 15:09:39 +0800
Subject: [PATCH] 优化

---
 ard-work/src/main/java/com/ard/work/component/websocket/handler/TyMessageHandler.java |   12 ++++++------
 ard-work/src/main/java/com/ard/work/service/impl/ArdDroneInfoServiceImpl.java         |   14 +++++++-------
 ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskPartServiceImpl.java    |    2 +-
 3 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/ard-work/src/main/java/com/ard/work/component/websocket/handler/TyMessageHandler.java b/ard-work/src/main/java/com/ard/work/component/websocket/handler/TyMessageHandler.java
index f55bb2a..f719a7f 100644
--- a/ard-work/src/main/java/com/ard/work/component/websocket/handler/TyMessageHandler.java
+++ b/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);
                 }
diff --git a/ard-work/src/main/java/com/ard/work/service/impl/ArdDroneInfoServiceImpl.java b/ard-work/src/main/java/com/ard/work/service/impl/ArdDroneInfoServiceImpl.java
index 7064f3f..2b85811 100644
--- a/ard-work/src/main/java/com/ard/work/service/impl/ArdDroneInfoServiceImpl.java
+++ b/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));
                     // 更新数据库
diff --git a/ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskPartServiceImpl.java b/ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskPartServiceImpl.java
index da66e03..dd0d4b1 100644
--- a/ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskPartServiceImpl.java
+++ b/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 秒没有新遥测 → 认为已离线或冻结,不记录
             }
 

--
Gitblit v1.9.3