From c6e38b6c66de5f5a8df5b8b2ab03a82c3b605db8 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期三, 03 十二月 2025 00:48:44 +0800
Subject: [PATCH] feat:优化同步

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleMileageStatsServiceImpl.java |   37 +++++++++++++++++++++++++++++++++++--
 1 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleMileageStatsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleMileageStatsServiceImpl.java
index 3cf88f0..e61b9f6 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleMileageStatsServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleMileageStatsServiceImpl.java
@@ -181,8 +181,14 @@
     @Override
     public int batchCalculateMileageStats(Date statDate) {
         try {
+            // 璁$畻鏌ヨ寮�濮嬫椂闂达紙7澶╁墠锛�
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(statDate);
+            calendar.add(Calendar.DAY_OF_MONTH, -7);
+            Date startTime = calendar.getTime();
+            
             // 鏌ヨ鎵�鏈夋椿璺冭溅杈�
-            List<Long> vehicleIds = vehicleGpsMapper.selectActiveVehicleIds();
+            List<Long> vehicleIds = vehicleGpsMapper.selectActiveVehicleIds(startTime);
             
             if (vehicleIds == null || vehicleIds.isEmpty()) {
                 logger.info("娌℃湁鎵惧埌娲昏穬杞﹁締");
@@ -246,6 +252,16 @@
         // 璁$畻浠诲姟閲岀▼鍗犳瘮
         if (result.totalMileage.compareTo(BigDecimal.ZERO) > 0) {
             result.taskRatio = result.taskMileage.divide(result.totalMileage, 4, RoundingMode.HALF_UP);
+            
+            // 鏁版嵁鏍¢獙:鍗犳瘮搴斿湪0-1涔嬮棿
+            if (result.taskRatio.compareTo(BigDecimal.ONE) > 0) {
+                logger.warn("浠诲姟閲岀▼鍗犳瘮寮傚父: {} (浠诲姟閲岀▼:{}, 鎬婚噷绋�:{}), 寮哄埗璁句负1.0", 
+                           result.taskRatio, result.taskMileage, result.totalMileage);
+                result.taskRatio = BigDecimal.ONE;
+            } else if (result.taskRatio.compareTo(BigDecimal.ZERO) < 0) {
+                logger.warn("浠诲姟閲岀▼鍗犳瘮涓鸿礋: {}, 寮哄埗璁句负0", result.taskRatio);
+                result.taskRatio = BigDecimal.ZERO;
+            }
         }
         
         // 淇濈暀涓や綅灏忔暟
@@ -405,6 +421,17 @@
             BigDecimal taskRatio = BigDecimal.ZERO;
             if (totalMileage.compareTo(BigDecimal.ZERO) > 0) {
                 taskRatio = taskMileage.divide(totalMileage, 4, RoundingMode.HALF_UP);
+                
+                // 鏁版嵁鏍¢獙:鍗犳瘮搴斿湪0-1涔嬮棿,濡傛灉瓒呭嚭璇存槑鏁版嵁寮傚父
+                if (taskRatio.compareTo(BigDecimal.ONE) > 0) {
+                    logger.warn("杞﹁締ID: {} 鏃ユ湡: {} 浠诲姟閲岀▼鍗犳瘮寮傚父: {} (浠诲姟閲岀▼:{}, 鎬婚噷绋�:{}), 寮哄埗璁句负1.0", 
+                               vehicleId, statDate, taskRatio, taskMileage, totalMileage);
+                    taskRatio = BigDecimal.ONE;
+                } else if (taskRatio.compareTo(BigDecimal.ZERO) < 0) {
+                    logger.warn("杞﹁締ID: {} 鏃ユ湡: {} 浠诲姟閲岀▼鍗犳瘮涓鸿礋: {}, 寮哄埗璁句负0", 
+                               vehicleId, statDate, taskRatio);
+                    taskRatio = BigDecimal.ZERO;
+                }
             }
             
             // 5. 鏌ヨ鎴栧垱寤虹粺璁¤褰�
@@ -464,8 +491,14 @@
     @Override
     public int batchAggregateFromSegmentMileage(Date statDate) {
         try {
+            // 璁$畻鏌ヨ寮�濮嬫椂闂达紙7澶╁墠锛�
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(statDate);
+            calendar.add(Calendar.DAY_OF_MONTH, -7);
+            Date startTime = calendar.getTime();
+            
             // 鏌ヨ鎵�鏈夋椿璺冭溅杈�
-            List<Long> vehicleIds = vehicleGpsMapper.selectActiveVehicleIds();
+            List<Long> vehicleIds = vehicleGpsMapper.selectActiveVehicleIds(startTime);
             
             if (vehicleIds == null || vehicleIds.isEmpty()) {
                 logger.info("娌℃湁鎵惧埌娲昏穬杞﹁締");

--
Gitblit v1.9.1