1、健康检查增加连续无效解时长统计

This commit is contained in:
weidong 2025-04-02 20:05:44 +08:00
parent a5dd6e6b7d
commit 10d0044b01
5 changed files with 37 additions and 0 deletions

View File

@ -23,6 +23,7 @@ public class Ehm {
private Short offlinestatdays; private Short offlinestatdays;
private Integer offlinecount; private Integer offlinecount;
private Integer offlineminutes; private Integer offlineminutes;
private Integer invalidresultminutes;
private Integer calcstathours; private Integer calcstathours;
private Float stdeve; private Float stdeve;
private Float stdevn; private Float stdevn;

View File

@ -61,6 +61,8 @@ public class EhmTask{
// 检查过去N天离线次数和时长 // 检查过去N天离线次数和时长
checkOffline(ehm, status.getState()==GnssStatus.STATE_OFFLINE); checkOffline(ehm, status.getState()==GnssStatus.STATE_OFFLINE);
// 检查过去N天无效解总时长
checkInvalidGnssDataTime(ehm);
// 计算过去N小时标准差 // 计算过去N小时标准差
// 计算过去N小时有效解比例 // 计算过去N小时有效解比例
// 计算过去N小时固定解比例 // 计算过去N小时固定解比例
@ -111,6 +113,37 @@ public class EhmTask{
} }
} }
private void checkInvalidGnssDataTime(Ehm ehm){
LocalDateTime now = ehm.getCreatetime();
// 从告警消息里查询离线记录
QueryWrapper<WarningMsg> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("deviceid",ehm.getDeviceid());
queryWrapper.ge("createtime",now.minusDays(ehm.getOfflinestatdays()));
queryWrapper.eq("code",WarningCfg.TYPE_CONT_INVALID_RESULT);
List<WarningMsg> warningMsgList = warningMsgMapper.selectList(queryWrapper);
if(warningMsgList!=null){
int invalidGnssDataMinutes = 0;
LocalDateTime offlineEnd = null;
LocalDateTime offlineBegin = null;
for(WarningMsg warningMsg:warningMsgList){
// 读下一条纪录时才计算上一条的时间差因为cleartime有可能没有
if(offlineEnd==null) offlineEnd=warningMsg.getCreatetime();
if(offlineBegin!=null){
Duration duration = Duration.between(offlineBegin,offlineEnd);
invalidGnssDataMinutes+=duration.toMinutes();
}
offlineBegin = warningMsg.getCreatetime();
offlineEnd = warningMsg.getCleartime();
}
if(offlineEnd==null) offlineEnd=now;
if(offlineBegin!=null){
Duration duration = Duration.between(offlineBegin,offlineEnd);
invalidGnssDataMinutes+=duration.toMinutes();
}
ehm.setInvalidresultminutes(invalidGnssDataMinutes);
}
}
private void checkCalcResults(Ehm ehm){ private void checkCalcResults(Ehm ehm){
// 获取过去N小时的解算数据 // 获取过去N小时的解算数据
QueryWrapper<GnssCalcData> queryWrapper = new QueryWrapper<>(); QueryWrapper<GnssCalcData> queryWrapper = new QueryWrapper<>();

View File

@ -42,6 +42,7 @@ public class GnssEhmController extends BasicController implements CommonExcelSer
if(sortItems.size()==0) { if(sortItems.size()==0) {
sortItems.add("离线次数");sortSqls.add("order by offlinecount desc"); sortItems.add("离线次数");sortSqls.add("order by offlinecount desc");
sortItems.add("离线时长");sortSqls.add("order by offlineminutes desc"); sortItems.add("离线时长");sortSqls.add("order by offlineminutes desc");
sortItems.add("连续无效解时长");sortSqls.add("order by invalidresultminutes desc");
sortItems.add("东标准差");sortSqls.add("order by stdeve desc"); sortItems.add("东标准差");sortSqls.add("order by stdeve desc");
sortItems.add("北标准差");sortSqls.add("order by stdevn desc"); sortItems.add("北标准差");sortSqls.add("order by stdevn desc");
sortItems.add("天标准差");sortSqls.add("order by stdevu desc"); sortItems.add("天标准差");sortSqls.add("order by stdevu desc");

View File

@ -377,6 +377,7 @@ CREATE TABLE IF NOT EXISTS `ehm` (
`offlinestatdays` smallint DEFAULT NULL COMMENT '离线统计周期', `offlinestatdays` smallint DEFAULT NULL COMMENT '离线统计周期',
`offlinecount` int DEFAULT NULL COMMENT '离线统计周期内的离线次数', `offlinecount` int DEFAULT NULL COMMENT '离线统计周期内的离线次数',
`offlineminutes` int DEFAULT NULL COMMENT '离线统计周期内的离线时长', `offlineminutes` int DEFAULT NULL COMMENT '离线统计周期内的离线时长',
`invalidresultminutes` int DEFAULT NULL COMMENT '离线统计周期内的连续无效解时长',
`calcstathours` int DEFAULT NULL COMMENT '数据分析周期', `calcstathours` int DEFAULT NULL COMMENT '数据分析周期',
`stdeve` float DEFAULT NULL COMMENT '标准差', `stdeve` float DEFAULT NULL COMMENT '标准差',
`stdevn` float DEFAULT NULL COMMENT '标准差', `stdevn` float DEFAULT NULL COMMENT '标准差',

View File

@ -80,6 +80,7 @@
{field: 'calcstathours', title: '数据分析周期(小时)'}, {field: 'calcstathours', title: '数据分析周期(小时)'},
{field: 'offlinecount', title: '离线次数'}, {field: 'offlinecount', title: '离线次数'},
{field: 'offlineminutes', title: '离线分钟数'}, {field: 'offlineminutes', title: '离线分钟数'},
{field: 'invalidresultminutes', title: '连续无效解分钟数'},
{field: 'stdeve', title: '东标准差'}, {field: 'stdeve', title: '东标准差'},
{field: 'stdevn', title: '北标准差'}, {field: 'stdevn', title: '北标准差'},
{field: 'stdevu', title: '天标准差'}, {field: 'stdevu', title: '天标准差'},