From df0edc253bd3e38994ca0abd871d18abd0b4040f Mon Sep 17 00:00:00 2001
From: wangjuncheng <1>
Date: 星期二, 01 七月 2025 15:29:49 +0800
Subject: [PATCH] 实时模拟更新下雨情况

---
 src/components/menu/TimeLine.vue |   92 ++++++++++++++++++++++++++++++++++++----------
 1 files changed, 72 insertions(+), 20 deletions(-)

diff --git a/src/components/menu/TimeLine.vue b/src/components/menu/TimeLine.vue
index c3d1fe4..f30f68d 100644
--- a/src/components/menu/TimeLine.vue
+++ b/src/components/menu/TimeLine.vue
@@ -302,7 +302,17 @@
 
       // 濡傛灉闇�瑕佽Е鍙戞煇浜涙洿鏂板嚱鏁帮紝涔熷彲浠ヤ繚鐣�
       updateWaterColorByTime();
-      updateWeatherByProgress();
+      // updateWeatherByProgress();
+      // 淇敼涓哄浐瀹氶樁娈碉紝缂撴參涓嬮洦鐨勭姸鎬�
+      const rainParams = {
+        rainSize: 0.5,
+        rainSpeed: 20,
+        rainDensity: 15,
+        rainColor: "#ADD8E6",
+      };
+      console.log("瀹炴椂妯℃嫙寮�濮嬩笅闆�");
+      // 璋冪敤宸ュ叿鏂规硶鏇存柊闆ㄦ晥
+      mapUtils.toggleRain(rainParams, true);
     }, 5000); // 姣� 5 绉掓墽琛屼竴娆�
   } else {
     // 杩欓噷闈㈣繕鏄綘鐨勬挱鏀句唬鐮侊紝涓婇潰鐨刬f涓槸浜旂閽熻烦鍔ㄤ竴娆$殑瀹炴椂妯℃嫙
@@ -344,9 +354,10 @@
     console.warn("selectedScheme 鎴� data 涓嶅瓨鍦�");
     return;
   }
-  // 娉ㄦ剰锛氭湁鏃� data 鍙兘鏄竴涓瓧绗︿覆锛堜緥濡� JSON 瀛楃涓诧級
+
   let data = selectedScheme.value.data;
-  // 濡傛灉鏄瓧绗︿覆锛屽垯灏濊瘯瑙f瀽鎴愬璞�
+
+  // 濡傛灉鏄瓧绗︿覆锛屽垯灏濊瘯瑙f瀽涓哄璞�
   if (typeof data === "string") {
     try {
       data = JSON.parse(data);
@@ -356,28 +367,69 @@
       return;
     }
   }
-  // 鎵撳嵃闄嶉洦寮哄害鐨勫崟浣�
+
   console.log("闄嶉洦寮哄害鐨勫崟浣嶆槸锛�", data.intensityUnit);
-  // 鏍规嵁 intensityUnit 璋冩暣 rainfalls 涓殑 intensity 鍊�
-  // if (data.intensityUnit === "mm/min") {
-  //   data.rainfalls.forEach((r) => (r.intensity *= 60));
-  //   console.log("灏� mm/min 杞崲涓� mm/h 鍚庣殑 rainfalls:", data.rainfalls);
-  // } else if (data.intensityUnit === "mm/5min") {
-  //   data.rainfalls.forEach((r) => (r.intensity *= 12));
-  //   console.log("灏� mm/5min 杞崲涓� mm/h 鍚庣殑 rainfalls:", data.rainfalls);
-  // } else if (data.intensityUnit !== "mm/h") {
-  //   console.warn("鏈煡鐨� intensity 鍗曚綅锛屾棤娉曡繘琛岃浆鎹�");
-  // }
-  const rainfallList = data.rainfalls;
-  console.log("鏈�缁堢殑 rainfallList:", rainfallList);
-  rainTotalInfo.value = rainfallList;
-  calculateTimeStep(rainTotalInfo.value);
-  // 浣跨敤绀轰緥
+
+  // 鍒ゆ柇 rainfalls 鏄惁涓哄璞★紝濡傛灉鏄垯杞垚鏁扮粍
+  let rainfalls = data.rainfalls;
+  if (typeof rainfalls === "object" && !Array.isArray(rainfalls)) {
+    rainfalls = Object.values(rainfalls);
+    console.warn("鈿狅笍 rainfalls 鏄璞★紝宸茶浆鎹负鏁扮粍");
+  }
+
+  // 鎸夊皬鏃惰仛鍚堥檷闆ㄦ暟鎹�
+  const hourlyRainfallMap = {};
+
+  rainfalls.forEach((record) => {
+    const originalTime = new Date(record.time);
+    if (isNaN(originalTime.getTime())) {
+      console.warn("鏃犳晥鐨勬椂闂存牸寮忥細", record.time);
+      return;
+    }
+
+    // 鏋勯�犫�滃皬鏃垛�濈骇鍒殑鏃堕棿閿紝姣斿锛�2024-08-25 20:00:00
+    const hourKey = new Date(
+      originalTime.getFullYear(),
+      originalTime.getMonth(),
+      originalTime.getDate(),
+      originalTime.getHours()
+    );
+
+    const hourStr = hourKey.toISOString().slice(0, 16).replace("T", " ");
+
+    if (!hourlyRainfallMap[hourStr]) {
+      hourlyRainfallMap[hourStr] = {
+        intensity: 0,
+        time: hourStr,
+        total: record.total, // 榛樿鐢ㄧ涓�涓褰曠殑 total
+      };
+    }
+
+    hourlyRainfallMap[hourStr].intensity += record.intensity;
+    // 鍙栨渶澶х殑 total锛堝洜涓烘槸绱Н鍊硷級
+    if (record.total > hourlyRainfallMap[hourStr].total) {
+      hourlyRainfallMap[hourStr].total = record.total;
+    }
+  });
+
+  // 杞崲 map 鎴愭暟缁勫苟鎺掑簭
+  const hourlyRainfallList = Object.values(hourlyRainfallMap).sort((a, b) =>
+    a.time.localeCompare(b.time)
+  );
+
+  console.log("鉁� 鎸夊皬鏃惰仛鍚堝悗鐨勯檷闆ㄦ暟鎹細", hourlyRainfallList);
+
+  // 璁剧疆鍏ㄥ眬鍙橀噺
+  rainTotalInfo.value = hourlyRainfallList;
+
+  // 璁$畻鏃堕棿姝ラ暱
   timeStepInfo = calculateTimeStep(rainTotalInfo.value);
+
   // 鎻愬彇 intensity 鍊�
-  rainFallValues.value = rainfallList.map((r) => r.intensity);
+  rainFallValues.value = hourlyRainfallList.map((r) => r.intensity);
   minRainValue.value = Math.min(...rainFallValues.value);
   maxRainValue.value = Math.max(...rainFallValues.value);
+
   console.log(
     "褰撳墠鏂规涓嬫渶灏忛洦閲忓拰鏈�澶ч洦閲忥細",
     minRainValue.value,

--
Gitblit v1.9.3