From f67945d53b20f6a45ae50b27d74c966eb1355bb4 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期日, 16 十一月 2025 22:53:54 +0800
Subject: [PATCH] feat: 增加分段GPS计算行程距离
---
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/VehicleMileageStatsTask.java | 84 +++++++++++++++++++++++++++++++++++------
1 files changed, 71 insertions(+), 13 deletions(-)
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/VehicleMileageStatsTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/VehicleMileageStatsTask.java
index 22cd0b8..8619a88 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/VehicleMileageStatsTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/VehicleMileageStatsTask.java
@@ -1,5 +1,7 @@
package com.ruoyi.quartz.task;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.slf4j.Logger;
@@ -55,30 +57,86 @@
logger.info("寮�濮嬫墽琛岃溅杈嗛噷绋嬬粺璁″畾鏃朵换鍔� - 缁熻鏃ユ湡: {}", dateStr);
try {
- // 瑙f瀽鏃ユ湡瀛楃涓�
- String[] parts = dateStr.split("-");
- if (parts.length != 3) {
- throw new IllegalArgumentException("鏃ユ湡鏍煎紡閿欒锛屽簲涓�: yyyy-MM-dd");
+ if (dateStr == null || dateStr.trim().isEmpty()) {
+ throw new IllegalArgumentException("鏃ユ湡涓嶈兘涓虹┖");
}
- Calendar calendar = Calendar.getInstance();
- calendar.set(Calendar.YEAR, Integer.parseInt(parts[0]));
- calendar.set(Calendar.MONTH, Integer.parseInt(parts[1]) - 1); // 鏈堜唤浠�0寮�濮�
- calendar.set(Calendar.DAY_OF_MONTH, Integer.parseInt(parts[2]));
- calendar.set(Calendar.HOUR_OF_DAY, 0);
- calendar.set(Calendar.MINUTE, 0);
- calendar.set(Calendar.SECOND, 0);
- calendar.set(Calendar.MILLISECOND, 0);
- Date targetDate = calendar.getTime();
+ // 浣跨敤SimpleDateFormat瑙f瀽鏃ユ湡瀛楃涓�
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ sdf.setLenient(false); // 涓ユ牸瑙f瀽鏃ユ湡
+ Date targetDate = sdf.parse(dateStr.trim());
// 鎵归噺璁$畻閲岀▼缁熻
int successCount = vehicleMileageStatsService.batchCalculateMileageStats(targetDate);
logger.info("杞﹁締閲岀▼缁熻瀹氭椂浠诲姟鎵ц瀹屾垚 - 鏃ユ湡: {}, 鎴愬姛缁熻: {} 杈嗚溅", dateStr, successCount);
+ } catch (ParseException e) {
+ logger.error("杞﹁締閲岀▼缁熻瀹氭椂浠诲姟鎵ц澶辫触 - 鏃ユ湡鏍煎紡閿欒: {}", dateStr, e);
+ throw new RuntimeException("瀹氭椂浠诲姟鎵ц澶辫触: 鏃ユ湡鏍煎紡閿欒锛屽簲涓� yyyy-MM-dd");
} catch (Exception e) {
logger.error("杞﹁締閲岀▼缁熻瀹氭椂浠诲姟鎵ц澶辫触 - 鏃ユ湡: {}", dateStr, e);
throw new RuntimeException("瀹氭椂浠诲姟鎵ц澶辫触: " + e.getMessage());
}
}
+
+ /**
+ * 浠嶨PS鍒嗘閲岀▼姹囨�荤敓鎴愭槰鏃ョ粺璁℃暟鎹�
+ * 锛堟帹鑽愪娇鐢ㄦ鏂规硶锛屽熀浜庡凡璁$畻鐨勫垎娈甸噷绋嬫暟鎹眹鎬伙紝鎬ц兘鏇村ソ锛�
+ */
+ public void aggregateYesterdayFromSegments() {
+ logger.info("寮�濮嬫墽琛屼粠鍒嗘閲岀▼姹囨�讳换鍔� - 缁熻鏄ㄦ棩鏁版嵁");
+
+ try {
+ // 鑾峰彇鏄ㄥぉ鐨勬棩鏈�
+ Calendar calendar = Calendar.getInstance();
+ calendar.add(Calendar.DAY_OF_MONTH, -1);
+ calendar.set(Calendar.HOUR_OF_DAY, 0);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+ Date yesterday = calendar.getTime();
+
+ // 浠庡垎娈甸噷绋嬫眹鎬荤敓鎴愮粺璁�
+ int successCount = vehicleMileageStatsService.batchAggregateFromSegmentMileage(yesterday);
+
+ logger.info("浠庡垎娈甸噷绋嬫眹鎬讳换鍔℃墽琛屽畬鎴� - 鎴愬姛缁熻: {} 杈嗚溅", successCount);
+
+ } catch (Exception e) {
+ logger.error("浠庡垎娈甸噷绋嬫眹鎬讳换鍔℃墽琛屽け璐�", e);
+ throw new RuntimeException("姹囨�讳换鍔℃墽琛屽け璐�: " + e.getMessage());
+ }
+ }
+
+ /**
+ * 浠嶨PS鍒嗘閲岀▼姹囨�荤敓鎴愭寚瀹氭棩鏈熺殑缁熻鏁版嵁
+ *
+ * @param dateStr 鏃ユ湡瀛楃涓诧紝鏍煎紡锛歽yyy-MM-dd
+ */
+ public void aggregateFromSegmentsByDate(String dateStr) {
+ logger.info("寮�濮嬫墽琛屼粠鍒嗘閲岀▼姹囨�讳换鍔� - 缁熻鏃ユ湡: {}", dateStr);
+
+ try {
+ if (dateStr == null || dateStr.trim().isEmpty()) {
+ throw new IllegalArgumentException("鏃ユ湡涓嶈兘涓虹┖");
+ }
+
+ // 浣跨敤SimpleDateFormat瑙f瀽鏃ユ湡瀛楃涓�
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ sdf.setLenient(false); // 涓ユ牸瑙f瀽鏃ユ湡
+ Date targetDate = sdf.parse(dateStr.trim());
+
+ // 浠庡垎娈甸噷绋嬫眹鎬荤敓鎴愮粺璁�
+ int successCount = vehicleMileageStatsService.batchAggregateFromSegmentMileage(targetDate);
+
+ logger.info("浠庡垎娈甸噷绋嬫眹鎬讳换鍔℃墽琛屽畬鎴� - 鏃ユ湡: {}, 鎴愬姛缁熻: {} 杈嗚溅", dateStr, successCount);
+
+ } catch (ParseException e) {
+ logger.error("浠庡垎娈甸噷绋嬫眹鎬讳换鍔℃墽琛屽け璐� - 鏃ユ湡鏍煎紡閿欒: {}", dateStr, e);
+ throw new RuntimeException("姹囨�讳换鍔℃墽琛屽け璐�: 鏃ユ湡鏍煎紡閿欒锛屽簲涓� yyyy-MM-dd");
+ } catch (Exception e) {
+ logger.error("浠庡垎娈甸噷绋嬫眹鎬讳换鍔℃墽琛屽け璐� - 鏃ユ湡: {}", dateStr, e);
+ throw new RuntimeException("姹囨�讳换鍔℃墽琛屽け璐�: " + e.getMessage());
+ }
+ }
}
--
Gitblit v1.9.1