Browse Source

告警设备接口增加searchType=4类型、导出表头对齐

zhc
review512jwy@163.com 4 weeks ago
parent
commit
f0db8e6e43
  1. 8
      dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataAccumulateController.java
  2. 4
      dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataBaStatusController.java
  3. 4
      dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataMeasureController.java
  4. 41
      dongjian-dashboard-back-dao/src/main/resources/mappers/ex/DeviceInfoMapperExt.xml
  5. 27
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/easyexcel/ExportDeviceAccumulateDataDTO.java
  6. 19
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/easyexcel/ExportDeviceBaStatusDataDTO.java
  7. 17
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/easyexcel/ExportDeviceMeasureDataDTO.java
  8. 3
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/BaseData.java
  9. 14
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/common/CommonOpt.java
  10. 18
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataAlarmServiceImpl.java
  11. 27
      dongjian-dashboard-back-util/src/main/java/com/dongjian/dashboard/back/util/CommonUtil.java

8
dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataAccumulateController.java

@ -2,6 +2,7 @@ package com.dongjian.dashboard.back.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.util.StringUtils;
import com.dongjian.dashboard.back.common.exception.BusinessException;
import com.dongjian.dashboard.back.common.response.PageInfo;
import com.dongjian.dashboard.back.common.response.PageResponse;
@ -14,6 +15,8 @@ import com.dongjian.dashboard.back.dto.device.LineDataSearchParams;
import com.dongjian.dashboard.back.easyexcel.ExportDeviceAccumulateDataDTO;
import com.dongjian.dashboard.back.easyexcel.LanguageDynamicHeaderAdapter;
import com.dongjian.dashboard.back.service.DeviceDataAccumulateService;
import com.dongjian.dashboard.back.service.common.CommonOpt;
import com.dongjian.dashboard.back.util.CommonUtil;
import com.dongjian.dashboard.back.vo.data.DeviceAccumulateData;
import com.dongjian.dashboard.back.vo.device.LineData;
import io.swagger.v3.oas.annotations.Operation;
@ -48,6 +51,8 @@ public class DeviceDataAccumulateController {
@Autowired
private DeviceDataAccumulateService deviceDataAccumulateService;
@Autowired
private CommonOpt commonOpt;
@OperationLog(operation = "getCumulativeDataList", remark = "")
@Operation(summary = "获取积算数据列表")
@ -99,6 +104,9 @@ public class DeviceDataAccumulateController {
List<ExportDeviceAccumulateDataDTO> exportList = list.stream().map(item -> {
ExportDeviceAccumulateDataDTO dto = new ExportDeviceAccumulateDataDTO();
BeanUtils.copyProperties(item, dto);
dto.setLastYearRatio(CommonUtil.ratio(item.getCumulativeValue(), item.getLastYearValue()));
dto.setYesterdayRatio(CommonUtil.ratio(item.getCumulativeValue(), item.getYesterdayValue()));
dto.setStatus111(commonOpt.status111Mapping(item.getStatus111()));
return dto;
}).toList();

4
dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataBaStatusController.java

@ -14,6 +14,7 @@ import com.dongjian.dashboard.back.dto.device.LineDataSearchParams;
import com.dongjian.dashboard.back.easyexcel.ExportDeviceBaStatusDataDTO;
import com.dongjian.dashboard.back.easyexcel.LanguageDynamicHeaderAdapter;
import com.dongjian.dashboard.back.service.DeviceDataBaStatusService;
import com.dongjian.dashboard.back.service.common.CommonOpt;
import com.dongjian.dashboard.back.vo.data.DeviceBaStatusData;
import com.dongjian.dashboard.back.vo.device.LineData;
import io.swagger.v3.oas.annotations.Operation;
@ -48,6 +49,8 @@ public class DeviceDataBaStatusController {
@Autowired
private DeviceDataBaStatusService deviceDataBaStatusService;
@Autowired
private CommonOpt commonOpt;
@OperationLog(operation = "getBaStatusDataList", remark = "")
@Operation(summary = "获取状态数据列表")
@ -99,6 +102,7 @@ public class DeviceDataBaStatusController {
List<ExportDeviceBaStatusDataDTO> exportList = list.stream().map(item -> {
ExportDeviceBaStatusDataDTO dto = new ExportDeviceBaStatusDataDTO();
BeanUtils.copyProperties(item, dto);
dto.setStatus111(commonOpt.status111Mapping(item.getStatus111()));
return dto;
}).toList();

4
dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataMeasureController.java

@ -14,6 +14,7 @@ import com.dongjian.dashboard.back.dto.device.LineDataSearchParams;
import com.dongjian.dashboard.back.easyexcel.ExportDeviceMeasureDataDTO;
import com.dongjian.dashboard.back.easyexcel.LanguageDynamicHeaderAdapter;
import com.dongjian.dashboard.back.service.DeviceDataMeasureService;
import com.dongjian.dashboard.back.service.common.CommonOpt;
import com.dongjian.dashboard.back.vo.data.DeviceMeasureData;
import com.dongjian.dashboard.back.vo.device.LineData;
import io.swagger.v3.oas.annotations.Operation;
@ -48,6 +49,8 @@ public class DeviceDataMeasureController {
@Autowired
private DeviceDataMeasureService deviceDataMeasureService;
@Autowired
private CommonOpt commonOpt;
@OperationLog(operation = "getMeasureDataList", remark = "")
@Operation(summary = "获取计测数据列表")
@ -99,6 +102,7 @@ public class DeviceDataMeasureController {
List<ExportDeviceMeasureDataDTO> exportList = list.stream().map(item -> {
ExportDeviceMeasureDataDTO dto = new ExportDeviceMeasureDataDTO();
BeanUtils.copyProperties(item, dto);
dto.setStatus111(commonOpt.status111Mapping(item.getStatus111()));
return dto;
}).toList();

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

@ -6,6 +6,7 @@
<sql id="deviceDataSelect">
basic_floor.floor_id as floorId,
basic_floor.name as floorName,
basic_building.name as buildingName,
device_info.id,
device_info.device_id,
device_info.device_name,
@ -305,8 +306,24 @@
1 as classId,
basic_monitoring_asset.`symbol` assetSymbol
from
alert_history
left join device_info on alert_history.device_id = device_info.device_id
<choose>
<when test="searchType == 4">
device_info
left join (
SELECT
*,
ROW_NUMBER() OVER (
PARTITION BY device_id
ORDER BY receive_ts DESC
) AS rn
FROM alert_history
) alert_history on alert_history.device_id = device_info.device_id AND alert_history.rn = 1
</when>
<otherwise>
alert_history
left join device_info on alert_history.device_id = device_info.device_id
</otherwise>
</choose>
left join basic_monitoring_asset on device_info.asset_id = basic_monitoring_asset.equipment_id
left join basic_space on basic_monitoring_asset.space_id = basic_space.space_id
left join basic_floor on basic_space.floor_id = basic_floor.floor_id
@ -354,8 +371,24 @@
1 as classId,
basic_monitoring_asset.`symbol` assetSymbol
from
alert_history
left join device_info on alert_history.device_id = device_info.device_id
<choose>
<when test="searchType == 4">
device_info
left join (
SELECT
*,
ROW_NUMBER() OVER (
PARTITION BY device_id
ORDER BY receive_ts DESC
) AS rn
FROM alert_history
) alert_history on alert_history.device_id = device_info.device_id AND alert_history.rn = 1
</when>
<otherwise>
alert_history
left join device_info on alert_history.device_id = device_info.device_id
</otherwise>
</choose>
left join basic_monitoring_asset on device_info.asset_id = basic_monitoring_asset.equipment_id
left join basic_space on basic_monitoring_asset.space_id = basic_space.space_id
left join basic_floor on basic_space.floor_id = basic_floor.floor_id

27
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/easyexcel/ExportDeviceAccumulateDataDTO.java

@ -10,32 +10,35 @@ public class ExportDeviceAccumulateDataDTO {
@ExcelProperty(value = {"上传时间", "Upload Time", "計測日時"}, converter = TimestampConverter.class)
private Long uploadTimestamp;
@ExcelProperty({"设施名", "Facility Name", "施設名"})
private String buildingName;
@ExcelProperty({"监视点名称", "Monitoring Point Name", "監視点名称"})
private String monitoringPointName;
@ExcelProperty({"楼层名称", "Floor Name", "フロア"})
@ExcelProperty({"楼层名称", "Floor", "フロア"})
private String floorName;
@ExcelProperty({"监控点分类名称", "Monitoring Point Category Name", "分類"})
@ExcelProperty({"监控点分类名称", "Category", "分類"})
private String monitoringPointCategoryName;
@ExcelProperty({"网关信息名称", "Gateway Info Name", "接続先情報"})
private String gatewayInfoName;
// @ExcelProperty({"网关信息名称", "Gateway Info Name", "接続先情報"})
// private String gatewayInfoName;
@ExcelProperty({"数据提供方名称", "Data Provider Name", "データソース"})
private String dataProviderName;
// @ExcelProperty({"数据提供方名称", "Data Provider Name", "データソース"})
// private String dataProviderName;
@ExcelProperty({"设备状态", "Device Status", "デバイス状態"})
@ExcelProperty({"设备状态", "Device Status", "ステータスフラグ"})
private String status111;
@ExcelProperty({"积值", "Cumulative Value", "計測値"})
@ExcelProperty({"积值", "Accumulated Value", "積算値"})
private String cumulativeValue;
@ExcelProperty({"昨日值", "Yesterday's Value", "前日値"})
private String yesterdayValue;
@ExcelProperty({"前日比(%)", "Previous Day Ratio(%)", "前日比(%)"})
private String yesterdayRatio;
@ExcelProperty({"去年值", "Last Year's Value", "前年値"})
private String lastYearValue;
@ExcelProperty({"前年比(%)", "Previous Year Ratio(%)", "前年比(%)"})
private String lastYearRatio;
@ExcelProperty({"单位", "Unit", "単位"})
private String unit;

19
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/easyexcel/ExportDeviceBaStatusDataDTO.java

@ -10,6 +10,9 @@ public class ExportDeviceBaStatusDataDTO {
@ExcelProperty(value = {"上传时间", "Upload Time", "計測日時"}, converter = TimestampConverter.class)
private Long uploadTimestamp;
@ExcelProperty({"设施名", "Facility Name", "施設名"})
private String buildingName;
@ExcelProperty({"监视点名称", "Monitoring Point Name", "監視点名称"})
private String monitoringPointName;
@ -19,17 +22,17 @@ public class ExportDeviceBaStatusDataDTO {
@ExcelProperty({"监控点分类名称", "Monitoring Point Category Name", "分類"})
private String monitoringPointCategoryName;
@ExcelProperty({"网关信息名称", "Gateway Info Name", "接続先情報"})
private String gatewayInfoName;
// @ExcelProperty({"网关信息名称", "Gateway Info Name", "接続先情報"})
// private String gatewayInfoName;
@ExcelProperty({"数据提供方名称", "Data Provider Name", "データソース"})
private String dataProviderName;
// @ExcelProperty({"数据提供方名称", "Data Provider Name", "データソース"})
// private String dataProviderName;
@ExcelProperty({"设备状态", "Device Status", "デバイス状態"})
private String status111;
@ExcelProperty({"状态", "Status", "状態"})
private String runningStatus;
@ExcelProperty(value = {"运行状态", "Running status", "状態"}, converter = RunningStatusConverter.class)
private Integer runningStatus;
@ExcelProperty({"设备状态", "Device Status", "ステータスフラグ"})
private String status111;
@ExcelProperty(value = {"上次运行时间", "Last start time", "前回ON"}, converter = TimestampConverter.class)
private Long lastStartTime;

17
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/easyexcel/ExportDeviceMeasureDataDTO.java

@ -10,6 +10,9 @@ public class ExportDeviceMeasureDataDTO {
@ExcelProperty(value = {"上传时间", "Upload Time", "計測日時"}, converter = TimestampConverter.class)
private Long uploadTimestamp;
@ExcelProperty({"设施名", "Facility Name", "施設名"})
private String buildingName;
@ExcelProperty({"监视点名称", "Monitoring Point Name", "監視点名称"})
private String monitoringPointName;
@ -19,22 +22,22 @@ public class ExportDeviceMeasureDataDTO {
@ExcelProperty({"监控点分类名称", "Monitoring Point Category Name", "分類"})
private String monitoringPointCategoryName;
@ExcelProperty({"网关信息名称", "Gateway Info Name", "接続先情報"})
private String gatewayInfoName;
// @ExcelProperty({"网关信息名称", "Gateway Info Name", "接続先情報"})
// private String gatewayInfoName;
@ExcelProperty({"数据提供方名称", "Data Provider Name", "データソース"})
private String dataProviderName;
// @ExcelProperty({"数据提供方名称", "Data Provider Name", "データソース"})
// private String dataProviderName;
@ExcelProperty({"设备状态", "Device Status", "デバイス状態"})
@ExcelProperty({"设备状态", "Device Status", "ステータスフラグ"})
private String status111;
@ExcelProperty({"测量值", "Measurement value", "計測値"})
private String measurementValue;
@ExcelProperty({"最大值", "Maximum Value", "最値"})
@ExcelProperty({"最大值", "Maximum Value", "最値"})
private String maxValue;
@ExcelProperty({"最小值", "Minimum Value", "最値"})
@ExcelProperty({"最小值", "Minimum Value", "最値"})
private String minValue;
@ExcelProperty({"单位", "Unit", "単位"})

3
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/BaseData.java

@ -15,6 +15,9 @@ public class BaseData {
@Schema(description = "device name", example = "12-34")
private String deviceName;
@Schema(description = "building name", example = "66")
private String buildingName;
@Schema(description = "upload timestamp", example = "1740033000234")
private Long uploadTimestamp;

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

@ -756,4 +756,18 @@ public class CommonOpt {
return result;
}
public String status111Mapping(String status111) {
if(StringUtils.isBlank(status111)){
return null;
}
return switch (status111) {
case "0" -> "正常";
case "128" -> "サ一ビス停止";
case "64" -> "オーバーライド";
case "32" -> "障害";
case "16" -> "アラ一ム発生中";
default -> null;
};
}
}

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

@ -108,11 +108,19 @@ public class DeviceDataAlarmServiceImpl implements DeviceDataAlarmService {
} else {
data.setCollected(0);
}
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));
if (null != data.getAlertLevel()) {
data.setAlertLevelStr(msgLanguageChange.getParameterMapByCode(languageType, "alertLevel_" + data.getAlertLevel()));
}
if (null != data.getConfirmStatus()) {
data.setConfirmStatusStr(msgLanguageChange.getParameterMapByCode(languageType, "confirmStatus_" + data.getConfirmStatus()));
}
if (null != data.getHandleStatus()) {
data.setHandleStatusStr(msgLanguageChange.getParameterMapByCode(languageType, "handleStatus_" + data.getHandleStatus()));
}
if (null != data.getUploadTimestamp()) {
data.setElapsedTime(currentTs - data.getUploadTimestamp());
data.setElapsedTimeStr(commonOpt.formatElapsedTime(data.getElapsedTime(), languageType));
}
}
}

27
dongjian-dashboard-back-util/src/main/java/com/dongjian/dashboard/back/util/CommonUtil.java

@ -847,4 +847,31 @@ public class CommonUtil {
System.out.println(formatDecimal("123.456,7.898", 2));
}
public static String ratio(String a, String b) {
if (StringUtils.isBlank(a) || StringUtils.isBlank(b)) {
return "-";
}
a = a.trim();
b = b.trim();
BigDecimal numA;
BigDecimal numB;
try {
numA = new BigDecimal(a);
numB = new BigDecimal(b);
} catch (NumberFormatException e) {
logger.error("参数必须是合法数字字符串", e);
return "-";
}
// 除 0 校验
if (numB.compareTo(BigDecimal.ZERO) == 0) {
logger.error("除数不能为 0");
return "-";
}
BigDecimal result = numA.divide(numB, 2, RoundingMode.HALF_UP);
return result.multiply(new BigDecimal(100)).toPlainString() + "%";
}
}

Loading…
Cancel
Save