package com.ruoyi.energymeter.vo;
|
|
import io.swagger.v3.oas.annotations.media.Schema;
|
import lombok.Data;
|
|
import java.io.Serializable;
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* 能耗实时监控:三类介质最新用量、负荷状态、近 7 日趋势与电表 15 分钟实时曲线。
|
*
|
* <p>水表、蒸汽表只有日冻结数据,展示的是最近一个有数据的业务日;电表额外提供当日 15 分钟实时电量与功率。</p>
|
*/
|
@Data
|
@Schema(description = "能耗实时监控")
|
public class EnergyRealtimeVO implements Serializable {
|
|
private static final long serialVersionUID = 1L;
|
|
private String generatedAt;
|
|
@Schema(description = "业务日期 yyyy-MM-dd")
|
private String today;
|
|
private Boolean mockMode;
|
|
@Schema(description = "数据范围说明")
|
private String scopeLabel;
|
|
@Schema(description = "单台设备ID,全部设备时为空")
|
private Long meterId;
|
|
@Schema(description = "三类介质实时概览")
|
private List<Medium> media = new ArrayList<>();
|
|
@Schema(description = "近 7 日三类介质用量趋势")
|
private List<TrendPoint> trend = new ArrayList<>();
|
|
@Schema(description = "电表实时数据")
|
private Electric electric;
|
|
@Schema(description = "运行提示")
|
private List<Alert> alerts = new ArrayList<>();
|
|
@Data
|
@Schema(description = "单类介质实时概览")
|
public static class Medium implements Serializable {
|
|
private static final long serialVersionUID = 1L;
|
|
private String meterType;
|
|
@Schema(description = "介质名称:水表 / 电表 / 蒸汽表")
|
private String meterName;
|
|
@Schema(description = "单位 m3 / kWh")
|
private String unit;
|
|
private Integer deviceCount = 0;
|
|
private Integer onlineCount = 0;
|
|
@Schema(description = "最近一个有数据的业务日用量")
|
private BigDecimal latestUsage;
|
|
@Schema(description = "最近用量业务日期 yyyy-MM-dd")
|
private String latestUsageDate;
|
|
@Schema(description = "上一个有数据的业务日用量")
|
private BigDecimal previousUsage;
|
|
@Schema(description = "上一用量业务日期 yyyy-MM-dd")
|
private String previousUsageDate;
|
|
@Schema(description = "较上一业务日变化百分比")
|
private BigDecimal compareRate;
|
|
@Schema(description = "本月累计用量")
|
private BigDecimal monthTotal;
|
|
@Schema(description = "近 7 日日均用量")
|
private BigDecimal avgDaily;
|
|
@Schema(description = "近 7 日峰值用量")
|
private BigDecimal peakDaily;
|
|
@Schema(description = "最近表码")
|
private BigDecimal latestReading;
|
|
@Schema(description = "最近表码时间")
|
private String latestReadingTime;
|
|
@Schema(description = "最近成功采集时间")
|
private String lastSuccessAt;
|
|
@Schema(description = "当前有功功率 kW,仅电表")
|
private BigDecimal currentPower;
|
|
@Schema(description = "功率因数 0-1,仅电表")
|
private BigDecimal powerFactor;
|
|
@Schema(description = "状态 OK/STALE/EMPTY/NO_DEVICE")
|
private String status;
|
|
private String statusText;
|
}
|
|
@Data
|
@Schema(description = "按日趋势")
|
public static class TrendPoint implements Serializable {
|
|
private static final long serialVersionUID = 1L;
|
|
private String day;
|
|
private BigDecimal water;
|
|
private BigDecimal electric;
|
|
private BigDecimal gas;
|
}
|
|
@Data
|
@Schema(description = "电表实时数据")
|
public static class Electric implements Serializable {
|
|
private static final long serialVersionUID = 1L;
|
|
@Schema(description = "当日数据起始,如 00:00")
|
private String rangeStart;
|
|
@Schema(description = "当日数据截止,如 17:58")
|
private String rangeEnd;
|
|
@Schema(description = "今日累计用电量 kWh")
|
private BigDecimal todayTotal;
|
|
@Schema(description = "昨日同期累计用电量 kWh")
|
private BigDecimal yesterdaySamePeriodTotal;
|
|
@Schema(description = "当前有功功率 kW")
|
private BigDecimal currentPower;
|
|
@Schema(description = "当前功率因数")
|
private BigDecimal powerFactor;
|
|
@Schema(description = "今日 15 分钟曲线")
|
private List<CurvePoint> series = new ArrayList<>();
|
}
|
|
@Data
|
@Schema(description = "电表 15 分钟点")
|
public static class CurvePoint implements Serializable {
|
|
private static final long serialVersionUID = 1L;
|
|
@Schema(description = "时间片结束时间 HH:mm")
|
private String time;
|
|
@Schema(description = "时间片有功电量 kWh")
|
private BigDecimal active;
|
|
@Schema(description = "折算有功功率 kW")
|
private BigDecimal power;
|
}
|
|
@Data
|
@Schema(description = "运行提示")
|
public static class Alert implements Serializable {
|
|
private static final long serialVersionUID = 1L;
|
|
@Schema(description = "info/warning")
|
private String level;
|
|
private String text;
|
}
|
}
|