From a580eb204ac297372e75da89d8e8b677487374a2 Mon Sep 17 00:00:00 2001 From: zms Date: Fri, 27 Jun 2025 11:53:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BD=BF=E7=94=A8=E5=A4=87?= =?UTF-8?q?=E7=94=A8=E5=9F=BA=E7=AB=99=E7=9A=84ID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../executor/D331RtcmMessageExecutor.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D331RtcmMessageExecutor.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D331RtcmMessageExecutor.java index 28158e77..de74aec7 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D331RtcmMessageExecutor.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D331RtcmMessageExecutor.java @@ -38,6 +38,8 @@ public class D331RtcmMessageExecutor implements Executor private final Logger logger = LoggerFactory.getLogger(this.getClass()); + private static final Map deviceBackupStatus = new ConcurrentHashMap<>(); + @Autowired private DeviceService deviceService; @Autowired @@ -89,8 +91,26 @@ public class D331RtcmMessageExecutor implements Executor Device primaryBase = deviceService.findByDeviceId(primaryBaseId); // 如果主基站仍然在线,则跳过备选基站的数据 if (primaryBase != null && isBaseStationOnline(primaryBase)) { + if(deviceBackupStatus.remove(deviceId) != null){ + logger.info("设备 {} 从备用基站 {} 切换回主基站 {}", + deviceId, id, primaryBaseId); + } continue; } + else{ + String hexPrimaryBase = String.format("%06x",Integer.parseInt(primaryBaseId)); + if(deviceBackupStatus.putIfAbsent(deviceId,true) == null){ + logger.info("设备 {} 从主基站 {} 切换到备用基站 {}", + deviceId, primaryBaseId, id); + } + + byte[] modifyData = forwardBytes.clone(); + modifyData[5] = (byte) Integer.parseInt(hexPrimaryBase.substring(0,2),16); + modifyData[6] = (byte) Integer.parseInt(hexPrimaryBase.substring(2,4),16); + modifyData[7] = (byte) Integer.parseInt(hexPrimaryBase.substring(4,6),16); + + forwardBytes = modifyData; + } } // 获取设备通道并发送数据