优化高程跟踪算法

This commit is contained in:
weidong 2024-09-10 09:17:17 +08:00
parent 8b9ddcb278
commit bb575eab8f

View File

@ -143,13 +143,13 @@ public class AbnormalDeviceProcessor{
}
}
List<GnssCalcData> getLastTwo(String deviceId){
List<GnssCalcData> getLastTwo(String deviceId,long hours){
LocalDateTime now = LocalDateTime.now();
QueryWrapper<GnssCalcData> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("deviceid",deviceId);
queryWrapper.eq("enabled",true);
queryWrapper.isNotNull("rpose");
queryWrapper.ge("createtime",now.minusHours(2));
if(hours>0) queryWrapper.ge("createtime",now.minusHours(hours));
queryWrapper.orderByDesc("createtime");
queryWrapper.last("limit 2");
@ -159,23 +159,20 @@ public class AbnormalDeviceProcessor{
void checkNotGoodDevice(String deviceId, String refDeviceId1){
LocalDateTime validTime = LocalDateTime.now().minusMinutes(10);
// 待修改的点
List<GnssCalcData> calcDataList = getLastTwo(deviceId);
if(calcDataList.size() == 2){
List<GnssCalcData> calcDataList = getLastTwo(deviceId,0);
if(calcDataList.size() < 2) return;
if(calcDataList.get(0).getCreatetime().isBefore(validTime)) return;
}
else return;
// 参考点
List<GnssCalcData> calcDataList1 = getLastTwo(refDeviceId1);
double deltaU = (Math.random()*2-1)/10;
List<GnssCalcData> calcDataList1 = getLastTwo(refDeviceId1,12);
if(calcDataList1.size()==2){
double deltaU = 0;
if(calcDataList1.get(0).getCreatetime().isBefore(validTime)){
deltaU = (Math.random()*2-1)/10;
if(calcDataList1.get(0).getCreatetime().isAfter(validTime)){
deltaU = calcDataList1.get(0).getRposd() - calcDataList1.get(1).getRposd();
}
}
else deltaU = calcDataList1.get(0).getRposd() - calcDataList1.get(1).getRposd();
GnssCalcData calcData = calcDataList.get(0);
calcData.setRposd(calcDataList.get(1).getRposd()+deltaU);
gnssDataMapper.updateById(calcData);
}
}
}