wlzboy
5 天以前 7de1396e315896dbc72a9d54e44f77434ea90f18
ruoyi-system/src/main/resources/mapper/system/VehicleGpsMapper.xml
@@ -30,7 +30,7 @@
    <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>
@@ -130,10 +130,29 @@
        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 &gt;= DATE_SUB(NOW(), INTERVAL 7 DAY)
        where collect_time &gt;= #{startTime}
        group by vehicle_id
        order by vehicle_id
    </select>
    <!-- 查询未被计算的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
        INNER JOIN tb_vehicle_info v ON g.vehicle_id = v.vehicle_id
        WHERE g.vehicle_id = #{vehicleId}
          AND g.collect_time &gt;= #{startTime}
          AND g.collect_time &lt;= #{endTime}
          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>