From f67945d53b20f6a45ae50b27d74c966eb1355bb4 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期日, 16 十一月 2025 22:53:54 +0800
Subject: [PATCH] feat: 增加分段GPS计算行程距离

---
 ruoyi-system/src/main/resources/mapper/system/VehicleMileageStatsMapper.xml |   50 +++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 39 insertions(+), 11 deletions(-)

diff --git a/ruoyi-system/src/main/resources/mapper/system/VehicleMileageStatsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/VehicleMileageStatsMapper.xml
index 95439e9..69ddb7e 100644
--- a/ruoyi-system/src/main/resources/mapper/system/VehicleMileageStatsMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/VehicleMileageStatsMapper.xml
@@ -8,6 +8,8 @@
         <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"       />
@@ -15,6 +17,8 @@
         <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>
@@ -26,41 +30,59 @@
     </resultMap>
 
     <sql id="selectVehicleMileageStatsVo">
-        select stats_id, vehicle_id, vehicle_no, stat_date, total_mileage, task_mileage, 
-               non_task_mileage, task_ratio, gps_point_count, task_count, create_time, update_time
-        from tb_vehicle_mileage_stats
+        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 vehicle_id = #{vehicleId}
+                and s.vehicle_id = #{vehicleId}
             </if>
             <if test="vehicleNo != null and vehicleNo != ''">
-                and vehicle_no = #{vehicleNo}
+                and s.vehicle_no like concat('%', #{vehicleNo}, '%')
+            </if>
+            <if test="deptId != null">
+                and vd.dept_id = #{deptId}
             </if>
             <if test="statDate != null">
-                and stat_date = #{statDate}
+                and s.stat_date = #{statDate}
             </if>
             <if test="params.beginStatDate != null and params.beginStatDate != ''">
-                and stat_date &gt;= #{params.beginStatDate}
+                and s.stat_date &gt;= #{params.beginStatDate}
             </if>
             <if test="params.endStatDate != null and params.endStatDate != ''">
-                and stat_date &lt;= #{params.endStatDate}
+                and s.stat_date &lt;= #{params.endStatDate}
             </if>
         </where>
-        order by stat_date desc, vehicle_id
+        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 stats_id = #{statsId}
+        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>
 
     <select id="selectByVehicleIdAndDate" resultMap="VehicleMileageStatsResult">
         <include refid="selectVehicleMileageStatsVo"/>
-        where vehicle_id = #{vehicleId} and stat_date = #{statDate}
+        where s.vehicle_id = #{vehicleId} and s.stat_date = #{statDate}
+        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>
 
     <select id="selectTaskTimeIntervals" resultMap="TaskTimeIntervalResult">
@@ -88,6 +110,8 @@
             <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=",">
@@ -100,6 +124,8 @@
             <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>
     </insert>
@@ -114,6 +140,8 @@
             <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}

--
Gitblit v1.9.1