浏览代码

数据中心

hanfucheng 1 年之前
父节点
当前提交
9dad0d84f4

+ 1 - 1
data-ui/src/views/data/digitalwater/task/index.vue

@@ -77,7 +77,7 @@
         </template>
       </el-table-column>
       <el-table-column label="计划巡查距离(km)" align="center" prop="planLength"/>
-      <el-table-column label="实际巡查距离(km)" align="center" prop="realLength"/>
+      <el-table-column label="实际巡查距离(km)" align="center" prop="distance"/>
       <el-table-column label="所属部门" align="center" prop="deptName"/>
       <el-table-column label="创建人" align="center" prop="createName"/>
       <el-table-column label="创建时间" align="center" prop="createTime"/>

+ 3 - 0
src/main/java/com/sooka/sponest/data/digitalwater/domain/CenterdataTHydraulicPatrolPlanRecord.java

@@ -85,4 +85,7 @@ public class CenterdataTHydraulicPatrolPlanRecord extends BaseBusinessEntity {
     @ApiModelProperty(value = "任务轨迹", required = false)
     private String patrolTrajectory;
 
+    //实际距离
+    private String distance;
+
 }

+ 3 - 0
src/main/java/com/sooka/sponest/data/digitalwater/domain/CenterdataTHydraulicPatrolTask.java

@@ -104,4 +104,7 @@ public class CenterdataTHydraulicPatrolTask extends BaseBusinessEntity {
     private String realLength;
     @ApiModelProperty(required = false,hidden = true)
     private String leadType;
+
+    //实际距离
+    private String distance;
 }

+ 2 - 0
src/main/java/com/sooka/sponest/data/digitalwater/mapper/CenterdataTHydraulicTrackMapper.java

@@ -62,4 +62,6 @@ public interface CenterdataTHydraulicTrackMapper {
     int deleteCenterdataTrack(@Param("ids") String[] ids);
 
     int deleteCenterdataRecord(@Param("ids") String[] ids);
+
+    String actualDistance(String recordId);
 }

+ 13 - 9
src/main/java/com/sooka/sponest/data/digitalwater/service/impl/CenterdataTHydraulicPatrolPlanRecordServiceImpl.java

@@ -5,6 +5,7 @@ import com.ruoyi.common.core.utils.DateUtils;
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.sooka.sponest.data.digitalwater.domain.CenterdataTHydraulicPatrolPlanRecord;
 import com.sooka.sponest.data.digitalwater.mapper.CenterdataTHydraulicPatrolPlanRecordMapper;
+import com.sooka.sponest.data.digitalwater.mapper.CenterdataTHydraulicTrackMapper;
 import com.sooka.sponest.data.digitalwater.service.ICenterdataTHydraulicPatrolPlanRecordService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -23,6 +24,9 @@ public class CenterdataTHydraulicPatrolPlanRecordServiceImpl implements ICenterd
     @Autowired
     private CenterdataTHydraulicPatrolPlanRecordMapper centerdataTHydraulicPatrolPlanRecordMapper;
 
+    @Autowired
+    private CenterdataTHydraulicTrackMapper centerdataTHydraulicTrackMapper;
+
     /**
      * 查询水利巡查记录列表
      *
@@ -58,15 +62,12 @@ public class CenterdataTHydraulicPatrolPlanRecordServiceImpl implements ICenterd
         //结束当前用户在当前任务中所有未结束的巡查记录
         List<CenterdataTHydraulicPatrolPlanRecord> list = centerdataTHydraulicPatrolPlanRecordMapper.selectCenterdataTHydraulicPatrolPlanRecordList(centerdataTHydraulicPatrolPlanRecord);
         for (CenterdataTHydraulicPatrolPlanRecord record : list) {
-            CenterdataTHydraulicPatrolPlanRecord planRecord = new CenterdataTHydraulicPatrolPlanRecord();
-            planRecord.setTaskId(record.getTaskId());
-            planRecord.setUserId(record.getUserId());
-            planRecord.setEndTime(DateUtils.getTime());
-            planRecord.setStatus("1");
-            centerdataTHydraulicPatrolPlanRecord.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getUserId());
-            centerdataTHydraulicPatrolPlanRecord.setUpdateName(SecurityUtils.getUsername());
-            centerdataTHydraulicPatrolPlanRecord.setUpdateTime(DateUtils.getNowDate());
-            centerdataTHydraulicPatrolPlanRecordMapper.finishRecoed(centerdataTHydraulicPatrolPlanRecord);
+            record.setEndTime(DateUtils.getTime());
+            record.setStatus("1");
+            record.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getUserId());
+            record.setUpdateName(SecurityUtils.getUsername());
+            record.setUpdateTime(DateUtils.getNowDate());
+            centerdataTHydraulicPatrolPlanRecordMapper.finishRecoed(record);
         }
     }
 
@@ -83,6 +84,9 @@ public class CenterdataTHydraulicPatrolPlanRecordServiceImpl implements ICenterd
         centerdataTHydraulicPatrolPlanRecord.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getUserId());
         centerdataTHydraulicPatrolPlanRecord.setUpdateName(SecurityUtils.getUsername());
         centerdataTHydraulicPatrolPlanRecord.setUpdateTime(DateUtils.getNowDate());
+        int i = centerdataTHydraulicPatrolPlanRecordMapper.finishRecoed(centerdataTHydraulicPatrolPlanRecord);
+        String distance = centerdataTHydraulicTrackMapper.actualDistance(centerdataTHydraulicPatrolPlanRecord.getId());
+        centerdataTHydraulicPatrolPlanRecord.setDistance(distance);
         return centerdataTHydraulicPatrolPlanRecordMapper.finishRecoed(centerdataTHydraulicPatrolPlanRecord);
     }
 }

+ 16 - 0
src/main/java/com/sooka/sponest/data/digitalwater/service/impl/CenterdataTHydraulicTrackServiceImpl.java

@@ -106,6 +106,9 @@ public class CenterdataTHydraulicTrackServiceImpl extends BaseServiceImpl implem
         int i = centerdataTHydraulicTrackMapper.insertCenterdataRecord(centerdataTHydraulicPatrolPlanRecord);
         if (i > 0) {
             addTrack(centerdataTHydraulicPatrolPlanRecord);
+            String distance = this.actualDistance(centerdataTHydraulicPatrolPlanRecord.getId());
+            centerdataTHydraulicPatrolPlanRecord.setDistance(distance);
+            centerdataTHydraulicTrackMapper.updateCenterdataRecord(centerdataTHydraulicPatrolPlanRecord);
             return 1;
         } else {
             return 0;
@@ -126,6 +129,9 @@ public class CenterdataTHydraulicTrackServiceImpl extends BaseServiceImpl implem
         centerdataTHydraulicPatrolPlanRecord.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getUserId());
         centerdataTHydraulicPatrolPlanRecord.setUpdateName(SecurityUtils.getLoginUser().getSysUser().getNickName());
         centerdataTHydraulicPatrolPlanRecord.setUpdateTime(DateUtils.getNowDate());
+        centerdataTHydraulicTrackMapper.updateCenterdataRecord(centerdataTHydraulicPatrolPlanRecord);
+        String distance = this.actualDistance(centerdataTHydraulicPatrolPlanRecord.getId());
+        centerdataTHydraulicPatrolPlanRecord.setDistance(distance);
         return centerdataTHydraulicTrackMapper.updateCenterdataRecord(centerdataTHydraulicPatrolPlanRecord);
     }
 
@@ -172,4 +178,14 @@ public class CenterdataTHydraulicTrackServiceImpl extends BaseServiceImpl implem
         return centerdataTHydraulicTrackMapper.insertCenterdataTrack(jsonlist);
     }
 
+    /*
+    * 计算实际距离
+    *
+    * @author 韩福成
+    * @date 2023/12/28 16:00
+    */
+    public String actualDistance(String recordId) {
+        return centerdataTHydraulicTrackMapper.actualDistance(recordId);
+    }
+
 }

+ 1 - 0
src/main/resources/mapper/digitalwater/CenterdataTHydraulicPatrolPlanRecordMapper.xml

@@ -67,6 +67,7 @@
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="updateName != null">update_name = #{updateName},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="distance != null">distance = #{distance},</if>
         </trim>
         where id = #{id}
     </update>

+ 7 - 25
src/main/resources/mapper/digitalwater/CenterdataTHydraulicPatrolTaskMapper.xml

@@ -24,6 +24,7 @@
         <result property="planCount" column="planCount"/>
         <result property="recordCount" column="recordCount"/>
         <result property="patrolTrajectory" column="patrol_trajectory"/>
+        <result property="distance" column="distance"/>
     </resultMap>
 
     <resultMap type="SysUserBody" id="SysUserBody">
@@ -41,9 +42,11 @@
 
     <select id="selectCenterdataTHydraulicPatrolTaskList" parameterType="CenterdataTHydraulicPatrolTask"
             resultMap="CenterdataTHydraulicPatrolTaskResult">
-        SELECT t1.*,IFNULL(Round( t2.length / 1000,2),0) realLength FROM (
-        <include refid="selectCenterdataTHydraulicPatrolTaskVo"/>
+        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
+        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
         <where>
             <if test="planId != null  and planId != ''">and a.plan_id = #{planId}</if>
             <if test="planName != null  and planName != ''">and a.plan_name like concat('%', #{planName}, '%')</if>
@@ -58,29 +61,8 @@
             <if test="type != null  and type != ''">and a.type = #{type}</if>
             ${params.dataScope}
         </where>
-        ) 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
-        ORDER BY t1.create_time DESC
+        GROUP BY a.id
+        ORDER BY a.create_time DESC
     </select>
 
     <select id="selectCenterdataTHydraulicPatrolTaskById" parameterType="String"

+ 25 - 0
src/main/resources/mapper/digitalwater/CenterdataTHydraulicTrackMapper.xml

@@ -145,6 +145,7 @@
             <if test="createBy != null">create_by,</if>
             <if test="createTime != null">create_time,</if>
             <if test="createName != null">create_name,</if>
+            <if test="distance != null">distance,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
@@ -157,6 +158,7 @@
             <if test="createBy != null">#{createBy},</if>
             <if test="createTime != null">#{createTime},</if>
             <if test="createName != null">#{createName},</if>
+            <if test="distance != null">#{distance},</if>
         </trim>
     </insert>
 
@@ -205,6 +207,7 @@
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="updateName != null">update_name = #{updateName},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="distance != null">distance = #{distance},</if>
         </trim>
         where id = #{id}
     </update>
@@ -215,4 +218,26 @@
             #{id}
         </foreach>
     </delete>
+
+    <select id="actualDistance" parameterType="String" resultType="java.lang.String">
+        SELECT  IFNULL(Round( sum( c.juli ) / 1000,2),0) distance FROM (
+        SELECT
+        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.id,b.create_time,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
+        where a.id = #{recordId}
+        ORDER BY a.create_time, b.create_time) a,(SELECT @i := 1) AS itable
+        ) a
+        LEFT JOIN (
+        SELECT a.*,(@j := @j + 1) AS xh FROM(
+        SELECT a.id,b.create_time,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
+        where a.id = #{recordId}
+        ORDER BY a.create_time, b.create_time) a,(SELECT @j := 0) AS itable
+        ) b ON a.xh = b.xh AND a.id = b.id) c
+    </select>
 </mapper>