| | |
| | | <select id="selectVehicleGpsList" parameterType="VehicleGps" resultMap="VehicleGpsResult"> |
| | | <include refid="selectVehicleGpsVo"/> |
| | | <where> |
| | | <if test="vehicleNo != null and vehicleNo != ''"> and vehicle_no = #{vehicleNo}</if> |
| | | <if test="vehicleNo != null and vehicleNo != ''"> and v.vehicle_no like concat('%', #{vehicleNo}, '%')</if> |
| | | <if test="longitude != null "> and longitude = #{longitude}</if> |
| | | <if test="latitude != null "> and latitude = #{latitude}</if> |
| | | <if test="speed != null "> and speed = #{speed}</if> |
| | |
| | | where vehicle_id = #{vehicleId} |
| | | and collect_time >= #{startTime} |
| | | and collect_time <= #{endTime} |
| | | order by collect_time |
| | | </select> |
| | | |
| | | <!-- 查询活跃车辆ID(优化:使用GROUP BY替代DISTINCT,提升性能) --> |
| | | <select id="selectActiveVehicleIds" resultType="Long"> |
| | | select distinct vehicle_id |
| | | select vehicle_id |
| | | from tb_vehicle_gps |
| | | where collect_time >= DATE_SUB(NOW(), INTERVAL 7 DAY) |
| | | order by vehicle_id |
| | | where collect_time >= #{startTime} |
| | | </select> |
| | | |
| | | <!-- 查询未被计算的GPS坐标(不在tb_vehicle_gps_calculated表中的记录) --> |
| | | <!-- 查询未被计算的GPS坐标(优化:使用NOT EXISTS替代LEFT JOIN ... IS NULL) --> |
| | | <select id="selectUncalculatedGps" resultMap="VehicleGpsResult"> |
| | | SELECT g.gps_id, g.vehicle_id, g.device_id, g.longitude, g.latitude, g.altitude, |
| | | g.speed, g.direction, g.collect_time, g.device_report_time, |
| | | g.platform_process_time, g.create_time, v.vehicle_no |
| | | FROM tb_vehicle_gps g |
| | | LEFT JOIN tb_vehicle_info v ON g.vehicle_id = v.vehicle_id |
| | | LEFT JOIN tb_vehicle_gps_calculated c ON g.gps_id = c.gps_id |
| | | INNER JOIN tb_vehicle_info v ON g.vehicle_id = v.vehicle_id |
| | | WHERE g.vehicle_id = #{vehicleId} |
| | | AND g.collect_time >= #{startTime} |
| | | AND g.collect_time <= #{endTime} |
| | | AND c.gps_id IS NULL -- 未被计算的GPS点 |
| | | AND NOT EXISTS ( |
| | | SELECT 1 FROM tb_vehicle_gps_calculated c |
| | | WHERE c.gps_id = g.gps_id |
| | | ) |
| | | ORDER BY g.collect_time |
| | | </select> |
| | | </mapper> |