1、优化断点续传

This commit is contained in:
weidong 2024-01-18 00:25:12 +08:00
parent d8951a9f25
commit aaa1740f13
2 changed files with 31 additions and 21 deletions

View File

@ -76,10 +76,8 @@ public class MultiLineGNSSCalcService {
}
// 处理d341
logger.info(deviceId + " D342 msg time: " + msgTime);
lastD342Time.createTime = msgTime;
lastD342Time.uploadTime = LocalDateTime.now();
logger.info(deviceId + " lastD342Time: " + lastD342Time.createTime);
for(BaseMessage message: d342Message.getMessageList()){
D341LocationMessage d341Message = (D341LocationMessage)message;
@ -147,7 +145,8 @@ public class MultiLineGNSSCalcService {
d342SessionDone(deviceId,tenantId,lastD342Time.createTime);
return null;
}
return lastD342Time.createTime;
}
return lastD342Time.createTime;
else return null;
}
}

View File

@ -72,6 +72,35 @@ public class SingleLineGNSSCalcService implements GNSSDataCalcService {
@Override
public void calSingleDone(String deviceId, Integer tenantId, LocalDateTime resultTime) {
executorService.schedule(() -> {
try {
calCycleResult(deviceId, tenantId, resultTime);
} catch (Exception e) {
logger.error(e.toString());
}
},50, TimeUnit.MILLISECONDS);
}
private void resultOutputTimer(String deviceId, Integer tenantId, LocalDateTime date){
//40秒没数据后输出结果
ScheduledFuture<?> future = timerMap.get(deviceId);
if (future != null && !future.isDone()) {
future.cancel(true);
future = null;
}
future = executorService.schedule(() -> {
try {
calCycleResult(deviceId, tenantId, date);
} catch (Exception e) {
logger.error(e.toString());
}
},40, TimeUnit.SECONDS);
timerMap.put(deviceId, future);
}
private void calCycleResult(String deviceId, Integer tenantId, LocalDateTime resultTime) {
FocusCalculator1 focusCalculator = calculatorMap.get(deviceId);
if(focusCalculator == null) return;
// 1.检查b562有效数如果过少产生告警
@ -128,24 +157,6 @@ public class SingleLineGNSSCalcService implements GNSSDataCalcService {
}
private void resultOutputTimer(String deviceId, Integer tenantId, LocalDateTime date){
//40秒没数据后输出结果
ScheduledFuture<?> future = timerMap.get(deviceId);
if (future != null && !future.isDone()) {
future.cancel(true);
future = null;
}
future = executorService.schedule(() -> {
try {
calSingleDone(deviceId, tenantId, date);
} catch (Exception e) {
logger.error(e.toString());
}
},40, TimeUnit.SECONDS);
timerMap.put(deviceId, future);
}
private void postLocationRecord(String deviceId, double[] b562Result, double[] r9250Result, double[] result,
LocalDateTime resultTime, int delay, boolean isShocked) {
GnssCalcData locationRecord = new GnssCalcData();