From 3f43e40ed1a1e9f66b3ad2862da9dbc4b710c712 Mon Sep 17 00:00:00 2001
From: nishiwei <13126973358@163.com>
Date: Fri, 23 Oct 2026 14:09:47 +0800
Subject: [PATCH] 智云3.0机场1适配内容提交

---
 ard-sample/src/main/java/com/ard/sample/component/mqtt/handler/StateLiveStatusHandler.java |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/ard-sample/src/main/java/com/ard/sample/component/mqtt/handler/StateLiveStatusHandler.java b/ard-sample/src/main/java/com/ard/sample/component/mqtt/handler/StateLiveStatusHandler.java
index 7bc77ef..1b22057 100644
--- a/ard-sample/src/main/java/com/ard/sample/component/mqtt/handler/StateLiveStatusHandler.java
+++ b/ard-sample/src/main/java/com/ard/sample/component/mqtt/handler/StateLiveStatusHandler.java
@@ -17,6 +17,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
 import java.util.List;
 import java.util.Map;
@@ -43,7 +44,9 @@
                 List<LiveStatusTwoReceiver> list = mapper.convertValue(dataNode.get(StateDataEnum.LIVESTATUS.getDesc()),
                         new TypeReference<List<LiveStatusTwoReceiver>>() {});
                 for (LiveStatusTwoReceiver receiver : list) {
-                    if(receiver.getVideoId()!=null && receiver.getVideoId().contains(childSn)){
+                    // 机场1(Dock1)未连接飞行器时 childDeviceSn 为空,跳过匹配,避免 String.contains(null) 抛 NPE
+                    if (StringUtils.hasText(childSn) && receiver.getVideoId() != null
+                            && receiver.getVideoId().contains(childSn)) {
                         stateReceiver.setData(receiver);
                         continue;
                     }
@@ -56,7 +59,10 @@
                 catch (Exception e){
                     log.error("接收state直播设备状态反馈转换异常:{}",e);
                 }
-                _deviceService.setChildRedisCamera(childSn, liveStatus);
+                // 无子设备 SN 时不写缓存,避免产生 COVER_STATE_PREFIX + null 的非法 Redis key
+                if (StringUtils.hasText(childSn)) {
+                    _deviceService.setChildRedisCamera(childSn, liveStatus);
+                }
             }
 
             return stateReceiver;

--
Gitblit v1.9.3