From 364adbc9a93a396b74e154f910c2a0a72bfb1a0f Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 29 十一月 2025 22:10:41 +0800
Subject: [PATCH] feat: 更新车辆里程统计

---
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/VehicleGpsSegmentMileageTask.java |   44 +++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 43 insertions(+), 1 deletions(-)

diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/VehicleGpsSegmentMileageTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/VehicleGpsSegmentMileageTask.java
index e1713ce..371896a 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/VehicleGpsSegmentMileageTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/VehicleGpsSegmentMileageTask.java
@@ -2,6 +2,7 @@
 
 import java.util.Calendar;
 import java.util.Date;
+import javax.annotation.PostConstruct;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,6 +23,45 @@
     
     @Autowired
     private ISysConfigService configService;
+    
+    /**
+     * 鏈嶅姟鍚姩鏃舵墽琛岃ˉ鍋胯绠�
+     * 妫�鏌ユ渶杩�7澶╁唴鏈澶勭悊鐨凣PS鍧愭爣骞惰繘琛岃ˉ鍋胯绠�
+     */
+    @PostConstruct
+    public void init() {
+        // 鍚姩鍚庡欢杩熸墽琛岋紝閬垮厤褰卞搷鏈嶅姟鍚姩閫熷害
+        new Thread(() -> {
+            try {
+                // 寤惰繜30绉掑惎鍔紝纭繚鎵�鏈夋湇鍔″凡灏辩华
+                Thread.sleep(30000);
+                
+                logger.info("========== 寮�濮嬫墽琛孏PS鍒嗘閲岀▼琛ュ伩璁$畻 ==========");
+                
+                // 鑾峰彇閰嶇疆鐨勫洖婧ぉ鏁帮紝榛樿7澶�
+                int lookbackDays = 7;
+                String lookbackConfig = configService.selectConfigByKey("gps.mileage.compensation.days");
+                if (lookbackConfig != null && !lookbackConfig.isEmpty()) {
+                    try {
+                        lookbackDays = Integer.parseInt(lookbackConfig);
+                    } catch (NumberFormatException e) {
+                        logger.warn("琛ュ伩鍥炴函澶╂暟閰嶇疆閿欒锛屼娇鐢ㄩ粯璁ゅ��7澶�");
+                    }
+                }
+                
+                // 鎵ц琛ュ伩璁$畻
+                int successCount = segmentMileageService.compensateCalculation(lookbackDays);
+                
+                logger.info("========== GPS鍒嗘閲岀▼琛ュ伩璁$畻瀹屾垚 - 鎴愬姛澶勭悊 {} 杈嗚溅 ==========", successCount);
+                
+            } catch (InterruptedException e) {
+                logger.error("琛ュ伩璁$畻绾跨▼琚腑鏂�", e);
+                Thread.currentThread().interrupt();
+            } catch (Exception e) {
+                logger.error("GPS鍒嗘閲岀▼琛ュ伩璁$畻澶辫触", e);
+            }
+        }, "GPS-Compensation-Thread").start();
+    }
 
     /**
      * 璁$畻鏈�杩戜竴娈垫椂闂寸殑GPS鍒嗘閲岀▼
@@ -59,12 +99,14 @@
                 }
             }
             
-            // 璁$畻鏃堕棿鑼冨洿
+            // 璁$畻鏃堕棿鑼冨洿锛堝悜鍓嶅洖婧寚瀹氬垎閽熸暟锛�
             Calendar cal = Calendar.getInstance();
             Date endTime = cal.getTime();
             cal.add(Calendar.MINUTE, -minutes);
             Date startTime = cal.getTime();
             
+            // 娉ㄦ剰锛氭鏂规硶鍙绠楁渶杩戞椂闂存鐨勬暟鎹紝鍘嗗彶閬楁紡鏁版嵁鐢辫ˉ鍋挎満鍒跺鐞�
+            
             logger.info("寮�濮嬭绠桮PS鍒嗘閲岀▼ - 鏃堕棿鑼冨洿: {} 鍒� {}, 鏃堕棿娈甸棿闅�: {}鍒嗛挓", 
                        startTime, endTime, segmentMinutes);
             

--
Gitblit v1.9.1