From c5ac97682e3b4ca748541ace97cb37a2295bd81e Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期四, 19 三月 2026 22:46:29 +0800
Subject: [PATCH] feat: 增加GPS清理后台任务

---
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CleanVehicleGpsTask.java |   34 ++++++++++++++++++++++++++++++----
 1 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CleanVehicleGpsTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CleanVehicleGpsTask.java
index f177d1d..e089849 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CleanVehicleGpsTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CleanVehicleGpsTask.java
@@ -13,17 +13,43 @@
 public class CleanVehicleGpsTask {
     private static final Logger log = LoggerFactory.getLogger(CleanVehicleGpsTask.class);
 
+    /** 姣忔壒鍒犻櫎鏁伴噺 */
+    private static final int BATCH_SIZE = 10000;
+    /** 姣忔壒闂撮殧鏃堕棿锛堟绉掞級锛岄伩鍏嶈繛缁垹闄ゅ鏁版嵁搴撳帇鍔涜繃澶� */
+    private static final long BATCH_INTERVAL_MS = 500;
+
     @Autowired
     private IVehicleGpsService vehicleGpsService;
 
     /**
-     * 娓呯悊杞﹁締GPS鍘嗗彶鏁版嵁
+     * 娓呯悊杞﹁締GPS鍘嗗彶鏁版嵁锛堜繚鐣欐渶杩�2涓湀锛屽垎鎵瑰垹闄わ級
      */
     public void cleanVehicleGpsData() {
         try {
-//            log.info("寮�濮嬫竻鐞嗚溅杈咷PS鍘嗗彶鏁版嵁");
-            int count = vehicleGpsService.deleteVehicleGpsBeforeDate();
-//            log.info("娓呯悊杞﹁締GPS鍘嗗彶鏁版嵁瀹屾垚锛屽叡娓呯悊{}鏉¤褰�", count);
+            log.info("寮�濮嬫竻鐞嗚溅杈咷PS鍘嗗彶鏁版嵁锛堜繚鐣欐渶杩�2涓湀锛屾瘡鎵� {} 鏉★級", BATCH_SIZE);
+            int totalCount = 0;
+            int batchCount;
+            int round = 0;
+            do {
+                batchCount = vehicleGpsService.deleteVehicleGpsBeforeDateBatch(BATCH_SIZE);
+                totalCount += batchCount;
+                round++;
+                log.info("绗� {} 鎵规竻鐞嗗畬鎴愶紝鏈壒鍒犻櫎 {} 鏉★紝宸插垹闄ゅ悎璁� {} 鏉�", round, batchCount, totalCount);
+                if (batchCount == BATCH_SIZE) {
+                    // 杩樻湁鏁版嵁锛岀◢浣滀紤鐪犲啀缁х画
+                    Thread.sleep(BATCH_INTERVAL_MS);
+                }
+            } while (batchCount == BATCH_SIZE);
+
+            log.info("娓呯悊杞﹁締GPS鍘嗗彶鏁版嵁瀹屾垚锛屽叡 {} 鎵癸紝鍒犻櫎 {} 鏉¤褰�", round, totalCount);
+
+            if (totalCount > 0) {
+                log.info("寮�濮嬫墽琛� OPTIMIZE TABLE锛屽洖鏀剁鐩樼┖闂达紙姝ゆ搷浣滆�楁椂杈冮暱锛岃鍕夸腑鏂級");
+                vehicleGpsService.optimizeVehicleGpsTable();
+                log.info("OPTIMIZE TABLE 鎵ц瀹屾垚");
+            } else {
+                log.info("鏈鏃犲彲娓呯悊鐨勮褰曪紝璺宠繃 OPTIMIZE TABLE");
+            }
         } catch (Exception e) {
             log.error("娓呯悊杞﹁締GPS鍘嗗彶鏁版嵁寮傚父", e);
         }

--
Gitblit v1.9.1