From 8efd8b083d4663aae3e8ca009fdafdc0f5084284 Mon Sep 17 00:00:00 2001 From: chiguyong Date: Tue, 24 Mar 2026 00:23:35 +0800 Subject: [PATCH] feat: add energy monitoring repositories --- .../EnergyConsumptionRepository.java | 28 +++++++++++++++++++ .../mdm/repository/EnergyMeterRepository.java | 16 +++++++++++ 2 files changed, 44 insertions(+) create mode 100644 module-mdm/src/main/java/com/ether/pms/mdm/repository/EnergyConsumptionRepository.java create mode 100644 module-mdm/src/main/java/com/ether/pms/mdm/repository/EnergyMeterRepository.java diff --git a/module-mdm/src/main/java/com/ether/pms/mdm/repository/EnergyConsumptionRepository.java b/module-mdm/src/main/java/com/ether/pms/mdm/repository/EnergyConsumptionRepository.java new file mode 100644 index 0000000..c1c45f6 --- /dev/null +++ b/module-mdm/src/main/java/com/ether/pms/mdm/repository/EnergyConsumptionRepository.java @@ -0,0 +1,28 @@ +package com.ether.pms.mdm.repository; + +import com.ether.pms.mdm.entity.EnergyConsumption; +import com.ether.pms.mdm.entity.EnergyMeter; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +@Repository +public interface EnergyConsumptionRepository extends JpaRepository { + List findByMeterIdOrderByConsumptionDateDesc(UUID meterId); + + List findByMeterIdAndConsumptionDateBetween(UUID meterId, LocalDate startDate, LocalDate endDate); + + @Query("SELECT SUM(e.consumption) FROM EnergyConsumption e WHERE e.meterId = :meterId AND e.consumptionDate BETWEEN :startDate AND :endDate") + BigDecimal sumConsumptionByMeterIdAndDateRange(@Param("meterId") UUID meterId, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate); + + @Query("SELECT SUM(e.consumption) FROM EnergyConsumption e WHERE e.projectId = :projectId AND e.energyType = :energyType AND e.consumptionDate BETWEEN :startDate AND :endDate") + BigDecimal sumConsumptionByProjectAndTypeAndDateRange(@Param("projectId") UUID projectId, @Param("energyType") EnergyMeter.EnergyType energyType, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate); + + Optional findTopByMeterIdOrderByConsumptionDateDesc(UUID meterId); +} \ No newline at end of file diff --git a/module-mdm/src/main/java/com/ether/pms/mdm/repository/EnergyMeterRepository.java b/module-mdm/src/main/java/com/ether/pms/mdm/repository/EnergyMeterRepository.java new file mode 100644 index 0000000..b78f304 --- /dev/null +++ b/module-mdm/src/main/java/com/ether/pms/mdm/repository/EnergyMeterRepository.java @@ -0,0 +1,16 @@ +package com.ether.pms.mdm.repository; + +import com.ether.pms.mdm.entity.EnergyMeter; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +@Repository +public interface EnergyMeterRepository extends JpaRepository { + List findByProjectIdAndStatus(UUID projectId, EnergyMeter.Status status); + List findByProjectIdAndEnergyType(UUID projectId, EnergyMeter.EnergyType energyType); + Optional findByMeterCode(String meterCode); + boolean existsByMeterCode(String meterCode); +} \ No newline at end of file