Browse Source

四长实际距离

hanfucheng 1 năm trước cách đây
mục cha
commit
329d827567

+ 16 - 36
src/main/resources/mapper/commandcenter/CommandCentreMapper.xml

@@ -25,61 +25,41 @@
     </select>
 
     <select id="getFourLengthPatrolDistance" parameterType="CommandCenterBO" resultType="map">
-        SELECT '林长巡视里程' name,IFNULL(Round( sum(t2.length) / 1000),0) num
-        FROM (SELECT a.id,a.create_time FROM centerdata_t_hydraulic_patrol_task a LEFT JOIN ${database_system}.sys_dept d ON a.dept_id = d.dept_id
+        SELECT '林长巡视里程' name,IFNULL(Round(sum(b.distance)/ 1000),0) num
+        FROM centerdata_t_hydraulic_patrol_task a
+        left JOIN centerdata_t_hydraulic_patrol_plan_record b on a.id = b.task_id
+        LEFT JOIN ${database_system}.sys_dept d ON a.dept_id = d.dept_id
         WHERE a.type = '1'
         <if test="deptId != null and deptId != ''">
             AND FIND_IN_SET( #{deptId}, CONCAT(d.ancestors,',',d.dept_id) )
         </if>
-        ) t1
-        LEFT JOIN (SELECT task_id,sum( c.juli ) length FROM ( SELECT a.task_id,IFNULL( st_distance_sphere ( point ( a.longitude, a.latitude ), point ( b.longitude, b.latitude ) ), 0 ) AS juli
-        FROM (SELECT a.*,(@i := @i + 1) AS xh FROM (SELECT a.task_id, b.longitude,b.latitude FROM centerdata_t_hydraulic_patrol_plan_record a
-        LEFT JOIN centerdata_t_hydraulic_patrol_track b ON b.record_id = a.id ORDER BY b.create_time) a,(SELECT @i := 1 ) AS itable ) a
-        LEFT JOIN ( SELECT a.*,(@j := @j + 1) AS xh FROM(SELECT a.task_id,b.longitude,b.latitude FROM centerdata_t_hydraulic_patrol_plan_record a
-        LEFT JOIN centerdata_t_hydraulic_patrol_track b ON b.record_id = a.id ORDER BY b.create_time) a,(SELECT @j := 0) AS itable) b ON a.xh = b.xh
-        AND a.task_id = b.task_id) c GROUP BY task_id) t2 ON t2.task_id = t1.id
         UNION ALL
-        SELECT '河长巡视里程' name,IFNULL(Round( sum(t2.length) / 1000),0) num
-        FROM (SELECT a.id,a.create_time FROM centerdata_t_hydraulic_patrol_task a LEFT JOIN ${database_system}.sys_dept d ON a.dept_id = d.dept_id
+        SELECT '河长巡视里程' name,IFNULL(Round(sum(b.distance)/ 1000),0) num
+        FROM centerdata_t_hydraulic_patrol_task a
+        left JOIN centerdata_t_hydraulic_patrol_plan_record b on a.id = b.task_id
+        LEFT JOIN ${database_system}.sys_dept d ON a.dept_id = d.dept_id
         WHERE a.type = '2'
         <if test="deptId != null and deptId != ''">
             AND FIND_IN_SET( #{deptId}, CONCAT(d.ancestors,',',d.dept_id) )
         </if>
-        ) t1
-        LEFT JOIN (SELECT task_id,sum( c.juli ) length FROM ( SELECT a.task_id,IFNULL( st_distance_sphere ( point ( a.longitude, a.latitude ), point ( b.longitude, b.latitude ) ), 0 ) AS juli
-        FROM (SELECT a.*,(@i := @i + 1) AS xh FROM (SELECT a.task_id, b.longitude,b.latitude FROM centerdata_t_hydraulic_patrol_plan_record a
-        LEFT JOIN centerdata_t_hydraulic_patrol_track b ON b.record_id = a.id ORDER BY b.create_time) a,(SELECT @i := 1 ) AS itable ) a
-        LEFT JOIN ( SELECT a.*,(@j := @j + 1) AS xh FROM(SELECT a.task_id,b.longitude,b.latitude FROM centerdata_t_hydraulic_patrol_plan_record a
-        LEFT JOIN centerdata_t_hydraulic_patrol_track b ON b.record_id = a.id ORDER BY b.create_time) a,(SELECT @j := 0) AS itable) b ON a.xh = b.xh
-        AND a.task_id = b.task_id) c GROUP BY task_id) t2 ON t2.task_id = t1.id
         UNION ALL
-        SELECT '路长巡视里程' name,IFNULL(Round( sum(t2.length) / 1000),0) num
-        FROM (SELECT a.id,a.create_time FROM centerdata_t_hydraulic_patrol_task a LEFT JOIN ${database_system}.sys_dept d ON a.dept_id = d.dept_id
+        SELECT '路长巡视里程' name,IFNULL(Round(sum(b.distance)/ 1000),0) num
+        FROM centerdata_t_hydraulic_patrol_task a
+        left JOIN centerdata_t_hydraulic_patrol_plan_record b on a.id = b.task_id
+        LEFT JOIN ${database_system}.sys_dept d ON a.dept_id = d.dept_id
         WHERE a.type = '3'
         <if test="deptId != null and deptId != ''">
             AND FIND_IN_SET( #{deptId}, CONCAT(d.ancestors,',',d.dept_id) )
         </if>
-        ) t1
-        LEFT JOIN (SELECT task_id,sum( c.juli ) length FROM ( SELECT a.task_id,IFNULL( st_distance_sphere ( point ( a.longitude, a.latitude ), point ( b.longitude, b.latitude ) ), 0 ) AS juli
-        FROM (SELECT a.*,(@i := @i + 1) AS xh FROM (SELECT a.task_id, b.longitude,b.latitude FROM centerdata_t_hydraulic_patrol_plan_record a
-        LEFT JOIN centerdata_t_hydraulic_patrol_track b ON b.record_id = a.id ORDER BY b.create_time) a,(SELECT @i := 1 ) AS itable ) a
-        LEFT JOIN ( SELECT a.*,(@j := @j + 1) AS xh FROM(SELECT a.task_id,b.longitude,b.latitude FROM centerdata_t_hydraulic_patrol_plan_record a
-        LEFT JOIN centerdata_t_hydraulic_patrol_track b ON b.record_id = a.id ORDER BY b.create_time) a,(SELECT @j := 0) AS itable) b ON a.xh = b.xh
-        AND a.task_id = b.task_id) c GROUP BY task_id) t2 ON t2.task_id = t1.id
         UNION ALL
-        SELECT '田长巡视里程' name,IFNULL(Round( sum(t2.length) / 1000),0) num
-        FROM (SELECT a.id,a.create_time FROM centerdata_t_hydraulic_patrol_task a LEFT JOIN ${database_system}.sys_dept d ON a.dept_id = d.dept_id
+        SELECT '田长巡视里程' name,IFNULL(Round(sum(b.distance)/ 1000),0) num
+        FROM centerdata_t_hydraulic_patrol_task a
+        left JOIN centerdata_t_hydraulic_patrol_plan_record b on a.id = b.task_id
+        LEFT JOIN ${database_system}.sys_dept d ON a.dept_id = d.dept_id
         WHERE a.type = '6'
         <if test="deptId != null and deptId != ''">
             AND FIND_IN_SET( #{deptId}, CONCAT(d.ancestors,',',d.dept_id) )
         </if>
-        ) t1
-        LEFT JOIN (SELECT task_id,sum( c.juli ) length FROM ( SELECT a.task_id,IFNULL( st_distance_sphere ( point ( a.longitude, a.latitude ), point ( b.longitude, b.latitude ) ), 0 ) AS juli
-        FROM (SELECT a.*,(@i := @i + 1) AS xh FROM (SELECT a.task_id, b.longitude,b.latitude FROM centerdata_t_hydraulic_patrol_plan_record a
-        LEFT JOIN centerdata_t_hydraulic_patrol_track b ON b.record_id = a.id ORDER BY b.create_time) a,(SELECT @i := 1 ) AS itable ) a
-        LEFT JOIN ( SELECT a.*,(@j := @j + 1) AS xh FROM(SELECT a.task_id,b.longitude,b.latitude FROM centerdata_t_hydraulic_patrol_plan_record a
-        LEFT JOIN centerdata_t_hydraulic_patrol_track b ON b.record_id = a.id ORDER BY b.create_time) a,(SELECT @j := 0) AS itable) b ON a.xh = b.xh
-        AND a.task_id = b.task_id) c GROUP BY task_id) t2 ON t2.task_id = t1.id
     </select>
 
     <select id="getOverview" parameterType="CommandCenterBO" resultType="map">

+ 1 - 1
src/main/resources/mapper/digitalwater/CenterdataTHydraulicPatrolTaskMapper.xml

@@ -43,7 +43,7 @@
     <select id="selectCenterdataTHydraulicPatrolTaskList" parameterType="CenterdataTHydraulicPatrolTask"
             resultMap="CenterdataTHydraulicPatrolTaskResult">
         select a.id, a.task_name, a.plan_id, a.plan_name,a.user_id,a.status, a.dept_id, a.dept_name, a.create_by, a.create_name,
-        a.create_time, a.update_by, a.update_name, a.update_time, a.data_status, a.type,a.patrol_trajectory,sum( b.distance ) distance
+        a.create_time, a.update_by, a.update_name, a.update_time, a.data_status, a.type,a.patrol_trajectory,IFNULL(Round(sum(b.distance)/ 1000,2),0) distance
         from centerdata_t_hydraulic_patrol_task a
         left join ${database_system}.sys_dept d on a.dept_id = d.dept_id
         LEFT JOIN centerdata_t_hydraulic_patrol_plan_record b ON a.id = b.task_id

+ 1 - 1
src/main/resources/mapper/digitalwater/CenterdataTHydraulicTrackMapper.xml

@@ -220,7 +220,7 @@
     </delete>
 
     <select id="actualDistance" parameterType="String" resultType="java.lang.String">
-        SELECT  IFNULL(Round( sum( c.juli ) / 1000,2),0) distance FROM (
+        SELECT  IFNULL(Round( sum( c.juli ) ,2),0) distance FROM (
         SELECT
         IFNULL( st_distance_sphere ( point ( a.longitude, a.latitude ), point ( b.longitude, b.latitude ) ), 0 ) AS juli
         FROM (