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: 层级名称已存在
invalidParentLevel: 无效的父级层级
levelReferencedByChildren: 已被下级层级绑定,请先解绑后再删除
elapsedTime: '{0}天{1}小时{2}分'
operationLogMap:
addRole: 新增角色
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
invalidParentLevel: Invalid parent level
levelReferencedByChildren: It is bound by child levels. Please unbind them before deleting.
elapsedTime: '{0}d {1}h {2}m'
operationLogMap:
addRole: Add Role
editRole: Edit Role

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

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

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

@ -76,6 +76,15 @@
<when test="sortField == 'uploadTimestamp'">
drr.receive_ts
</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>
drr.receive_ts
</otherwise>
@ -88,6 +97,7 @@
DESC
</otherwise>
</choose>
,device_info.id desc
</sql>
@ -179,6 +189,15 @@
<when test="sortField == 'uploadTimestamp'">
bss.latest_ts
</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>
bss.latest_ts
</otherwise>
@ -191,6 +210,7 @@
DESC
</otherwise>
</choose>
,device_info.id desc
</sql>
<select id="getDevice4BaStatusData" resultType="com.dongjian.dashboard.back.vo.data.DeviceBaStatusData">
@ -250,8 +270,17 @@
<when test="sortField == 'uploadTimestamp'">
alert_history.receive_ts
</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>
device_info.id
alert_history.receive_ts
</otherwise>
</choose>
<choose>
@ -262,6 +291,7 @@
DESC
</otherwise>
</choose>
,device_info.id desc
</sql>
<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")
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.sql.*;
import java.text.MessageFormat;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
@ -13,12 +14,14 @@ import java.util.regex.Pattern;
import java.util.stream.Collectors;
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.SimpleDataResponse;
import com.dongjian.dashboard.back.dao.ex.*;
import com.dongjian.dashboard.back.dto.device.LineDataSearchParams;
import com.dongjian.dashboard.back.model.*;
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.company.AuroraInfo;
import com.dongjian.dashboard.back.vo.device.LineData;
@ -67,6 +70,9 @@ public class CommonOpt {
private DeviceRawdataRealtimeMapperExt deviceRawdataRealtimeMapperExt;
@Autowired
private DeviceInfoMapperExt deviceInfoMapperExt;
@Autowired
private MsgLanguageChange msgLanguageChange;
/**
@ -650,4 +656,13 @@ public class CommonOpt {
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)) {
// 查询 favorited_device 表中所有设备的 device_id
List<String> favoritedDeviceIds = favoritedDeviceMapperExt.getFavoritedDeviceIds();
long currentTs = System.currentTimeMillis();
for (DeviceAlarmData data : resultList){
String deviceId = data.getDeviceId().toLowerCase();
// 判断设备是否在 favorited_device 表中
@ -109,6 +111,8 @@ public class DeviceDataAlarmServiceImpl implements DeviceDataAlarmService {
data.setAlertLevelStr(msgLanguageChange.getParameterMapByCode(languageType, "alertLevel_" + data.getAlertLevel()));
data.setConfirmStatusStr(msgLanguageChange.getParameterMapByCode(languageType, "confirmStatus_" + data.getConfirmStatus()));
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