1、增加打印,查断点续传的问题

This commit is contained in:
weidong 2024-01-17 12:35:29 +08:00
parent b85daf498d
commit a2969a5b3c

View File

@ -41,14 +41,28 @@ 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");
beidouClient.onGnssUpload(deviceId,d342Message.getTenantId(), msgTime); 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);
GnssStatus gnssStatus = dataPersistService.getDeviceState(deviceId); GnssStatus gnssStatus = dataPersistService.getDeviceState(deviceId);
if(gnssStatus!=null){ if (gnssStatus != null) {
gnssStatus.setUpdatetime(LocalDateTime.now()); gnssStatus.setUpdatetime(LocalDateTime.now());
gnssStatus.setState(GnssStatus.STATE_UPLOADING); gnssStatus.setState(GnssStatus.STATE_UPLOADING);
dataPersistService.updateDeviceState(gnssStatus); dataPersistService.updateDeviceState(gnssStatus);
@ -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);