<?xml version="1.0" encoding="UTF-8" ?>
|
<!DOCTYPE mapper
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<mapper namespace="com.ruoyi.system.mapper.VehicleMileageStatsMapper">
|
|
<resultMap type="VehicleMileageStats" id="VehicleMileageStatsResult">
|
<id property="statsId" column="stats_id" />
|
<result property="vehicleId" column="vehicle_id" />
|
<result property="vehicleNo" column="vehicle_no" />
|
<result property="deptName" column="dept_name" />
|
<result property="deptId" column="dept_id" />
|
<result property="statDate" column="stat_date" />
|
<result property="totalMileage" column="total_mileage" />
|
<result property="taskMileage" column="task_mileage" />
|
<result property="nonTaskMileage" column="non_task_mileage" />
|
<result property="taskRatio" column="task_ratio" />
|
<result property="gpsPointCount" column="gps_point_count" />
|
<result property="taskCount" column="task_count" />
|
<result property="segmentCount" column="segment_count" />
|
<result property="dataSource" column="data_source" />
|
<result property="createTime" column="create_time" />
|
<result property="updateTime" column="update_time" />
|
</resultMap>
|
|
<resultMap type="TaskTimeInterval" id="TaskTimeIntervalResult">
|
<result property="taskId" column="task_id" />
|
<result property="startTime" column="start_time" />
|
<result property="endTime" column="end_time" />
|
</resultMap>
|
|
<sql id="selectVehicleMileageStatsVo">
|
select s.stats_id, s.vehicle_id, s.vehicle_no, s.stat_date, s.total_mileage, s.task_mileage,
|
s.non_task_mileage, s.task_ratio, s.gps_point_count, s.task_count, s.segment_count,
|
s.data_source, s.create_time, s.update_time,
|
GROUP_CONCAT(DISTINCT d.dept_name ORDER BY d.dept_name SEPARATOR ',') as dept_name,
|
vd.dept_id
|
from tb_vehicle_mileage_stats s
|
left join tb_vehicle_info v on s.vehicle_id = v.vehicle_id
|
left join tb_vehicle_dept vd on v.vehicle_id = vd.vehicle_id
|
left join sys_dept d on vd.dept_id = d.dept_id
|
</sql>
|
|
<select id="selectVehicleMileageStatsList" parameterType="VehicleMileageStats" resultMap="VehicleMileageStatsResult">
|
<include refid="selectVehicleMileageStatsVo"/>
|
<where>
|
<if test="vehicleId != null">
|
and s.vehicle_id = #{vehicleId}
|
</if>
|
<if test="vehicleNo != null and vehicleNo != ''">
|
and s.vehicle_no like concat('%', #{vehicleNo}, '%')
|
</if>
|
<if test="deptId != null">
|
and vd.dept_id = #{deptId}
|
</if>
|
<if test="statDate != null">
|
and s.stat_date = #{statDate}
|
</if>
|
<if test="params.beginStatDate != null and params.beginStatDate != ''">
|
and s.stat_date >= #{params.beginStatDate}
|
</if>
|
<if test="params.endStatDate != null and params.endStatDate != ''">
|
and s.stat_date <= #{params.endStatDate}
|
</if>
|
</where>
|
group by s.stats_id, s.vehicle_id, s.vehicle_no, s.stat_date, s.total_mileage, s.task_mileage,
|
s.non_task_mileage, s.task_ratio, s.gps_point_count, s.task_count, s.segment_count,
|
s.data_source, s.create_time, s.update_time, vd.dept_id
|
order by s.stat_date desc, s.vehicle_id
|
</select>
|
|
<select id="selectVehicleMileageStatsById" parameterType="Long" resultMap="VehicleMileageStatsResult">
|
<include refid="selectVehicleMileageStatsVo"/>
|
where s.stats_id = #{statsId}
|
group by s.stats_id, s.vehicle_id, s.vehicle_no, s.stat_date, s.total_mileage, s.task_mileage,
|
s.non_task_mileage, s.task_ratio, s.gps_point_count, s.task_count, s.segment_count,
|
s.data_source, s.create_time, s.update_time, vd.dept_id
|
</select>
|
|
<!-- 根据车辆ID和统计日期查询唯一统计记录 -->
|
<select id="selectByVehicleIdAndDate" resultMap="VehicleMileageStatsResult">
|
select s.stats_id, s.vehicle_id, s.vehicle_no, s.stat_date, s.total_mileage, s.task_mileage,
|
s.non_task_mileage, s.task_ratio, s.gps_point_count, s.task_count, s.segment_count,
|
s.data_source, s.create_time, s.update_time
|
from tb_vehicle_mileage_stats s
|
where s.vehicle_id = #{vehicleId} and DATE(s.stat_date) = DATE(#{statDate})
|
limit 1
|
</select>
|
|
<select id="selectTaskTimeIntervals" resultMap="TaskTimeIntervalResult">
|
select tv.task_id, t.create_time as start_time,
|
IFNULL(t.actual_end_time, NOW()) as end_time
|
from sys_task_vehicle tv
|
inner join sys_task t on tv.task_id = t.task_id
|
where tv.vehicle_id = #{vehicleId}
|
and t.del_flag = '0'
|
and t.actual_end_time is not null
|
and t.create_time < #{endTime}
|
and t.actual_end_time > #{startTime}
|
order by t.create_time
|
</select>
|
|
<insert id="insertVehicleMileageStats" parameterType="VehicleMileageStats" useGeneratedKeys="true" keyProperty="statsId">
|
insert into tb_vehicle_mileage_stats
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
<if test="vehicleId != null">vehicle_id,</if>
|
<if test="vehicleNo != null">vehicle_no,</if>
|
<if test="statDate != null">stat_date,</if>
|
<if test="totalMileage != null">total_mileage,</if>
|
<if test="taskMileage != null">task_mileage,</if>
|
<if test="nonTaskMileage != null">non_task_mileage,</if>
|
<if test="taskRatio != null">task_ratio,</if>
|
<if test="gpsPointCount != null">gps_point_count,</if>
|
<if test="taskCount != null">task_count,</if>
|
<if test="segmentCount != null">segment_count,</if>
|
<if test="dataSource != null">data_source,</if>
|
create_time
|
</trim>
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<if test="vehicleId != null">#{vehicleId},</if>
|
<if test="vehicleNo != null">#{vehicleNo},</if>
|
<if test="statDate != null">#{statDate},</if>
|
<if test="totalMileage != null">#{totalMileage},</if>
|
<if test="taskMileage != null">#{taskMileage},</if>
|
<if test="nonTaskMileage != null">#{nonTaskMileage},</if>
|
<if test="taskRatio != null">#{taskRatio},</if>
|
<if test="gpsPointCount != null">#{gpsPointCount},</if>
|
<if test="taskCount != null">#{taskCount},</if>
|
<if test="segmentCount != null">#{segmentCount},</if>
|
<if test="dataSource != null">#{dataSource},</if>
|
NOW()
|
</trim>
|
ON DUPLICATE KEY UPDATE
|
vehicle_no = VALUES(vehicle_no),
|
total_mileage = VALUES(total_mileage),
|
task_mileage = VALUES(task_mileage),
|
non_task_mileage = VALUES(non_task_mileage),
|
task_ratio = VALUES(task_ratio),
|
gps_point_count = VALUES(gps_point_count),
|
task_count = VALUES(task_count),
|
segment_count = VALUES(segment_count),
|
data_source = VALUES(data_source),
|
update_time = NOW()
|
</insert>
|
|
<update id="updateVehicleMileageStats" parameterType="VehicleMileageStats">
|
update tb_vehicle_mileage_stats
|
<trim prefix="SET" suffixOverrides=",">
|
<if test="vehicleNo != null">vehicle_no = #{vehicleNo},</if>
|
<if test="totalMileage != null">total_mileage = #{totalMileage},</if>
|
<if test="taskMileage != null">task_mileage = #{taskMileage},</if>
|
<if test="nonTaskMileage != null">non_task_mileage = #{nonTaskMileage},</if>
|
<if test="taskRatio != null">task_ratio = #{taskRatio},</if>
|
<if test="gpsPointCount != null">gps_point_count = #{gpsPointCount},</if>
|
<if test="taskCount != null">task_count = #{taskCount},</if>
|
<if test="segmentCount != null">segment_count = #{segmentCount},</if>
|
<if test="dataSource != null">data_source = #{dataSource},</if>
|
update_time = NOW()
|
</trim>
|
where stats_id = #{statsId}
|
</update>
|
|
<delete id="deleteVehicleMileageStatsById" parameterType="Long">
|
delete from tb_vehicle_mileage_stats where stats_id = #{statsId}
|
</delete>
|
|
<delete id="deleteVehicleMileageStatsByIds" parameterType="Long">
|
delete from tb_vehicle_mileage_stats where stats_id in
|
<foreach item="statsId" collection="array" open="(" separator="," close=")">
|
#{statsId}
|
</foreach>
|
</delete>
|
</mapper>
|