1、优化对补传结束的判断

This commit is contained in:
weidong 2024-01-09 16:20:22 +08:00
parent f609aa3518
commit f037aea4cd

View File

@ -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());