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 9331b0df..25938c4a 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 @@ -38,13 +38,14 @@ public class MultiLineGNSSCalcService { public void calc(D342LocationMessage d342Message){ // 如果时间跨度大于1分钟,或者不含d341,则计算平滑值 String deviceId = d342Message.getId(); - LocalDateTime msgTime = d342Message.getOriginalTime(); LocalDateTime lastDate = deviceMap.get(deviceId); + LocalDateTime msgTime = d342Message.getOriginalTime(); int d341Count = d342Message.getMessageList().size(); if(msgTime!=null) logger.info("proc D342: "+msgTime+" D341 num: "+d341Count); - // 如果序号为0,则创建一条转发记录表 - if(d342Message.getSeq() == 0 && d342Message.getProjectId()!=null){ + // 如果序号为0(有可能丢失,改为lastDate==null),则创建一条转发记录表 + //if(d342Message.getSeq() == 0 && d342Message.getProjectId()!=null){ + if(lastDate == null && d342Message.getProjectId()!=null){ createFwdReord(d342Message); // 产生继续补传通知 beidouClient.onGnssUpload(deviceId,d342Message.getTenantId(), msgTime); @@ -57,7 +58,7 @@ public class MultiLineGNSSCalcService { } if(lastDate != null){ - if(d341Count == 0){ + if(d341Count == 0){//补传结束指示 // 计算上轮结果 calcService.calSingleDone(deviceId, d342Message.getTenantId(),lastDate); // 重算最近的 @@ -85,7 +86,7 @@ public class MultiLineGNSSCalcService { // 记录最新补传数据的时间 if(d341Count>0) deviceMap.put(deviceId, msgTime); - else{ + else if(deviceMap.get(deviceId)!=null){ // 补传完成 deviceMap.remove(deviceId); beidouClient.onGnssUploadComplete(deviceId,d342Message.getTenantId());