feat(ems): 添加告警、能耗记录和能源费率模块- 新增告警实体类 EmsAlert 及相关业务对象、控制器、映射器和服务实现

- 新增能耗记录实体类 EmsEnergyConsumption 及相关业务对象、控制器、映射器和服务实现
- 新增能源费率实体类 EmsEnergyRate 及相关业务对象、控制器、映射器和服务实现
- 实现各模块的基础 CRUD 功能,包括分页查询、导出 Excel 等操作
- 配置 MyBatis 映射文件及逻辑删除支持
This commit is contained in:
2025-09-28 09:54:42 +08:00
parent 32059525f0
commit 16776ffdc8
51 changed files with 3058 additions and 1 deletions

View File

@@ -0,0 +1,81 @@
package com.klp.ems.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 告警视图对象 ems_alert
*
* @author klp
* @date 2025-09-28
*/
@Data
@ExcelIgnoreUnannotated
public class EmsAlertVo {
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Long alertId;
/**
* 关联计量设备
*/
@ExcelProperty(value = "关联计量设备")
private Long meterId;
/**
* 告警类型0=异常用量,1=高用量,2=设备故障
*/
@ExcelProperty(value = "告警类型0=异常用量,1=高用量,2=设备故障")
private Long alertType;
/**
* 实际值
*/
@ExcelProperty(value = "实际值")
private BigDecimal actualValue;
/**
* 告警时间
*/
@ExcelProperty(value = "告警时间")
private Date alertTime;
/**
* 告警状态0=待处理,1=已处理
*/
@ExcelProperty(value = "告警状态0=待处理,1=已处理")
private Long status;
/**
* 处理人(不设外键)
*/
@ExcelProperty(value = "处理人", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "不=设外键")
private Long resolvedBy;
/**
* 处理时间
*/
@ExcelProperty(value = "处理时间")
private Date resolvedTime;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,81 @@
package com.klp.ems.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 能耗记录视图对象 ems_energy_consumption
*
* @author Joshi
* @date 2025-09-28
*/
@Data
@ExcelIgnoreUnannotated
public class EmsEnergyConsumptionVo {
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Long energyConsumptionId;
/**
* 关联计量设备
*/
@ExcelProperty(value = "关联计量设备")
private Long meterId;
/**
* 起始读数
*/
@ExcelProperty(value = "起始读数")
private BigDecimal startReading;
/**
* 结束读数
*/
@ExcelProperty(value = "结束读数")
private BigDecimal endReading;
/**
* 消耗量
*/
@ExcelProperty(value = "消耗量")
private BigDecimal consumption;
/**
* 起始时间
*/
@ExcelProperty(value = "起始时间")
private Date startTime;
/**
* 结束时间
*/
@ExcelProperty(value = "结束时间")
private Date endTime;
/**
* 记录人(不设外键)
*/
@ExcelProperty(value = "记录人", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "不=设外键")
private Long recordedBy;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,68 @@
package com.klp.ems.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 能源费率currency 为 INT0=CNY,1=USD,2=EUR视图对象 ems_energy_rate
*
* @author Joshi
* @date 2025-09-28
*/
@Data
@ExcelIgnoreUnannotated
public class EmsEnergyRateVo {
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Long energyRateId;
/**
* 关联能源类型
*/
@ExcelProperty(value = "关联能源类型")
private Long energyTypeId;
/**
* 费率
*/
@ExcelProperty(value = "费率")
private BigDecimal rate;
/**
* 货币0=CNY,1=USD,2=EUR
*/
@ExcelProperty(value = "货币0=CNY,1=USD,2=EUR")
private Long currency;
/**
* 生效日期
*/
@ExcelProperty(value = "生效日期")
private Date effectiveDate;
/**
* 失效日期NULL表示长期有效
*/
@ExcelProperty(value = "失效日期NULL表示长期有效")
private Date expiryDate;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,59 @@
package com.klp.ems.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 能源类型(阈值已移除)视图对象 ems_energy_type
*
* @author Joshi
* @date 2025-09-28
*/
@Data
@ExcelIgnoreUnannotated
public class EmsEnergyTypeVo {
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Long energyTypeId;
/**
* 能源名称,如:电力、自来水、天然气
*/
@ExcelProperty(value = "能源名称,如:电力、自来水、天然气")
private String name;
/**
* 计量单位kWh、m³
*/
@ExcelProperty(value = "计量单位kWh、m³")
private String unit;
/**
* 能源编码
*/
@ExcelProperty(value = "能源编码")
private String code;
/**
* 能源描述
*/
@ExcelProperty(value = "能源描述")
private String description;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,59 @@
package com.klp.ems.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 位置视图对象 ems_location
*
* @author Joshi
* @date 2025-09-28
*/
@Data
@ExcelIgnoreUnannotated
public class EmsLocationVo {
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Long locationId;
/**
* 区域名称
*/
@ExcelProperty(value = "区域名称")
private String name;
/**
* 父级区域ID用于构建区域层级
*/
@ExcelProperty(value = "父级区域ID用于构建区域层级")
private Long parentId;
/**
* 区域描述
*/
@ExcelProperty(value = "区域描述")
private String description;
/**
* 详细地址
*/
@ExcelProperty(value = "详细地址")
private String address;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,93 @@
package com.klp.ems.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 计量设备(阈值移至此处)视图对象 ems_meter
*
* @author Joshi
* @date 2025-09-28
*/
@Data
@ExcelIgnoreUnannotated
public class EmsMeterVo {
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Long meterId;
/**
* 设备编号
*/
@ExcelProperty(value = "设备编号")
private String meterCode;
/**
* 关联能源类型
*/
@ExcelProperty(value = "关联能源类型")
private Long energyTypeId;
/**
* 安装位置
*/
@ExcelProperty(value = "安装位置")
private Long locationId;
/**
* 设备型号
*/
@ExcelProperty(value = "设备型号")
private String model;
/**
* 制造商
*/
@ExcelProperty(value = "制造商")
private String manufacturer;
/**
* 安装日期
*/
@ExcelProperty(value = "安装日期")
private Date installDate;
/**
* 设备状态0=在用,1=停用,2=维护
*/
@ExcelProperty(value = "设备状态0=在用,1=停用,2=维护")
private Long status;
/**
* 上次校准日期
*/
@ExcelProperty(value = "上次校准日期")
private Date lastCalibrationDate;
/**
* 阈值(按设备设置)
*/
@ExcelProperty(value = "阈值", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "按=设备设置")
private BigDecimal thresholdValue;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}