From 668e570bd1db6bd00e4293b6977e6d3d051053ce Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期四, 27 十一月 2025 00:07:46 +0800
Subject: [PATCH] feat: 修改app录入界面及车辆用户同步

---
 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