From bc3b043b45c28f3b0347c1ddae606c27a0885336 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?= Date: Tue, 10 Feb 2026 11:14:19 +0800 Subject: [PATCH] xx --- .../handler/DjiMqttMessageHandler.java | 33 +++++++++++++++---- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/ruoyi/device/domain/impl/djimqtt/handler/DjiMqttMessageHandler.java b/src/main/java/com/ruoyi/device/domain/impl/djimqtt/handler/DjiMqttMessageHandler.java index b8ff084..4c94788 100644 --- a/src/main/java/com/ruoyi/device/domain/impl/djimqtt/handler/DjiMqttMessageHandler.java +++ b/src/main/java/com/ruoyi/device/domain/impl/djimqtt/handler/DjiMqttMessageHandler.java @@ -37,16 +37,21 @@ public class DjiMqttMessageHandler { private final List dockDataCallbacks = new ArrayList<>(); /** - * 无人机SN正则表达式(只匹配以158开头的SN) - * 示例:1581F6Q8X251C00G04H8, 1581F6Q8D247C00GE3KQ + * 无人机SN正则表达式(只匹配大疆THJS开头的SN) + * 示例:THJSY03A2308YCMFPB11-AIRCRAFT */ - private static final Pattern DRONE_SN_PATTERN = Pattern.compile("^158[0-9A-Z]+$"); + private static final Pattern DRONE_SN_PATTERN = Pattern.compile("^THJS[0-9A-Z]+"); /** - * 机场SN正则表达式(只匹配以7C开头的SN) - * 示例:7CTXN5K00B0AXM + * 机场SN正则表达式(只匹配大疆THJS开头的SN) + * 示例:THJSY03A2308YCMFPB11 */ - private static final Pattern DOCK_SN_PATTERN = Pattern.compile("^7C[0-9A-Z]+$"); + private static final Pattern DOCK_SN_PATTERN = Pattern.compile("^THJS[0-9A-Z]+"); + + /** + * 拓恒设备SN前缀(需要过滤) + */ + private static final Pattern TUOHENG_SN_PATTERN = Pattern.compile("^(7C|158)[0-9A-Z]+$"); /** * 注册无人机数据回调 @@ -91,6 +96,11 @@ public class DjiMqttMessageHandler { return; } + if (isTuohengSn(deviceSn)) { + log.debug("跳过拓恒设备消息 - SN: {}", deviceSn); + return; + } + // 解析JSON消息 @SuppressWarnings("unchecked") DjiMqttMessage> message = objectMapper.readValue( @@ -215,4 +225,15 @@ public class DjiMqttMessageHandler { Matcher matcher = DOCK_SN_PATTERN.matcher(sn); return matcher.matches(); } + + /** + * 判断是否为拓恒设备SN + */ + private boolean isTuohengSn(String sn) { + if (sn == null) { + return false; + } + Matcher matcher = TUOHENG_SN_PATTERN.matcher(sn); + return matcher.matches(); + } }