From 6b29bd596f8b48485d3506bfba4a1e0ea6c7df99 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期二, 14 四月 2026 22:45:40 +0800
Subject: [PATCH] feat: 优化统计及告急处理

---
 ruoyi-system/src/main/resources/mapper/system/VehicleGpsSegmentMileageMapper.xml |   37 ++++++++++++++++++++++++++++++++++---
 1 files changed, 34 insertions(+), 3 deletions(-)

diff --git a/ruoyi-system/src/main/resources/mapper/system/VehicleGpsSegmentMileageMapper.xml b/ruoyi-system/src/main/resources/mapper/system/VehicleGpsSegmentMileageMapper.xml
index 53443f9..aea0bf2 100644
--- a/ruoyi-system/src/main/resources/mapper/system/VehicleGpsSegmentMileageMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/VehicleGpsSegmentMileageMapper.xml
@@ -62,10 +62,26 @@
     </select>
 
     <select id="selectSegmentsByDateRange" resultMap="VehicleGpsSegmentMileageResult">
-        <include refid="selectVehicleGpsSegmentMileageVo"/>
+        SELECT segment_id, vehicle_id, vehicle_no, segment_start_time, segment_end_time,
+        start_longitude, start_latitude, end_longitude, end_latitude,
+        segment_distance, gps_point_count, task_id, task_code
+        FROM tb_vehicle_gps_segment_mileage
         WHERE vehicle_id = #{vehicleId}
-          AND segment_start_time &gt;= #{startDate}
-          AND segment_end_time &lt;= #{endDate}
+          AND segment_start_time between #{startDate} and #{endDate}
+          AND segment_end_time &gt;= #{startDate}
+          AND segment_distance &gt;0
+    </select>
+    
+    <!-- 鏌ヨ杞﹁締鍦ㄦ寚瀹氭椂闂磋寖鍥村唴鐨勫垎娈甸噷绋� -->
+    <select id="selectSegmentsByTimeRange" resultMap="VehicleGpsSegmentMileageResult">
+        SELECT segment_id, vehicle_id, vehicle_no, segment_start_time, segment_end_time,
+               start_longitude, start_latitude, end_longitude, end_latitude,
+               segment_distance, gps_point_count, gps_ids, task_id, task_code, calculate_method
+        FROM tb_vehicle_gps_segment_mileage
+        WHERE vehicle_id = #{vehicleId}
+          AND segment_start_time between #{startTime} and #{endTime}
+          AND segment_end_time &gt;= #{startTime}
+          AND segment_distance &gt; 0
         ORDER BY segment_start_time
     </select>
     
@@ -83,6 +99,7 @@
         WHERE task_id = #{taskId}
     </select>
         
+    <!-- 鎻掑叆鎴栨洿鏂板垎娈甸噷绋嬭褰曪紙閬垮厤閲嶅鎻掑叆锛� -->
     <insert id="insertVehicleGpsSegmentMileage" parameterType="VehicleGpsSegmentMileage">
         INSERT INTO tb_vehicle_gps_segment_mileage
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -117,6 +134,20 @@
             <if test="taskCode != null">#{taskCode},</if>
             <if test="calculateMethod != null">#{calculateMethod},</if>
         </trim>
+        ON DUPLICATE KEY UPDATE
+        vehicle_no = VALUES(vehicle_no),
+        segment_end_time = VALUES(segment_end_time),
+        start_longitude = VALUES(start_longitude),
+        start_latitude = VALUES(start_latitude),
+        end_longitude = VALUES(end_longitude),
+        end_latitude = VALUES(end_latitude),
+        segment_distance = VALUES(segment_distance),
+        gps_point_count = VALUES(gps_point_count),
+        gps_ids = VALUES(gps_ids),
+        task_id = VALUES(task_id),
+        task_code = VALUES(task_code),
+        calculate_method = VALUES(calculate_method),
+        update_time = NOW()
     </insert>
 
     <update id="updateVehicleGpsSegmentMileage" parameterType="VehicleGpsSegmentMileage">

--
Gitblit v1.9.1