From caf56217dc2bf898b63b0e1f31a7098202c32825 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 15 十一月 2025 16:50:17 +0800
Subject: [PATCH] Merge branch 'feature_gps'

---
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/VehicleMileageStatsTask.java |   84 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 84 insertions(+), 0 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 e69de29..22cd0b8 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
@@ -0,0 +1,84 @@
+package com.ruoyi.quartz.task;
+
+import java.util.Calendar;
+import java.util.Date;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import com.ruoyi.system.service.IVehicleMileageStatsService;
+
+/**
+ * 杞﹁締閲岀▼缁熻瀹氭椂浠诲姟
+ */
+@Component("vehicleMileageStatsTask")
+public class VehicleMileageStatsTask {
+    
+    private static final Logger logger = LoggerFactory.getLogger(VehicleMileageStatsTask.class);
+    
+    @Autowired
+    private IVehicleMileageStatsService vehicleMileageStatsService;
+
+    /**
+     * 璁$畻鏄ㄦ棩鎵�鏈夎溅杈嗙殑閲岀▼缁熻
+     */
+    public void calculateYesterdayMileage() {
+        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.batchCalculateMileageStats(yesterday);
+            
+            logger.info("杞﹁締閲岀▼缁熻瀹氭椂浠诲姟鎵ц瀹屾垚 - 鎴愬姛缁熻: {} 杈嗚溅", successCount);
+            
+        } catch (Exception e) {
+            logger.error("杞﹁締閲岀▼缁熻瀹氭椂浠诲姟鎵ц澶辫触", e);
+            throw new RuntimeException("瀹氭椂浠诲姟鎵ц澶辫触: " + e.getMessage());
+        }
+    }
+
+    /**
+     * 璁$畻鎸囧畾鏃ユ湡鐨勯噷绋嬬粺璁★紙鐢ㄤ簬鎵嬪姩瑙﹀彂鎴栬ˉ绠楀巻鍙叉暟鎹級
+     * 
+     * @param dateStr 鏃ユ湡瀛楃涓诧紝鏍煎紡锛歽yyy-MM-dd
+     */
+    public void calculateMileageByDate(String dateStr) {
+        logger.info("寮�濮嬫墽琛岃溅杈嗛噷绋嬬粺璁″畾鏃朵换鍔� - 缁熻鏃ユ湡: {}", dateStr);
+        
+        try {
+            // 瑙f瀽鏃ユ湡瀛楃涓�
+            String[] parts = dateStr.split("-");
+            if (parts.length != 3) {
+                throw new IllegalArgumentException("鏃ユ湡鏍煎紡閿欒锛屽簲涓�: yyyy-MM-dd");
+            }
+            
+            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();
+            
+            // 鎵归噺璁$畻閲岀▼缁熻
+            int successCount = vehicleMileageStatsService.batchCalculateMileageStats(targetDate);
+            
+            logger.info("杞﹁締閲岀▼缁熻瀹氭椂浠诲姟鎵ц瀹屾垚 - 鏃ユ湡: {}, 鎴愬姛缁熻: {} 杈嗚溅", dateStr, successCount);
+            
+        } catch (Exception e) {
+            logger.error("杞﹁締閲岀▼缁熻瀹氭椂浠诲姟鎵ц澶辫触 - 鏃ユ湡: {}", dateStr, e);
+            throw new RuntimeException("瀹氭椂浠诲姟鎵ц澶辫触: " + e.getMessage());
+        }
+    }
+}

--
Gitblit v1.9.1