diff --git a/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataAccumulateController.java b/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataAccumulateController.java index 616a149..dbde976 100644 --- a/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataAccumulateController.java +++ b/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 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(); diff --git a/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataBaStatusController.java b/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataBaStatusController.java index 3523a4f..020373d 100644 --- a/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataBaStatusController.java +++ b/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 exportList = list.stream().map(item -> { ExportDeviceBaStatusDataDTO dto = new ExportDeviceBaStatusDataDTO(); BeanUtils.copyProperties(item, dto); + dto.setStatus111(commonOpt.status111Mapping(item.getStatus111())); return dto; }).toList(); diff --git a/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataMeasureController.java b/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataMeasureController.java index 2e34f8d..6d067bd 100644 --- a/dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataMeasureController.java +++ b/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 exportList = list.stream().map(item -> { ExportDeviceMeasureDataDTO dto = new ExportDeviceMeasureDataDTO(); BeanUtils.copyProperties(item, dto); + dto.setStatus111(commonOpt.status111Mapping(item.getStatus111())); return dto; }).toList(); diff --git a/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/DeviceInfoMapperExt.xml b/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/DeviceInfoMapperExt.xml index c09f402..82ef762 100644 --- a/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/DeviceInfoMapperExt.xml +++ b/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/DeviceInfoMapperExt.xml @@ -6,6 +6,7 @@ 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 + + + 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 + + + alert_history + left join device_info on alert_history.device_id = device_info.device_id + + 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 + + + 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 + + + alert_history + left join device_info on alert_history.device_id = device_info.device_id + + 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 diff --git a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/easyexcel/ExportDeviceAccumulateDataDTO.java b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/easyexcel/ExportDeviceAccumulateDataDTO.java index eedc59e..b1bfd38 100644 --- a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/easyexcel/ExportDeviceAccumulateDataDTO.java +++ b/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; diff --git a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/easyexcel/ExportDeviceBaStatusDataDTO.java b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/easyexcel/ExportDeviceBaStatusDataDTO.java index d6f7ef8..a882969 100644 --- a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/easyexcel/ExportDeviceBaStatusDataDTO.java +++ b/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; diff --git a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/easyexcel/ExportDeviceMeasureDataDTO.java b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/easyexcel/ExportDeviceMeasureDataDTO.java index 0006bb1..b0ff741 100644 --- a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/easyexcel/ExportDeviceMeasureDataDTO.java +++ b/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", "単位"}) diff --git a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/BaseData.java b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/BaseData.java index 4a32f7f..04675b4 100644 --- a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/BaseData.java +++ b/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; diff --git a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/common/CommonOpt.java b/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/common/CommonOpt.java index ae7dce7..45ac70a 100644 --- a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/common/CommonOpt.java +++ b/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; + }; + } + } diff --git a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataAlarmServiceImpl.java b/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataAlarmServiceImpl.java index 8a7fc46..23acb65 100644 --- a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataAlarmServiceImpl.java +++ b/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)); + } } } diff --git a/dongjian-dashboard-back-util/src/main/java/com/dongjian/dashboard/back/util/CommonUtil.java b/dongjian-dashboard-back-util/src/main/java/com/dongjian/dashboard/back/util/CommonUtil.java index 2a380a1..557eb2a 100644 --- a/dongjian-dashboard-back-util/src/main/java/com/dongjian/dashboard/back/util/CommonUtil.java +++ b/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() + "%"; + } }