From 7fc5bc0c6f92d65099397690128cbf218935972d Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期二, 16 六月 2026 13:33:41 +0800
Subject: [PATCH] feat: 修改小时同步回看窗口为1小时,并添加天维度汇总功能

---
 src/main/resources/application-zqsy.yml                                     |    2 +-
 src/main/java/com/ruoyi/http/config/TqdianbiaoConfig.java                   |    4 ++--
 src/main/java/com/ruoyi/http/service/impl/TqdianbiaoEleSyncServiceImpl.java |   11 ++++++++---
 src/main/java/com/ruoyi/http/service/impl/StatisticEleServiceImpl.java      |   35 ++++++++++++++++++++++++-----------
 4 files changed, 35 insertions(+), 17 deletions(-)

diff --git a/src/main/java/com/ruoyi/http/config/TqdianbiaoConfig.java b/src/main/java/com/ruoyi/http/config/TqdianbiaoConfig.java
index f949a4f..f15dfac 100644
--- a/src/main/java/com/ruoyi/http/config/TqdianbiaoConfig.java
+++ b/src/main/java/com/ruoyi/http/config/TqdianbiaoConfig.java
@@ -28,7 +28,7 @@
     public static class Sync {
         /** 鏄惁鍚敤瀹氭椂鍚屾 */
         private Boolean enabled = true;
-        /** 灏忔椂鍚屾鍥炵湅绐楀彛锛堝皬鏃舵暟锛� */
-        private Integer hourWindow = 2;
+        /** 灏忔椂鍚屾鍥炵湅绐楀彛锛堝畬鏁村皬鏃舵暟锛屼笉鍚綋鍓嶅皬鏃讹級 */
+        private Integer hourWindow = 1;
     }
 }
diff --git a/src/main/java/com/ruoyi/http/service/impl/StatisticEleServiceImpl.java b/src/main/java/com/ruoyi/http/service/impl/StatisticEleServiceImpl.java
index 357fdcd..b7c32a8 100644
--- a/src/main/java/com/ruoyi/http/service/impl/StatisticEleServiceImpl.java
+++ b/src/main/java/com/ruoyi/http/service/impl/StatisticEleServiceImpl.java
@@ -24,6 +24,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
+import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.HashMap;
 import java.util.List;
@@ -84,8 +85,29 @@
             throw new ServiceException("缁熻缁村害鏃犳晥锛屾敮鎸� hour/day/month/quarter/year");
         }
 
+        if ("day".equals(dimension)) {
+            return getDayDimensionSummary(startTime, endTime);
+        }
+
         List<StatisticEleRecordVo> detailRecords = aggregateFromHour(dimension, startTime, endTime, true);
         List<StatisticEleRecordVo> chartRecords = aggregateFromHour(dimension, startTime, endTime, false);
+        return buildSummary(detailRecords, chartRecords);
+    }
+
+    /**
+     * 澶╃淮搴︽眹鎬伙細鍗曟棩鐢ㄥ皬鏃剁骇鏁版嵁璁$畻鍧囧��/鏋佸�煎苟灞曠ず 24 灏忔椂瓒嬪娍锛涘鏃ユ寜鏃ユ《瀵规瘮銆�
+     */
+    private StatisticEleSummaryVo getDayDimensionSummary(String startTime, String endTime) {
+        HourRange range = StatisticEleAggregateUtil.toHourQueryRange("day", startTime, endTime);
+        List<StatisticEleRecordVo> hourRecords = queryHourRecords(range.startTime(), range.endTime());
+        List<StatisticEleRecordVo> detailRecords = StatisticEleAggregateUtil.aggregateHourPerMeter(
+                hourRecords, StatisticEleAggregateUtil.HOUR_TO_DAY);
+
+        boolean singleDay = startTime.equals(endTime);
+        List<StatisticEleRecordVo> chartRecords = singleDay
+                ? StatisticEleAggregateUtil.aggregateHourToBuckets(hourRecords, StatisticEleAggregateUtil.HOUR_TO_HOUR)
+                : StatisticEleAggregateUtil.aggregateHourToBuckets(hourRecords, StatisticEleAggregateUtil.HOUR_TO_DAY);
+
         return buildSummary(detailRecords, chartRecords);
     }
 
@@ -106,17 +128,8 @@
 
     @Override
     public StatisticEleSummaryVo getYesterdaySummary() {
-        HourRange range = StatisticEleAggregateUtil.yesterdayHourRange();
-        List<StatisticEleRecordVo> records = queryHourRecords(range.startTime(), range.endTime());
-        List<StatisticEleRecordVo> chartRecords = StatisticEleAggregateUtil.aggregateHourToBuckets(
-                records, StatisticEleAggregateUtil.HOUR_TO_HOUR);
-        StatisticEleSummaryVo summary = buildSummary(records, chartRecords);
-        summary.setTotalConsumption(round(StatisticEleAggregateUtil.sumRecordsTotal(records)));
-        return summary;
-    }
-
-    private static double round(double value) {
-        return Math.round(value * 100.0) / 100.0;
+        String day = LocalDate.now().minusDays(1).format(DateTimeFormatter.ofPattern("yyyyMMdd"));
+        return getDayDimensionSummary(day, day);
     }
 
     @Override
diff --git a/src/main/java/com/ruoyi/http/service/impl/TqdianbiaoEleSyncServiceImpl.java b/src/main/java/com/ruoyi/http/service/impl/TqdianbiaoEleSyncServiceImpl.java
index d7c6cf5..406e027 100644
--- a/src/main/java/com/ruoyi/http/service/impl/TqdianbiaoEleSyncServiceImpl.java
+++ b/src/main/java/com/ruoyi/http/service/impl/TqdianbiaoEleSyncServiceImpl.java
@@ -37,9 +37,14 @@
 
     @Override
     public int syncHourData() {
-        int window = config.getSync().getHourWindow() != null ? config.getSync().getHourWindow() : 2;
-        LocalDateTime end = LocalDateTime.now().withMinute(0).withSecond(0).withNano(0);
-        LocalDateTime start = end.minusHours(window);
+        int window = config.getSync().getHourWindow() != null ? config.getSync().getHourWindow() : 1;
+        if (window < 1) {
+            window = 1;
+        }
+        // 缁撴潫浜庝笂涓�瀹屾暣灏忔椂锛屼笉鍖呭惈褰撳墠鏈粨鏉熺殑灏忔椂
+        LocalDateTime currentHourStart = LocalDateTime.now().withMinute(0).withSecond(0).withNano(0);
+        LocalDateTime end = currentHourStart.minusHours(1);
+        LocalDateTime start = end.minusHours(window - 1L);
         String startTime = start.format(HOUR_FMT);
         String endTime = end.format(HOUR_FMT);
         return syncDimension("hour", startTime, endTime);
diff --git a/src/main/resources/application-zqsy.yml b/src/main/resources/application-zqsy.yml
index 8a76bb6..effcc61 100644
--- a/src/main/resources/application-zqsy.yml
+++ b/src/main/resources/application-zqsy.yml
@@ -274,4 +274,4 @@
   ignore-radio: 1
   sync:
     enabled: true
-    hour-window: 2
+    hour-window: 1

--
Gitblit v1.9.3