Browse Source

告警已过去时间

master
review512jwy@163.com 1 month ago
parent
commit
67658609ba
  1. 1
      dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_cn.yml
  2. 1
      dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_en.yml
  3. 1
      dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_jp.yml
  4. 32
      dongjian-dashboard-back-dao/src/main/resources/mappers/ex/DeviceInfoMapperExt.xml
  5. 6
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/DeviceAlarmData.java
  6. 15
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/common/CommonOpt.java
  7. 4
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataAlarmServiceImpl.java
  8. 55
      dongjian-dashboard-back-util/src/main/java/com/dongjian/dashboard/back/util/DurationData.java

1
dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_cn.yml

@ -77,6 +77,7 @@ msgcn:
levelNameExist: 层级名称已存在 levelNameExist: 层级名称已存在
invalidParentLevel: 无效的父级层级 invalidParentLevel: 无效的父级层级
levelReferencedByChildren: 已被下级层级绑定,请先解绑后再删除 levelReferencedByChildren: 已被下级层级绑定,请先解绑后再删除
elapsedTime: '{0}天{1}小时{2}分'
operationLogMap: operationLogMap:
addRole: 新增角色 addRole: 新增角色
editRole: 编辑角色 editRole: 编辑角色

1
dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_en.yml

@ -77,6 +77,7 @@ msgen:
levelNameExist: Level name already exists levelNameExist: Level name already exists
invalidParentLevel: Invalid parent level invalidParentLevel: Invalid parent level
levelReferencedByChildren: It is bound by child levels. Please unbind them before deleting. levelReferencedByChildren: It is bound by child levels. Please unbind them before deleting.
elapsedTime: '{0}d {1}h {2}m'
operationLogMap: operationLogMap:
addRole: Add Role addRole: Add Role
editRole: Edit Role editRole: Edit Role

1
dongjian-dashboard-back-common/src/main/resources/config/language/msg/msg_jp.yml

@ -77,6 +77,7 @@ msgjp:
levelNameExist: 階層名は既に存在しています levelNameExist: 階層名は既に存在しています
invalidParentLevel: 無効な上位階層です invalidParentLevel: 無効な上位階層です
levelReferencedByChildren: 下位階層に紐づいています。削除する前に紐付けを解除してください。 levelReferencedByChildren: 下位階層に紐づいています。削除する前に紐付けを解除してください。
elapsedTime: '{0}日{1}時間{2}分間'
operationLogMap: operationLogMap:
addRole: ロールを追加 addRole: ロールを追加
editRole: ロールを編集 editRole: ロールを編集

32
dongjian-dashboard-back-dao/src/main/resources/mappers/ex/DeviceInfoMapperExt.xml

@ -76,6 +76,15 @@
<when test="sortField == 'uploadTimestamp'"> <when test="sortField == 'uploadTimestamp'">
drr.receive_ts drr.receive_ts
</when> </when>
<when test="sortField == 'deviceName'">
device_info.device_name
</when>
<when test="sortField == 'monitoringPointName'">
device_info.monitoring_point_name
</when>
<when test="sortField == 'dataProviderName'">
data_provider.name
</when>
<otherwise> <otherwise>
drr.receive_ts drr.receive_ts
</otherwise> </otherwise>
@ -88,6 +97,7 @@
DESC DESC
</otherwise> </otherwise>
</choose> </choose>
,device_info.id desc
</sql> </sql>
@ -179,6 +189,15 @@
<when test="sortField == 'uploadTimestamp'"> <when test="sortField == 'uploadTimestamp'">
bss.latest_ts bss.latest_ts
</when> </when>
<when test="sortField == 'deviceName'">
device_info.device_name
</when>
<when test="sortField == 'monitoringPointName'">
device_info.monitoring_point_name
</when>
<when test="sortField == 'dataProviderName'">
data_provider.name
</when>
<otherwise> <otherwise>
bss.latest_ts bss.latest_ts
</otherwise> </otherwise>
@ -191,6 +210,7 @@
DESC DESC
</otherwise> </otherwise>
</choose> </choose>
,device_info.id desc
</sql> </sql>
<select id="getDevice4BaStatusData" resultType="com.dongjian.dashboard.back.vo.data.DeviceBaStatusData"> <select id="getDevice4BaStatusData" resultType="com.dongjian.dashboard.back.vo.data.DeviceBaStatusData">
@ -250,8 +270,17 @@
<when test="sortField == 'uploadTimestamp'"> <when test="sortField == 'uploadTimestamp'">
alert_history.receive_ts alert_history.receive_ts
</when> </when>
<when test="sortField == 'deviceName'">
device_info.device_name
</when>
<when test="sortField == 'monitoringPointName'">
device_info.monitoring_point_name
</when>
<when test="sortField == 'dataProviderName'">
data_provider.name
</when>
<otherwise> <otherwise>
device_info.id alert_history.receive_ts
</otherwise> </otherwise>
</choose> </choose>
<choose> <choose>
@ -262,6 +291,7 @@
DESC DESC
</otherwise> </otherwise>
</choose> </choose>
,device_info.id desc
</sql> </sql>
<select id="getDevice4AlarmData" resultType="com.dongjian.dashboard.back.vo.data.DeviceAlarmData"> <select id="getDevice4AlarmData" resultType="com.dongjian.dashboard.back.vo.data.DeviceAlarmData">

6
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/DeviceAlarmData.java

@ -33,5 +33,11 @@ public class DeviceAlarmData extends BaseData{
@Schema(description = "资产记号",example = "122") @Schema(description = "资产记号",example = "122")
private String assetSymbol; private String assetSymbol;
@Schema(description = "已过去时长(毫秒级时间戳)", example = "15306854254")
private Long elapsedTime;
@Schema(description = "已过去时长", example = "177日3時間54分間")
private String elapsedTimeStr;
} }

15
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/common/CommonOpt.java

@ -2,6 +2,7 @@ package com.dongjian.dashboard.back.service.common;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.sql.*; import java.sql.*;
import java.text.MessageFormat;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.ZoneId; import java.time.ZoneId;
@ -13,12 +14,14 @@ import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.dongjian.dashboard.back.common.Constants; import com.dongjian.dashboard.back.common.Constants;
import com.dongjian.dashboard.back.common.language.msg.MsgLanguageChange;
import com.dongjian.dashboard.back.common.response.ResponseCode; import com.dongjian.dashboard.back.common.response.ResponseCode;
import com.dongjian.dashboard.back.common.response.SimpleDataResponse; import com.dongjian.dashboard.back.common.response.SimpleDataResponse;
import com.dongjian.dashboard.back.dao.ex.*; import com.dongjian.dashboard.back.dao.ex.*;
import com.dongjian.dashboard.back.dto.device.LineDataSearchParams; import com.dongjian.dashboard.back.dto.device.LineDataSearchParams;
import com.dongjian.dashboard.back.model.*; import com.dongjian.dashboard.back.model.*;
import com.dongjian.dashboard.back.util.DESUtil; import com.dongjian.dashboard.back.util.DESUtil;
import com.dongjian.dashboard.back.util.DurationData;
import com.dongjian.dashboard.back.vo.building.BindedBuildingVO; import com.dongjian.dashboard.back.vo.building.BindedBuildingVO;
import com.dongjian.dashboard.back.vo.company.AuroraInfo; import com.dongjian.dashboard.back.vo.company.AuroraInfo;
import com.dongjian.dashboard.back.vo.device.LineData; import com.dongjian.dashboard.back.vo.device.LineData;
@ -68,6 +71,9 @@ public class CommonOpt {
@Autowired @Autowired
private DeviceInfoMapperExt deviceInfoMapperExt; private DeviceInfoMapperExt deviceInfoMapperExt;
@Autowired
private MsgLanguageChange msgLanguageChange;
/** /**
* 根据自身企业ID获取子企业ID的listlist包含自身ID * 根据自身企业ID获取子企业ID的listlist包含自身ID
@ -650,4 +656,13 @@ public class CommonOpt {
return null; return null;
} }
} }
public String formatElapsedTime(Long elapsedTime, Integer languageType) {
DurationData durationData = DurationData.fromMilliseconds(elapsedTime);
return MessageFormat.format(
msgLanguageChange.getParameterMapByCode(languageType, "elapsedTime"),
durationData.getDays(),
durationData.getHours(),
durationData.getMinutes());
}
} }

4
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataAlarmServiceImpl.java

@ -98,6 +98,8 @@ public class DeviceDataAlarmServiceImpl implements DeviceDataAlarmService {
if (CollectionUtils.isNotEmpty(resultList)) { if (CollectionUtils.isNotEmpty(resultList)) {
// 查询 favorited_device 表中所有设备的 device_id // 查询 favorited_device 表中所有设备的 device_id
List<String> favoritedDeviceIds = favoritedDeviceMapperExt.getFavoritedDeviceIds(); List<String> favoritedDeviceIds = favoritedDeviceMapperExt.getFavoritedDeviceIds();
long currentTs = System.currentTimeMillis();
for (DeviceAlarmData data : resultList){ for (DeviceAlarmData data : resultList){
String deviceId = data.getDeviceId().toLowerCase(); String deviceId = data.getDeviceId().toLowerCase();
// 判断设备是否在 favorited_device 表中 // 判断设备是否在 favorited_device 表中
@ -109,6 +111,8 @@ public class DeviceDataAlarmServiceImpl implements DeviceDataAlarmService {
data.setAlertLevelStr(msgLanguageChange.getParameterMapByCode(languageType, "alertLevel_" + data.getAlertLevel())); data.setAlertLevelStr(msgLanguageChange.getParameterMapByCode(languageType, "alertLevel_" + data.getAlertLevel()));
data.setConfirmStatusStr(msgLanguageChange.getParameterMapByCode(languageType, "confirmStatus_" + data.getConfirmStatus())); data.setConfirmStatusStr(msgLanguageChange.getParameterMapByCode(languageType, "confirmStatus_" + data.getConfirmStatus()));
data.setHandleStatusStr(msgLanguageChange.getParameterMapByCode(languageType, "handleStatus_" + data.getHandleStatus())); data.setHandleStatusStr(msgLanguageChange.getParameterMapByCode(languageType, "handleStatus_" + data.getHandleStatus()));
data.setElapsedTime(currentTs - data.getUploadTimestamp());
data.setElapsedTimeStr(commonOpt.formatElapsedTime(data.getElapsedTime(), languageType));
} }
} }

55
dongjian-dashboard-back-util/src/main/java/com/dongjian/dashboard/back/util/DurationData.java

@ -0,0 +1,55 @@
package com.dongjian.dashboard.back.util;
import java.util.Locale;
import java.util.ResourceBundle;
/**
* 持续时间对象包含结构化时间单位
*/
public class DurationData {
private long days;
private long hours;
private long minutes;
private long seconds;
// 构造函数
public DurationData(long days, long hours, long minutes, long seconds) {
this.days = days;
this.hours = hours;
this.minutes = minutes;
this.seconds = seconds;
}
// Getters
public long getDays() { return days; }
public long getHours() { return hours; }
public long getMinutes() { return minutes; }
public long getSeconds() { return seconds; }
// 从毫秒创建
public static DurationData fromMilliseconds(long ms) {
if (ms <= 0) {
return new DurationData(0, 0, 0, 0);
}
long totalSeconds = ms / 1000;
long days = totalSeconds / (24 * 3600);
long hours = (totalSeconds % (24 * 3600)) / 3600;
long minutes = (totalSeconds % 3600) / 60;
long seconds = totalSeconds % 60;
return new DurationData(days, hours, minutes, seconds);
}
@Override
public String toString() {
return String.format("DurationData{days=%d, hours=%d, minutes=%d, seconds=%d}",
days, hours, minutes, seconds);
}
public static void main(String[] args){
DurationData durationData = DurationData.fromMilliseconds(15306504932L);
System.out.println(durationData);
System.out.println(durationData.getDays());
}
}
Loading…
Cancel
Save