diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/calc/MultiLineGNSSCalcService.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/calc/MultiLineGNSSCalcService.java index 25938c4a..a4408cd3 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/calc/MultiLineGNSSCalcService.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/calc/MultiLineGNSSCalcService.java @@ -43,10 +43,8 @@ public class MultiLineGNSSCalcService { int d341Count = d342Message.getMessageList().size(); if(msgTime!=null) logger.info("proc D342: "+msgTime+" D341 num: "+d341Count); - // 如果序号为0(有可能丢失,改为lastDate==null),则创建一条转发记录表 - //if(d342Message.getSeq() == 0 && d342Message.getProjectId()!=null){ - if(lastDate == null && d342Message.getProjectId()!=null){ - createFwdReord(d342Message); + // 如果序号为0(有可能丢失,改为lastDate==null且包含的d341数大于0),则认为是第一条补传记录 + if(lastDate == null && d341Count>0){ // 产生继续补传通知 beidouClient.onGnssUpload(deviceId,d342Message.getTenantId(), msgTime); GnssStatus gnssStatus = dataPersistService.getDeviceState(deviceId); @@ -55,8 +53,11 @@ public class MultiLineGNSSCalcService { gnssStatus.setState(GnssStatus.STATE_UPLOADING); dataPersistService.updateDeviceState(gnssStatus); } + // 生成推送记录 + createFwdReord(d342Message); } + // 一个周期数据的处理 if(lastDate != null){ if(d341Count == 0){//补传结束指示 // 计算上轮结果 @@ -102,7 +103,9 @@ public class MultiLineGNSSCalcService { void createFwdReord(D342LocationMessage d342Message){ String deviceId = d342Message.getId(); // 查找这个设备是否有项目号 - if(d342Message.getFwdId()==null || d342Message.getFwdId().equals(GnssGroupFwd.FWD_TYPE_NONE)) return; + if(d342Message.getFwdId()==null || + d342Message.getFwdId().length() ==0 || + d342Message.getFwdId().equals(GnssGroupFwd.FWD_TYPE_NONE)) return; FwdRecord fwdRecord = new FwdRecord(); fwdRecord.setDeviceid(deviceId);