From 2132f0b4ad897c2f03aa727059fa225e5adec225 Mon Sep 17 00:00:00 2001 From: weidong Date: Wed, 24 Jan 2024 22:47:30 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=BC=98=E5=8C=96=E8=87=AA=E9=80=82?= =?UTF-8?q?=E5=BA=94=E5=91=A8=E6=9C=9F=E7=9A=84=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sec-beidou-fwd/src/test/java/DataTest.java | 27 ++++++++ .../sideslope/calc/GNSSCalcFilterService.java | 66 +++++++++---------- 2 files changed, 59 insertions(+), 34 deletions(-) create mode 100644 sec-beidou-fwd/src/test/java/DataTest.java diff --git a/sec-beidou-fwd/src/test/java/DataTest.java b/sec-beidou-fwd/src/test/java/DataTest.java new file mode 100644 index 00000000..254f3525 --- /dev/null +++ b/sec-beidou-fwd/src/test/java/DataTest.java @@ -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 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); + } +} diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/calc/GNSSCalcFilterService.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/calc/GNSSCalcFilterService.java index 4681ed19..bb3f9b75 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/calc/GNSSCalcFilterService.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/calc/GNSSCalcFilterService.java @@ -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 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 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); + } + } } } }