feat(ems): 新增能耗统计分析功能
- 新增环比分析、同比分析接口与实现 - 支持按设备、能源类型、区域(含子区域)过滤统计 - 实现日、周、月、年维度的数据汇总与对比计算 - 扩展 Mapper 层支持带设备列表的时间区间查询 - 新增多个 VO 类用于封装分析结果数据结构 - 完善 Controller 接口接收过滤参数并调用服务层 -优化区域递归查找逻辑以支持层级结构查询 - 提供工具方法处理空值与比率计算 - 添加新的 BO 类用于传递查询与范围参数 - 更新配置文件注释但未启用新路由规则
This commit is contained in:
@@ -13,4 +13,18 @@ public class EmsEnergyConsumptionQueryBo {
|
||||
* 月份,用于按天汇总(格式:yyyy-MM)
|
||||
*/
|
||||
private String month;
|
||||
|
||||
/** 能源类型ID(可选) */
|
||||
private Long energyTypeId;
|
||||
/** 计量设备ID(可选) */
|
||||
private Long meterId;
|
||||
/** 区域ID(可选,含子区域) */
|
||||
private Long locationId;
|
||||
|
||||
/** 周期类型:day/week/month/year(用于环比分析) */
|
||||
private String periodType;
|
||||
/** 日期关键字:
|
||||
* day=yyyy-MM-dd;week=年内周数(1-53);month=本年月份(1-12);year=yyyy
|
||||
*/
|
||||
private String dateKey;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.klp.ems.domain.bo;
|
||||
|
||||
import lombok.Data;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class MeterFilterBo {
|
||||
private Long energyTypeId;
|
||||
private List<Long> locationIds;
|
||||
private Long meterId;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.klp.ems.domain.bo;
|
||||
|
||||
import lombok.Data;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class TimeRangeWithMetersBo {
|
||||
private String start;
|
||||
private String end;
|
||||
private List<Long> meterIds;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.klp.ems.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 环比分析返回:指定周期(天/周/月/年)本期与上期的序列
|
||||
*/
|
||||
@Data
|
||||
public class ChainAnalysisVo {
|
||||
/** 周期类型:day/week/month/year */
|
||||
private String periodType;
|
||||
/** 本期标签(例如当前月的每一天、当前年的每个月等) */
|
||||
private List<String> currentLabels;
|
||||
/** 上期标签 */
|
||||
private List<String> previousLabels;
|
||||
/** 本期数值 */
|
||||
private List<Double> currentValues;
|
||||
/** 上期数值 */
|
||||
private List<Double> previousValues;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,16 +1,29 @@
|
||||
package com.klp.ems.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 环比概况
|
||||
*/
|
||||
@Data
|
||||
public class EnergyChainRatioVo {
|
||||
private Double todayUsage; // 今日用能
|
||||
private Double yesterdayUsage; // 昨日同期
|
||||
private Double thisMonthUsage; // 当月累计
|
||||
private Double lastMonthUsage; // 上月同期
|
||||
private Double lastYearUsage; // 去年同期
|
||||
/** 今日用能 */
|
||||
private Double todayUsage;
|
||||
/** 昨日同期用能(昨日同一时间段累计) */
|
||||
private Double yesterdayUsage;
|
||||
/** 当月用能(到当前时刻累计) */
|
||||
private Double thisMonthUsage;
|
||||
/** 上月同期用能(上月到同一日同一时刻累计) */
|
||||
private Double lastMonthUsage;
|
||||
/** 当前年用能(到当前时刻累计) */
|
||||
private Double currentYearUsage;
|
||||
/** 去年同期用能(去年到同一日同一时刻累计) */
|
||||
private Double lastYearUsage;
|
||||
|
||||
private Double dailyChainRate; // 日环比 (%)
|
||||
private Double monthlyChainRate; // 月环比 (%)
|
||||
private Double yearOnYearRate; // 年同比 (%)
|
||||
/** 日环比 (%) = (今日 - 昨日同期) / 昨日同期 * 100 */
|
||||
private Double dailyChainRate;
|
||||
/** 月环比 (%) = (当月 - 上月同期) / 上月同期 * 100 */
|
||||
private Double monthlyChainRate;
|
||||
/** 年同比 (%) = (当前年 - 去年同期) / 去年同期 * 100 */
|
||||
private Double yearOnYearRate;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.klp.ems.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 同比分析返回
|
||||
*/
|
||||
@Data
|
||||
public class YearOnYearVo {
|
||||
/** 年份,例如 2025 */
|
||||
private String year;
|
||||
/** 上一年,例如 2024 */
|
||||
private String lastYear;
|
||||
/** 当年每月总用能,长度最多12 */
|
||||
private List<Double> currentYearMonthly;
|
||||
/** 上一年每月总用能,长度最多12 */
|
||||
private List<Double> lastYearMonthly;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user