This commit is contained in:
孙小云 2026-02-10 11:14:19 +08:00
parent b3bcaa89d1
commit bc3b043b45
1 changed files with 27 additions and 6 deletions

View File

@ -37,16 +37,21 @@ public class DjiMqttMessageHandler {
private final List<IDockDataCallback> 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<Map<String, Object>> 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();
}
}