From 19763ebd20ad16435f3c1ccfdc8abd1518712cc1 Mon Sep 17 00:00:00 2001
From: zhaowenyu <35589726@qq.com>
Date: Wed, 24 Dec 2025 15:09:58 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 ard-work/src/main/java/com/ard/work/service/impl/ArdDroneInfoServiceImpl.java |    8 ++++----
 1 files changed, 4 insertions(+), 4 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 78e3352..053cfa6 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
@@ -320,11 +320,12 @@
                 String redisKey = CacheConstants.UAV_ONLINE_KEY + boxSn;
                 boolean currentOnline = remote.getOnLine() == 1;
 
-                // 获取上次状态
-                boolean lastOnline = redisCache.getCacheObject(redisKey) != null;
+                ArdDroneInfo local = localMap.get(boxSn);
+                boolean dbOnline = local != null && local.getOnLine() == 1;
+                boolean needUpdate = (dbOnline != currentOnline);
 
                 // 如果状态变化才更新
-                if (lastOnline != currentOnline) {
+                if (needUpdate){
                     // 更新 Redis
                     if (currentOnline) {
                         redisCache.setCacheObject(redisKey, remote);
@@ -334,7 +335,6 @@
                     // 发布事件
                     eventPublisher.publishEvent(new DeviceStatusEvent(boxSn, currentOnline));
                     // 更新数据库
-                    ArdDroneInfo local = localMap.get(boxSn);
                     if (local != null) {
                         local.setOnLine(currentOnline ? 1 : 0);
                         updateArdDrone(local);

--
Gitblit v1.9.3