From 1f4aa569e3740aedcc2cd7f41a0313c378203607 Mon Sep 17 00:00:00 2001 From: chiguyong Date: Tue, 24 Mar 2026 00:21:40 +0800 Subject: [PATCH] feat: add energy monitoring entities (EnergyMeter, EnergyConsumption) --- .../pms/mdm/entity/EnergyConsumption.java | 62 ++++++++++++++ .../com/ether/pms/mdm/entity/EnergyMeter.java | 80 +++++++++++++++++++ 2 files changed, 142 insertions(+) create mode 100644 module-mdm/src/main/java/com/ether/pms/mdm/entity/EnergyConsumption.java create mode 100644 module-mdm/src/main/java/com/ether/pms/mdm/entity/EnergyMeter.java diff --git a/module-mdm/src/main/java/com/ether/pms/mdm/entity/EnergyConsumption.java b/module-mdm/src/main/java/com/ether/pms/mdm/entity/EnergyConsumption.java new file mode 100644 index 0000000..6c2c2fb --- /dev/null +++ b/module-mdm/src/main/java/com/ether/pms/mdm/entity/EnergyConsumption.java @@ -0,0 +1,62 @@ +package com.ether.pms.mdm.entity; + +import jakarta.persistence.*; +import lombok.Data; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.UUID; + +@Entity +@Table(name = "ops_energy_consumption") +@Data +public class EnergyConsumption { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + private UUID id; + + @Column(name = "project_id", nullable = false) + private UUID projectId; + + @Column(name = "meter_id", nullable = false) + private UUID meterId; + + @Column(name = "consumption_date", nullable = false) + private LocalDate consumptionDate; + + @Column(name = "previous_reading", precision = 12, scale = 2) + private BigDecimal previousReading; + + @Column(name = "current_reading", precision = 12, scale = 2) + private BigDecimal currentReading; + + @Column(nullable = false, precision = 12, scale = 2) + private BigDecimal consumption; + + @Column(precision = 10, scale = 2) + private BigDecimal amount; + + @Column(name = "recorded_by") + private UUID recordedBy; + + @Column(name = "record_method") + @Enumerated(EnumType.STRING) + private RecordMethod recordMethod = RecordMethod.MANUAL; + + public enum RecordMethod { + MANUAL, // 手动录入 + IOT // IoT自动采集 + } + + @Column(columnDefinition = "TEXT") + private String remarks; + + @Column(name = "created_at") + private LocalDateTime createdAt; + + @PrePersist + public void prePersist() { + createdAt = LocalDateTime.now(); + } +} \ No newline at end of file diff --git a/module-mdm/src/main/java/com/ether/pms/mdm/entity/EnergyMeter.java b/module-mdm/src/main/java/com/ether/pms/mdm/entity/EnergyMeter.java new file mode 100644 index 0000000..86137da --- /dev/null +++ b/module-mdm/src/main/java/com/ether/pms/mdm/entity/EnergyMeter.java @@ -0,0 +1,80 @@ +package com.ether.pms.mdm.entity; + +import jakarta.persistence.*; +import lombok.Data; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.UUID; + +@Entity +@Table(name = "ops_energy_meter") +@Data +public class EnergyMeter { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + private UUID id; + + @Column(name = "project_id", nullable = false) + private UUID projectId; + + @Column(name = "meter_code", nullable = false, unique = true) + private String meterCode; + + @Column(name = "meter_name", nullable = false) + private String meterName; + + @Column(name = "energy_type", nullable = false) + @Enumerated(EnumType.STRING) + private EnergyType energyType; + + public enum EnergyType { + LIGHTING("照明插座用电"), + HVAC("空调用电"), + POWER("动力用电"), + SPECIAL("特殊用电"), + WATER("给排水"), + GAS("燃气"); + + private final String desc; + EnergyType(String desc) { this.desc = desc; } + public String getDesc() { return desc; } + } + + @Column(name = "space_node_id") + private UUID spaceNodeId; + + @Column(name = "installation_location") + private String installationLocation; + + @Column(name = "rated_capacity", precision = 10, scale = 2) + private BigDecimal ratedCapacity; + + @Column(name = "unit_price", precision = 10, scale = 4) + private BigDecimal unitPrice; + + @Column(nullable = false) + @Enumerated(EnumType.STRING) + private Status status = Status.ACTIVE; + + public enum Status { + ACTIVE, INACTIVE + } + + @Column(name = "created_at") + private LocalDateTime createdAt; + + @Column(name = "updated_at") + private LocalDateTime updatedAt; + + @PrePersist + public void prePersist() { + createdAt = LocalDateTime.now(); + updatedAt = LocalDateTime.now(); + } + + @PreUpdate + public void preUpdate() { + updatedAt = LocalDateTime.now(); + } +} \ No newline at end of file