算法4优化,初始参考值使用最近一个有效解
This commit is contained in:
parent
6a8c373188
commit
b66315469c
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user