1、增加打印,查断点续传的问题
This commit is contained in:
parent
b85daf498d
commit
a2969a5b3c
@ -41,11 +41,25 @@ public class MultiLineGNSSCalcService {
|
|||||||
LocalDateTime lastDate = deviceMap.get(deviceId);
|
LocalDateTime lastDate = deviceMap.get(deviceId);
|
||||||
LocalDateTime msgTime = d342Message.getOriginalTime();
|
LocalDateTime msgTime = d342Message.getOriginalTime();
|
||||||
int d341Count = d342Message.getMessageList().size();
|
int d341Count = d342Message.getMessageList().size();
|
||||||
if(msgTime!=null) logger.info("proc D342: "+msgTime+" D341 num: "+d341Count);
|
if(msgTime!=null) logger.info(deviceId + " proc D342: "+msgTime+" seq:"+d342Message.getSeq()+" D341 num: "+d341Count);
|
||||||
|
|
||||||
// 如果序号为0(有可能丢失,改为lastDate==null且包含的d341数大于0),则认为是第一条补传记录
|
if(d341Count>0) {
|
||||||
if(lastDate == null && d341Count>0){
|
if(msgTime==null){
|
||||||
// 产生继续补传通知
|
logger.info(deviceId + " invalid D342");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(lastDate != null) {
|
||||||
|
logger.info(deviceId + " last D342: " + lastDate);
|
||||||
|
if (msgTime.isAfter(lastDate.plusMinutes(4))) {
|
||||||
|
logger.info(deviceId + " d341 cycle done!");
|
||||||
|
// 计算上轮结果
|
||||||
|
calcService.calSingleDone(deviceId, d342Message.getTenantId(), lastDate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
logger.info(deviceId + " D342 session begin!");
|
||||||
|
// 产生断点补传通知
|
||||||
beidouClient.onGnssUpload(deviceId, d342Message.getTenantId(), msgTime);
|
beidouClient.onGnssUpload(deviceId, d342Message.getTenantId(), msgTime);
|
||||||
GnssStatus gnssStatus = dataPersistService.getDeviceState(deviceId);
|
GnssStatus gnssStatus = dataPersistService.getDeviceState(deviceId);
|
||||||
if (gnssStatus != null) {
|
if (gnssStatus != null) {
|
||||||
@ -57,9 +71,16 @@ public class MultiLineGNSSCalcService {
|
|||||||
createFwdReord(d342Message);
|
createFwdReord(d342Message);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 一个周期数据的处理
|
// 处理d341
|
||||||
if(lastDate != null){
|
deviceMap.put(deviceId, msgTime);
|
||||||
if(d341Count == 0){//补传结束指示
|
for(BaseMessage message: d342Message.getMessageList()){
|
||||||
|
D341LocationMessage d341Message = (D341LocationMessage)message;
|
||||||
|
calcService.calcSingle(d341Message, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(lastDate != null){
|
||||||
|
//补传结束指示
|
||||||
|
logger.info(deviceId + " d342 session done!");
|
||||||
// 计算上轮结果
|
// 计算上轮结果
|
||||||
calcService.calSingleDone(deviceId, d342Message.getTenantId(),lastDate);
|
calcService.calSingleDone(deviceId, d342Message.getTenantId(),lastDate);
|
||||||
// 重算最近的
|
// 重算最近的
|
||||||
@ -72,23 +93,7 @@ public class MultiLineGNSSCalcService {
|
|||||||
fwdRecordMapper.insert(fwdRecord);
|
fwdRecordMapper.insert(fwdRecord);
|
||||||
fwdRecordMap.remove(deviceId);
|
fwdRecordMap.remove(deviceId);
|
||||||
}
|
}
|
||||||
}
|
// 移除记录、发完成指示、更新设备状态
|
||||||
else if(msgTime!=null && msgTime.isAfter(lastDate.plusMinutes(2))){
|
|
||||||
// 计算上轮结果
|
|
||||||
calcService.calSingleDone(deviceId, d342Message.getTenantId(),lastDate);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 处理每个B562
|
|
||||||
for(BaseMessage message: d342Message.getMessageList()){
|
|
||||||
D341LocationMessage d341Message = (D341LocationMessage)message;
|
|
||||||
calcService.calcSingle(d341Message, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 记录最新补传数据的时间
|
|
||||||
if(d341Count>0) deviceMap.put(deviceId, msgTime);
|
|
||||||
else if(deviceMap.get(deviceId)!=null){
|
|
||||||
// 补传完成
|
|
||||||
deviceMap.remove(deviceId);
|
deviceMap.remove(deviceId);
|
||||||
beidouClient.onGnssUploadComplete(deviceId,d342Message.getTenantId());
|
beidouClient.onGnssUploadComplete(deviceId,d342Message.getTenantId());
|
||||||
GnssStatus gnssStatus = dataPersistService.getDeviceState(deviceId);
|
GnssStatus gnssStatus = dataPersistService.getDeviceState(deviceId);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user