gongchunyi
5 天以前 e9b4ceeea014f9d81263672f3d9c46a567c39591
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
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;
    }
}