修正备选基站推送bug

This commit is contained in:
zms 2025-02-27 11:06:42 +08:00
parent 0a5bb0d7a1
commit 483aeb9d76

View File

@ -14,7 +14,6 @@ import com.imdroid.sideslope.server.DeviceChannel;
import com.imdroid.sideslope.server.OnlineChannels; import com.imdroid.sideslope.server.OnlineChannels;
import com.imdroid.sideslope.service.DataPersistService; import com.imdroid.sideslope.service.DataPersistService;
import com.imdroid.sideslope.bd.RtcmGgaUtil; import com.imdroid.sideslope.bd.RtcmGgaUtil;
//import com.imdroid.common.util.RtcmGgaUtil;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled; import io.netty.buffer.Unpooled;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -73,18 +72,35 @@ public class D331RtcmMessageExecutor implements Executor<D331RtcmMessage, Void>
for (Device device : allDevices) { for (Device device : allDevices) {
if (device.getOpMode() != GnssDevice.OP_MODE_USE) continue; if (device.getOpMode() != GnssDevice.OP_MODE_USE) continue;
String deviceId = device.getDeviceId(); String deviceId = device.getDeviceId();
System.out.println(deviceId);
// 检查该设备是否应该接收此基站的数据 // 检查该设备是否应该接收此基站的数据
String primaryBaseId = device.getParentId(); String primaryBaseId = device.getParentId();
String backupBaseId = device.getParentId1(); String backupBaseId = device.getParentId1();
//System.out.println(primaryBaseId);
//System.out.println(backupBaseId);
// 如果当前基站是该设备的备选基站需要检查主基站是否离线 // 如果当前基站是该设备的备选基站需要检查主基站是否离线
if (id.equals(backupBaseId)) { if (id.equals(backupBaseId)) {
byte[] modifyData = forwardBytes.clone();
Device primaryBase = deviceService.findByDeviceId(primaryBaseId); Device primaryBase = deviceService.findByDeviceId(primaryBaseId);
// 如果主基站仍然在线则跳过备选基站的数据 // 如果主基站仍然在线则跳过备选基站的数据
if (primaryBase != null && isBaseStationOnline(primaryBase)) { if (primaryBase != null && isBaseStationOnline(primaryBase)) {
continue; continue;
} }
else {
String hexPrimaryBase = String.format("%06x",Integer.parseInt(primaryBaseId));
System.out.println(hexPrimaryBase);
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;
// 打印修改后的完整数据16进制形式
//logger.info("Modified D331 data (HEX): {}", ByteUtil.bytesToHexString(forwardBytes));
}
} }
// 获取设备通道并发送数据 // 获取设备通道并发送数据
@ -174,8 +190,8 @@ public class D331RtcmMessageExecutor implements Executor<D331RtcmMessage, Void>
// 提取RTCM数据并发送到NtripServer,使用设备ID作为挂载点 // 提取RTCM数据并发送到NtripServer,使用设备ID作为挂载点
Optional.ofNullable(RtcmGgaUtil.getRtcms(hexData)) Optional.ofNullable(RtcmGgaUtil.getRtcms(hexData))
.ifPresent(rtcm -> { .ifPresent(rtcm -> {
System.out.println("挂载点: " + mountpoint); //System.out.println("挂载点: " + mountpoint);
System.out.println("RTCM数据: " + rtcm); //System.out.println("RTCM数据: " + rtcm);
UdpNtripServer.send(mountpoint, rtcm); UdpNtripServer.send(mountpoint, rtcm);
}); });
} catch (Exception e) { } catch (Exception e) {
@ -199,7 +215,7 @@ public class D331RtcmMessageExecutor implements Executor<D331RtcmMessage, Void>
LocalDateTime now =LocalDateTime.now(); LocalDateTime now =LocalDateTime.now();
return baseStation.getLastRxTime() !=null && return baseStation.getLastRxTime() !=null &&
baseStation.getLastRxTime().isAfter(now.minusMinutes(30)); baseStation.getLastRxTime().isAfter(now.minusMinutes(10));
} }