1、优化自适应周期的判断

This commit is contained in:
weidong 2024-01-24 22:47:30 +08:00
parent c769c41184
commit 2132f0b4ad
2 changed files with 59 additions and 34 deletions

View File

@ -0,0 +1,27 @@
import com.imdroid.beidou_fwd.entity.KingMaData;
import com.imdroid.common.util.GsonUtil;
import com.imdroid.secapi.dto.GnssCalcData;
import com.imdroid.secapi.utils.HexUtil;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
public class DataTest {
public static void main(String[] args) {
List<KingMaData> dataList = new ArrayList<>(3);
for(int i=0;i<3;i++) {
KingMaData data = new KingMaData();
data.setDataTime(LocalDateTime.now().toString());
data.setProjectId("12345");
data.setPointId("2350123");
data.setFlag(1);
data.setPhys(new KingMaData.Phys(100.23+i*3, 1234.56+i*2, 555.66+i));
dataList.add(data);
}
String json = GsonUtil.toJson(dataList);
System.out.println(json);
}
}

View File

@ -171,23 +171,6 @@ public class GNSSCalcFilterService {
void refreshFilterCycle(String deviceId, GnssGroupCalc groupCalc, GnssCalcData curCalcData){
LocalDateTime now = LocalDateTime.now();
VaryFilterCycle varyCycle = autoCycleDevices.get(deviceId);
// 如果当前处于变周期阶段则根据时间调整周期
if(varyCycle != null){
if(varyCycle.filterCycleHour >= groupCalc.getFilter_hour()){
//变周期结束
autoCycleDevices.remove(deviceId);
}
else {
if (now.isAfter(varyCycle.startTime.plusHours(1))) {
varyCycle.filterCycleHour++;
varyCycle.startTime = now;
logger.info(deviceId + ": refresh filter cycle "+varyCycle.filterCycleHour);
}
}
}
// 否则判断是否将进入变周期
else{
// 比较当前均值和FilterMinHour前的均值之差是否超过门限
LocalDateTime cmpTime = now.minusHours(groupCalc.getFilter_min_hour());
QueryWrapper<GnssCalcData> queryWrapper = new QueryWrapper<>();
@ -202,11 +185,26 @@ public class GNSSCalcFilterService {
double gapE = Math.abs(gnssCalcData.getAuxe() - curCalcData.getAuxe());
double gapN = Math.abs(gnssCalcData.getAuxn() - curCalcData.getAuxn());
if (gapE >= groupCalc.getAuto_threshold() || gapN >= groupCalc.getAuto_threshold()) {
VaryFilterCycle varyCycle1 = new VaryFilterCycle();
varyCycle1.startTime = now;
varyCycle1.filterCycleHour = groupCalc.getFilter_min_hour();
autoCycleDevices.put(deviceId, varyCycle1);
logger.info(deviceId + ": filter cycle change to " + varyCycle1.filterCycleHour);
VaryFilterCycle varyCycle = new VaryFilterCycle();
varyCycle.startTime = now;
varyCycle.filterCycleHour = groupCalc.getFilter_min_hour();
autoCycleDevices.put(deviceId, varyCycle);
logger.info(deviceId + ": filter cycle change to " + varyCycle.filterCycleHour);
}
else {
VaryFilterCycle varyCycle = autoCycleDevices.get(deviceId);
if(varyCycle != null){
if(varyCycle.filterCycleHour >= groupCalc.getFilter_hour()){
//变周期结束
autoCycleDevices.remove(deviceId);
}
else {
if (now.isAfter(varyCycle.startTime.plusHours(1))) {
varyCycle.filterCycleHour++;
varyCycle.startTime = now;
logger.info(deviceId + ": refresh filter cycle "+varyCycle.filterCycleHour);
}
}
}
}
}