From 115bc5301bf37d3bd4f8fafca2019e88961394b8 Mon Sep 17 00:00:00 2001 From: weidong Date: Sat, 3 Feb 2024 10:15:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0d331=E5=91=8A=E8=AD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../D3F2StopIndicationMessageExecutor.java | 12 ++++--- .../com/imdroid/sideslope/sal/Device.java | 12 +++++-- .../sideslope/service/WarningService.java | 3 ++ .../sideslope/service/WarningServiceImpl.java | 31 +++++++++++++++++++ 4 files changed, 51 insertions(+), 7 deletions(-) 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 86af7faa..67f44e89 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 @@ -8,6 +8,7 @@ import com.imdroid.sideslope.sal.Device; import com.imdroid.sideslope.sal.DeviceService; import com.imdroid.sideslope.service.DataPersistService; import com.imdroid.common.util.ThreadManager; +import com.imdroid.sideslope.service.WarningService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -34,6 +35,8 @@ public class D3F2StopIndicationMessageExecutor implements Executor { + LocalDateTime uploadTime = multiLineGNSSCalcService.checkUploadTime( + device.getDeviceId(), device.getTenantId()); dataPersistService.saveDeviceTrxStat(message, (uploadTime!=null)); // 通知beidou服务设备休眠 beidouClient.onDeviceStop(deviceId,device.getTenantId()); if(uploadTime!=null){ beidouClient.onGnssUpload(deviceId,device.getTenantId(),uploadTime); } + // 检查告警 + warningService.checkD3xxNum(device); }); return 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 702f94fb..86b3b1f1 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 @@ -35,20 +35,26 @@ public class Device { private Integer calcGroupId; private Short opMode; + int d3xxCount = 0; int d3xxbytes = 0; - int b562bytes = 0; + int d341Count = 0; + int d341bytes = 0; public void updateD331Bytes(int bytes){ + d3xxCount++; d3xxbytes += bytes; } public void updateD341Bytes(int bytes){ - b562bytes += bytes; + d341Count++; + d341bytes += bytes; } public void clearStat(){ + d3xxCount = 0; d3xxbytes = 0; - b562bytes = 0; + d341Count = 0; + d341bytes = 0; } } diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/WarningService.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/WarningService.java index 7fa60aac..2325d6b2 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/WarningService.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/WarningService.java @@ -3,6 +3,7 @@ package com.imdroid.sideslope.service; import com.imdroid.secapi.dto.GnssStatus; import com.imdroid.secapi.dto.GnssStatusMsg; import com.imdroid.secapi.dto.GnssTrxMsg; +import com.imdroid.sideslope.sal.Device; public interface WarningService { /*** @@ -22,4 +23,6 @@ public interface WarningService { * @param msg */ void checkTrx(GnssTrxMsg msg, GnssStatus curStatus); + + void checkD3xxNum(Device device); } diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/WarningServiceImpl.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/WarningServiceImpl.java index c7cf9bce..c227a453 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/WarningServiceImpl.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/WarningServiceImpl.java @@ -2,6 +2,7 @@ package com.imdroid.sideslope.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.imdroid.secapi.dto.*; +import com.imdroid.sideslope.sal.Device; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -158,4 +159,34 @@ public class WarningServiceImpl implements WarningService { else if((warningCode & warningLevel2Code) !=0 ) return WarningCfg.LEVEL_2; else return WarningCfg.LEVEL_1; } + + @Override + public void checkD3xxNum(Device device){ + if(device.getD3xxCount() > 0) { + GnssStatus status = gnssStatusMapper.getByDeviceId(device.getDeviceId()); + if(status != null) { + // 清除b562告警 + status.setWarningcode(status.getWarningcode() & ~WarningCfg.TYPE_NO_FIXED_RESULT); + status.setWarningcode(status.getWarningcode() & ~WarningCfg.TYPE_LESS_B562); + + // 检查d331告警 + if(cfgMap.size() == 0) refreshCfg(); + int[] threshold = cfgMap.get(WarningCfg.TYPE_LESS_D3XX); + if(threshold != null && (device.getD3xxCount() < threshold[1])) { + WarningMsg warningMsg = new WarningMsg(); + warningMsg.setDeviceid(device.getDeviceId()); + warningMsg.setTenantid(device.getTenantId()); + warningMsg.setCreatetime(LocalDateTime.now()); + warningMsg.setDevicetype(WarningCfg.TYPE_GNSS); + warningMsg.setCode(WarningCfg.TYPE_LESS_D3XX); + warningMsg.setLevel((short) threshold[0]); + warningMsg.setInfo(WarningCfg.TYPE_NAME_LESS_D3XX+"," + device.getD3xxCount()); + warningMsgMapper.insert(warningMsg); + status.setWarningcode(status.getWarningcode()|WarningCfg.TYPE_LESS_D3XX); + } + status.setWarning(getWarningLevel(status.getWarningcode())); + gnssStatusMapper.updateById(status); + } + } + } }