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/service/impl/ArdDroneInfoServiceImpl.java |   41 +++++++----------------------------------
 1 files changed, 7 insertions(+), 34 deletions(-)

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 560cc25..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));
                     // 更新数据库
@@ -362,32 +362,5 @@
     }
 
 
-    /**
-     * 更新 localBoxInfo 的字段,如果有变化返回 true,否则返回 false
-     */
-    private boolean updateChangedAttributes(ArdDroneInfo localBoxInfo, BoxInfoReceiver remoteArdDrone) {
-        boolean changed = false;
-
-        if (!Objects.equals(localBoxInfo.getBoxName(), remoteArdDrone.getBoxName())) {
-            localBoxInfo.setBoxName(remoteArdDrone.getBoxName());
-            changed = true;
-        }
-        if (!Objects.equals(localBoxInfo.getBoxVersion(), remoteArdDrone.getBoxVersion())) {
-            localBoxInfo.setBoxVersion(remoteArdDrone.getBoxVersion());
-            changed = true;
-        }
-        if (!Objects.equals(localBoxInfo.getLastTaskId(), remoteArdDrone.getLastTaskId())) {
-            localBoxInfo.setLastTaskId(remoteArdDrone.getLastTaskId());
-            changed = true;
-        }
-        if (!Objects.equals(localBoxInfo.getOnLine(), remoteArdDrone.getOnLine())) {
-            localBoxInfo.setOnLine(remoteArdDrone.getOnLine());
-            changed = true;
-        }
-
-        // TODO: 更新其他属性时,如果变化也设置 changed = true
-
-        return changed;
-    }
 
 }

--
Gitblit v1.9.3