算法4优化,初始参考值使用最近一个有效解

This commit is contained in:
weidong 2024-07-09 19:41:10 +08:00
parent 6a8c373188
commit b66315469c

View File

@ -1,7 +1,9 @@
package com.imdroid.sideslope.calc;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.imdroid.common.util.ThreadManager;
import com.imdroid.secapi.dto.GnssCalcData;
import com.imdroid.secapi.dto.GnssCalcDataMapper;
import com.imdroid.secapi.dto.GnssGroupCalc;
import com.imdroid.secapi.dto.GnssGroupCalcMapper;
import com.imdroid.sideslope.bd.*;
@ -44,6 +46,8 @@ public class SingleLineGNSSCalcService implements GNSSDataCalcService {
@Autowired
GnssGroupCalcMapper groupCalcMapper;
@Autowired
GnssCalcDataMapper dataMapper;
// 非线程安全需加同步保护
List<GnssGroupCalc> groupCalcList;
@ -222,7 +226,9 @@ public class SingleLineGNSSCalcService implements GNSSDataCalcService {
new double[]{locationRecord.getRpose(),locationRecord.getRposn(),locationRecord.getRposd()});
}
else if(focusCalculator.getReferPoint() == null){
focusCalculator.setReferPoint(b562Result);
double[] latestPos = getLatestPos(deviceId);
if(latestPos != null) focusCalculator.setReferPoint(latestPos);
else focusCalculator.setReferPoint(b562Result);
}
}
else if(focusCalculator.getVer()==1 || focusCalculator.getVer()==3 || focusCalculator.isShocked()) {
@ -273,4 +279,18 @@ public class SingleLineGNSSCalcService implements GNSSDataCalcService {
calculatorMap.remove(deviceId);
logger.info("device paras changed");
}
double[] getLatestPos(String deviceId){
QueryWrapper<GnssCalcData> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("deviceid",deviceId);
queryWrapper.ge("createtime",LocalDateTime.now().minusHours(12));
queryWrapper.isNotNull("rpose");
queryWrapper.orderByDesc("createtime");
GnssCalcData gnssCalcData = dataMapper.selectOne(queryWrapper);
if(gnssCalcData != null){
logger.info("{} getLatestPos", deviceId);
return new double[]{gnssCalcData.getRpose(),gnssCalcData.getRposn(),gnssCalcData.getRposd()};
}
return null;
}
}