算法4优化,初始参考值使用最近一个有效解
This commit is contained in:
parent
6a8c373188
commit
b66315469c
@ -1,7 +1,9 @@
|
|||||||
package com.imdroid.sideslope.calc;
|
package com.imdroid.sideslope.calc;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.imdroid.common.util.ThreadManager;
|
import com.imdroid.common.util.ThreadManager;
|
||||||
import com.imdroid.secapi.dto.GnssCalcData;
|
import com.imdroid.secapi.dto.GnssCalcData;
|
||||||
|
import com.imdroid.secapi.dto.GnssCalcDataMapper;
|
||||||
import com.imdroid.secapi.dto.GnssGroupCalc;
|
import com.imdroid.secapi.dto.GnssGroupCalc;
|
||||||
import com.imdroid.secapi.dto.GnssGroupCalcMapper;
|
import com.imdroid.secapi.dto.GnssGroupCalcMapper;
|
||||||
import com.imdroid.sideslope.bd.*;
|
import com.imdroid.sideslope.bd.*;
|
||||||
@ -44,6 +46,8 @@ public class SingleLineGNSSCalcService implements GNSSDataCalcService {
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
GnssGroupCalcMapper groupCalcMapper;
|
GnssGroupCalcMapper groupCalcMapper;
|
||||||
|
@Autowired
|
||||||
|
GnssCalcDataMapper dataMapper;
|
||||||
|
|
||||||
// 非线程安全,需加同步保护
|
// 非线程安全,需加同步保护
|
||||||
List<GnssGroupCalc> groupCalcList;
|
List<GnssGroupCalc> groupCalcList;
|
||||||
@ -222,7 +226,9 @@ public class SingleLineGNSSCalcService implements GNSSDataCalcService {
|
|||||||
new double[]{locationRecord.getRpose(),locationRecord.getRposn(),locationRecord.getRposd()});
|
new double[]{locationRecord.getRpose(),locationRecord.getRposn(),locationRecord.getRposd()});
|
||||||
}
|
}
|
||||||
else if(focusCalculator.getReferPoint() == null){
|
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()) {
|
else if(focusCalculator.getVer()==1 || focusCalculator.getVer()==3 || focusCalculator.isShocked()) {
|
||||||
@ -273,4 +279,18 @@ public class SingleLineGNSSCalcService implements GNSSDataCalcService {
|
|||||||
calculatorMap.remove(deviceId);
|
calculatorMap.remove(deviceId);
|
||||||
logger.info("device paras changed");
|
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