From b66315469c994ae3b294e26d6d770cbb488442c3 Mon Sep 17 00:00:00 2001 From: weidong Date: Tue, 9 Jul 2024 19:41:10 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=97=E6=B3=954=E4=BC=98=E5=8C=96=EF=BC=8C?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8F=82=E8=80=83=E5=80=BC=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E6=9C=80=E8=BF=91=E4=B8=80=E4=B8=AA=E6=9C=89=E6=95=88=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../calc/SingleLineGNSSCalcService.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/calc/SingleLineGNSSCalcService.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/calc/SingleLineGNSSCalcService.java index b4fc7e49..6c897932 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/calc/SingleLineGNSSCalcService.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/calc/SingleLineGNSSCalcService.java @@ -1,7 +1,9 @@ package com.imdroid.sideslope.calc; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.imdroid.common.util.ThreadManager; import com.imdroid.secapi.dto.GnssCalcData; +import com.imdroid.secapi.dto.GnssCalcDataMapper; import com.imdroid.secapi.dto.GnssGroupCalc; import com.imdroid.secapi.dto.GnssGroupCalcMapper; import com.imdroid.sideslope.bd.*; @@ -44,6 +46,8 @@ public class SingleLineGNSSCalcService implements GNSSDataCalcService { @Autowired GnssGroupCalcMapper groupCalcMapper; + @Autowired + GnssCalcDataMapper dataMapper; // 非线程安全,需加同步保护 List groupCalcList; @@ -222,7 +226,9 @@ public class SingleLineGNSSCalcService implements GNSSDataCalcService { new double[]{locationRecord.getRpose(),locationRecord.getRposn(),locationRecord.getRposd()}); } 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()) { @@ -273,4 +279,18 @@ public class SingleLineGNSSCalcService implements GNSSDataCalcService { calculatorMap.remove(deviceId); logger.info("device paras changed"); } + + double[] getLatestPos(String deviceId){ + QueryWrapper 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; + } }