1、优化自适应周期的判断
This commit is contained in:
parent
c769c41184
commit
2132f0b4ad
27
sec-beidou-fwd/src/test/java/DataTest.java
Normal file
27
sec-beidou-fwd/src/test/java/DataTest.java
Normal 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);
|
||||
}
|
||||
}
|
||||
@ -171,42 +171,40 @@ 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);
|
||||
// 比较当前均值和FilterMinHour前的均值之差是否超过门限
|
||||
LocalDateTime cmpTime = now.minusHours(groupCalc.getFilter_min_hour());
|
||||
QueryWrapper<GnssCalcData> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("deviceid", deviceId);
|
||||
queryWrapper.le("createtime",cmpTime.format(dateFormatter));
|
||||
queryWrapper.eq("enabled",true);
|
||||
queryWrapper.isNotNull("rpose");
|
||||
queryWrapper.last("limit 1");
|
||||
queryWrapper.orderByDesc("createtime");
|
||||
GnssCalcData gnssCalcData = repository.selectOne(queryWrapper);
|
||||
if (gnssCalcData != null) {
|
||||
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 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 {
|
||||
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<>();
|
||||
queryWrapper.eq("deviceid", deviceId);
|
||||
queryWrapper.le("createtime",cmpTime.format(dateFormatter));
|
||||
queryWrapper.eq("enabled",true);
|
||||
queryWrapper.isNotNull("rpose");
|
||||
queryWrapper.last("limit 1");
|
||||
queryWrapper.orderByDesc("createtime");
|
||||
GnssCalcData gnssCalcData = repository.selectOne(queryWrapper);
|
||||
if (gnssCalcData != null) {
|
||||
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 = 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user