From 11cf68fbf6df8fe428c2139d9e6b04edcea84384 Mon Sep 17 00:00:00 2001 From: weidong Date: Sat, 3 Feb 2024 17:03:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=BB=8F=E7=BA=AC=E5=BA=A6?= =?UTF-8?q?=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/imdroid/secapi/dto/GnssStatus.java | 3 +++ .../sideslope/executor/D331RtcmMessageExecutor.java | 9 +++++++-- .../sideslope/executor/D341LocationMessageExecutor.java | 5 +++++ .../executor/D3F2StopIndicationMessageExecutor.java | 2 +- .../src/main/java/com/imdroid/sideslope/sal/Device.java | 4 ++++ .../imdroid/sideslope/service/DataPersistService.java | 4 ++-- .../sideslope/service/DataPersistServiceImpl.java | 8 ++++++-- sec-beidou/src/main/resources/db/schema.sql | 5 ++++- 8 files changed, 32 insertions(+), 8 deletions(-) diff --git a/sec-api/src/main/java/com/imdroid/secapi/dto/GnssStatus.java b/sec-api/src/main/java/com/imdroid/secapi/dto/GnssStatus.java index de278de8..bc0bc462 100644 --- a/sec-api/src/main/java/com/imdroid/secapi/dto/GnssStatus.java +++ b/sec-api/src/main/java/com/imdroid/secapi/dto/GnssStatus.java @@ -46,4 +46,7 @@ public class GnssStatus { Integer warningcode; Short warning; Integer noreslutcount; + Double latitude; + Double longitude; + Double altitude; } diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D331RtcmMessageExecutor.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D331RtcmMessageExecutor.java index 29251364..ba50d644 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D331RtcmMessageExecutor.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D331RtcmMessageExecutor.java @@ -58,12 +58,17 @@ public class D331RtcmMessageExecutor implements Executor Gga gga = message.getGga(); if(gga != null) { device1.updateSatelitesNum(gga.getSatellitesInUsed()); - logger.info(message.getId()+ + if(gga.getQuality()>0 && gga.getQuality()<6) { + device1.setLatitude(gga.getLatitude()); + device1.setLongitude(gga.getLongitude()); + device1.setAltitude(gga.getAltitude()); + } + /*logger.info(message.getId()+ " lat: "+gga.getLatitude()+ " lon:"+gga.getLongitude()+ " alt: "+gga.getAltitude()+ " sat: "+gga.getSatellitesInUsed()+ - " quality: "+gga.getQuality()); + " quality: "+gga.getQuality());*/ } return null; diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D341LocationMessageExecutor.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D341LocationMessageExecutor.java index 50f74a6d..4901a3af 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D341LocationMessageExecutor.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D341LocationMessageExecutor.java @@ -40,6 +40,11 @@ public class D341LocationMessageExecutor implements Executor0 && gga.getQuality()<6) { + device.setLatitude(gga.getLatitude()); + device.setLongitude(gga.getLongitude()); + device.setAltitude(gga.getAltitude()); + } } ThreadManager.getFixedThreadPool().submit(() -> { diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D3F2StopIndicationMessageExecutor.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D3F2StopIndicationMessageExecutor.java index c3e4bc45..a6430c9b 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D3F2StopIndicationMessageExecutor.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D3F2StopIndicationMessageExecutor.java @@ -56,7 +56,7 @@ public class D3F2StopIndicationMessageExecutor implements Executor { LocalDateTime uploadTime = multiLineGNSSCalcService.checkUploadTime( device.getDeviceId(), device.getTenantId()); - dataPersistService.saveDeviceTrxStat(message, (uploadTime!=null), device.getSatelitesInUse()); + dataPersistService.saveDeviceTrxStat(message, (uploadTime!=null), device); // 通知beidou服务设备休眠 beidouClient.onDeviceStop(deviceId,device.getTenantId()); if(uploadTime!=null){ diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/sal/Device.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/sal/Device.java index 8e6470e6..e0843612 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/sal/Device.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/sal/Device.java @@ -41,6 +41,10 @@ public class Device { int d341bytes = 0; int satelitesInUse = 0; + Double latitude; + Double longitude; + Double altitude; + public void updateD331Bytes(int bytes){ d3xxCount++; d3xxbytes += bytes; diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/DataPersistService.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/DataPersistService.java index 0b9171fe..af1c23d0 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/DataPersistService.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/DataPersistService.java @@ -3,6 +3,7 @@ package com.imdroid.sideslope.service; import com.imdroid.secapi.dto.GnssStatus; import com.imdroid.sideslope.message.D3F0SelfCheckMessage; import com.imdroid.sideslope.message.D3F2StopIndicationMessage; +import com.imdroid.sideslope.sal.Device; /** * 设备数据持久化接口,保存: @@ -17,7 +18,6 @@ public interface DataPersistService { GnssStatus getDeviceState(String deviceId); void updateDeviceState(GnssStatus gnssStatus); void saveDeviceState(D3F0SelfCheckMessage d3F0SelfCheckMessage); - - void saveDeviceTrxStat(D3F2StopIndicationMessage d3F2StopIndicationMessage,boolean isUploading,int satelitesNum); + void saveDeviceTrxStat(D3F2StopIndicationMessage d3F2StopIndicationMessage, boolean isUploading, Device device); } diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/DataPersistServiceImpl.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/DataPersistServiceImpl.java index bc8803a8..06be8979 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/DataPersistServiceImpl.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/DataPersistServiceImpl.java @@ -4,6 +4,7 @@ import com.imdroid.secapi.dto.*; import com.imdroid.sideslope.message.BaseMessage; import com.imdroid.sideslope.message.D3F0SelfCheckMessage; import com.imdroid.sideslope.message.D3F2StopIndicationMessage; +import com.imdroid.sideslope.sal.Device; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -86,7 +87,7 @@ public class DataPersistServiceImpl implements DataPersistService { } @Override - public void saveDeviceTrxStat(D3F2StopIndicationMessage message, boolean isUploading,int satelitesNum) { + public void saveDeviceTrxStat(D3F2StopIndicationMessage message, boolean isUploading, Device device) { try { // 添加到trxmsg里 GnssTrxMsg trxMsg = message.getTrxMsg(); @@ -104,7 +105,10 @@ public class DataPersistServiceImpl implements DataPersistService { deviceState.setRxbytes(rxbytes);*/ deviceState.setD3xxbytes(trxMsg.getD3xxbytes()); deviceState.setB562bytes(trxMsg.getB562bytes()); - deviceState.setSatelliteinuse(satelitesNum); + deviceState.setSatelliteinuse(device.getSatelitesInUse()); + deviceState.setLatitude(device.getLatitude()); + deviceState.setLongitude(device.getLongitude()); + deviceState.setAltitude(device.getAltitude()); deviceState.setState(isUploading?GnssStatus.STATE_UPLOADING:GnssStatus.STATE_IDLE); deviceStateRepository.updateById(deviceState); } diff --git a/sec-beidou/src/main/resources/db/schema.sql b/sec-beidou/src/main/resources/db/schema.sql index 75b80782..c2fd2a40 100644 --- a/sec-beidou/src/main/resources/db/schema.sql +++ b/sec-beidou/src/main/resources/db/schema.sql @@ -111,7 +111,7 @@ CREATE TABLE IF NOT EXISTS `gnssstatus` ( `voltage` int DEFAULT 0, `temperature` float DEFAULT 0, `humidity` float DEFAULT 0, - `satelliteinuse` float DEFAULT 0, + `satelliteinuse` int DEFAULT 0, `txbytes` int DEFAULT 0, `rxbytes` int DEFAULT 0, `b562bytes` int DEFAULT 0, @@ -120,6 +120,9 @@ CREATE TABLE IF NOT EXISTS `gnssstatus` ( `warningcode` int DEFAULT 0, `warning` smallint DEFAULT 0, `noreslutcount` int DEFAULT 0, + `latitude` double DEFAULT NULL, + `longitude` double DEFAULT NULL, + `altitude` double DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;