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 ba50d644..b9e06bca 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 @@ -30,31 +30,33 @@ public class D331RtcmMessageExecutor implements Executor @Override public Void execute(D331RtcmMessage message) { String id = message.getId(); - byte[] forwardBytes = message.getSrcData(); - // 要求快速转发,因此用缓存,不要每次都查数据库 - List deviceList = deviceService.findByParentId(id); - for (Device device : deviceList) { - if(device.getOpMode()!=GnssDevice.OP_MODE_USE) continue; - String deviceId = device.getDeviceId(); - OnlineChannels.INSTANCE.get(deviceId).ifPresent(deviceChannel -> { - if (logger.isDebugEnabled()) { - logger.debug("forward d331 rtcm message to device {}", deviceId); - } - ByteBuf buf = Unpooled.buffer(); - buf.writeBytes(forwardBytes); - deviceChannel.writeAndFlush(buf); - }); - } - // 补齐tenantId - Device device1 = deviceService.findByDeviceId(message.getId()); - if(device1 == null || device1.getOpMode()!= GnssDevice.OP_MODE_USE) return null; + Device device1 = deviceService.findByDeviceId(id); + if(device1 == null || device1.getOpMode() == GnssDevice.OP_MODE_UNUSE) return null; message.setTenantId(device1.getTenantId()); device1.updateD331Bytes(message.getLen()); - if (logger.isDebugEnabled()) { logger.debug("receive d331 rtcm message of device: "+message.getId()+", seq:"+message.getSeq()+", len:"+message.getLen()); } + + if(device1.getOpMode() == GnssDevice.OP_MODE_USE) { + byte[] forwardBytes = message.getSrcData(); + // 要求快速转发,因此用缓存,不要每次都查数据库 + List deviceList = deviceService.findByParentId(id); + for (Device device : deviceList) { + if (device.getOpMode() != GnssDevice.OP_MODE_USE) continue; + String deviceId = device.getDeviceId(); + OnlineChannels.INSTANCE.get(deviceId).ifPresent(deviceChannel -> { + if (logger.isDebugEnabled()) { + logger.debug("forward d331 rtcm message to device {}", deviceId); + } + ByteBuf buf = Unpooled.buffer(); + buf.writeBytes(forwardBytes); + deviceChannel.writeAndFlush(buf); + }); + } + } + Gga gga = message.getGga(); if(gga != null) { device1.updateSatelitesNum(gga.getSatellitesInUsed());