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 | 48 +++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 45 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 43b5fb3..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 >= #{startDate}
- AND segment_end_time <= #{endDate}
+ AND segment_start_time between #{startDate} and #{endDate}
+ AND segment_end_time >= #{startDate}
+ AND segment_distance >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 >= #{startTime}
+ AND segment_distance > 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">
@@ -154,4 +185,15 @@
<select id="selectGpsCalculatedSegmentId" resultType="Long">
SELECT segment_id FROM tb_vehicle_gps_calculated WHERE gps_id = #{gpsId} LIMIT 1
</select>
+
+ <!-- 鏌ヨ杞﹁締鍦ㄦ寚瀹氭椂闂翠箣鍓嶆渶鍚庝竴涓凡澶勭悊鐨凣PS鍧愭爣ID -->
+ <select id="selectLastCalculatedGpsId" resultType="Long">
+ SELECT c.gps_id
+ FROM tb_vehicle_gps_calculated c
+ INNER JOIN tb_vehicle_gps g ON c.gps_id = g.gps_id
+ WHERE c.vehicle_id = #{vehicleId}
+ AND STR_TO_DATE(g.collect_time, '%Y-%m-%d %H:%i:%s') < #{beforeTime}
+ ORDER BY STR_TO_DATE(g.collect_time, '%Y-%m-%d %H:%i:%s') DESC
+ LIMIT 1
+ </select>
</mapper>
--
Gitblit v1.9.1