From 6b5b3154f3fea0cba63ba80da62ed86c72dd304a Mon Sep 17 00:00:00 2001
From: liusuyi <13324259@qq.com>
Date: 周日, 04 6月 2023 10:21:43 +0800
Subject: [PATCH] 解决手动巡检前端修改当前步骤信息问题

---
 ard-work/src/main/java/com/ruoyi/inspect/mapper/ArdVideoInspectTaskMapper.java            |   10 ++
 ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java          |   64 ++++++++++++---------
 ard-work/src/main/resources/mapper/inspect/ArdVideoInspectTaskMapper.xml                  |   25 +++++++
 ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java |   62 +++++++++++---------
 4 files changed, 100 insertions(+), 61 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/inspect/mapper/ArdVideoInspectTaskMapper.java b/ard-work/src/main/java/com/ruoyi/inspect/mapper/ArdVideoInspectTaskMapper.java
index d7f98e1..5b30986 100644
--- a/ard-work/src/main/java/com/ruoyi/inspect/mapper/ArdVideoInspectTaskMapper.java
+++ b/ard-work/src/main/java/com/ruoyi/inspect/mapper/ArdVideoInspectTaskMapper.java
@@ -37,13 +37,19 @@
     public int insertArdVideoInspectTask(ArdVideoInspectTask ardVideoInspectTask);
 
     /**
-     * 修改视频巡检任务
+     * 修改视频巡检任务-不带带当前步骤信息
      * 
      * @param ardVideoInspectTask 视频巡检任务
      * @return 结果
      */
     public int updateArdVideoInspectTask(ArdVideoInspectTask ardVideoInspectTask);
-
+    /**
+     * 修改视频巡检任务-带当前步骤信息
+     *
+     * @param ardVideoInspectTask 视频巡检任务
+     * @return 结果
+     */
+    public int updateArdVideoInspectTaskWithCurrentSetpInfo(ArdVideoInspectTask ardVideoInspectTask);
     /**
      * 删除视频巡检任务
      * 
diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
index f482870..25576d7 100644
--- a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
@@ -2,6 +2,7 @@
 
 import java.text.SimpleDateFormat;
 import java.util.*;
+
 import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell;
 import com.ruoyi.alarmpoints.well.mapper.ArdAlarmpointsWellMapper;
 import com.ruoyi.common.utils.DateUtils;
@@ -115,7 +116,7 @@
         ardVideoInspectTask.setUpdateBy(SecurityUtils.getUsername());
         ardVideoInspectTask.setUpdateTime(DateUtils.getNowDate());
         //  ardVideoInspectTaskMapper.deleteArdVideoInspectTaskStepByTaskId(ardVideoInspectTask.getId());
-       // insertArdVideoInspectTaskStep(ardVideoInspectTask);
+        insertArdVideoInspectTaskStep(ardVideoInspectTask);
         return ardVideoInspectTaskMapper.updateArdVideoInspectTask(ardVideoInspectTask);
     }
 
@@ -193,8 +194,7 @@
     public void manualTaskRun(String TaskId) {
         try {
             ArdVideoInspectTask videoInspectTask = ardVideoInspectTaskMapper.selectArdVideoInspectTaskById(TaskId);
-            if(!videoInspectTask.getMenualSwitch().equals("开"))
-            {
+            if (!videoInspectTask.getMenualSwitch().equals("开")) {
                 return;
             }
             if (videoInspectTask.getArdVideoInspectTaskStepList().size() == 0) {
@@ -308,6 +308,7 @@
                         continue;
                     }
                     videoInspectTask.setArdVideoInspectTaskStepList(ardVideoInspectTaskStepList);
+
                     String currentStepId = videoInspectTask.getCurrentStepId();
                     String currentStepStartTime = videoInspectTask.getCurrentStepStartTime();
                     if (StringUtils.isNull(currentStepId) || StringUtils.isEmpty(currentStepId)) {
@@ -333,29 +334,30 @@
                         }
                     }
                 } else {
-                    if(Global.task_record.contains(videoInspectTask.getId()))
-                    {
-                        /*停止录像*/
-                        CameraCmd cmd = new CameraCmd();
-                        cmd.setCameraId(videoInspectTask.getCameraId());
-                        cmd.setChannelNum(videoInspectTask.getChannel());
-                        cmd.setOperator("sys_patrol_inspect");
-                        cmd.setEnable(false);//停止录像
-                        String uuid = UUID.randomUUID().toString().replace("-", "");
-                        String time = new SimpleDateFormat("yyyyMMdd").format(new Date());
-                        String recordName = videoInspectTask.getCameraId() + "/" + time + "/" + uuid + ".mp4";
-                        cmd.setRecordBucketName("record");
-                        cmd.setRecordObjectName(recordName);
-                        cmd.setUploadMinio(true);
-                        hikClientService.recordToMinio(cmd);
+//                    if(Global.task_record.contains(videoInspectTask.getId()))
+//                    {
+//                        /*停止录像*/
+//                        CameraCmd cmd = new CameraCmd();
+//                        cmd.setCameraId(videoInspectTask.getCameraId());
+//                        cmd.setChannelNum(videoInspectTask.getChannel());
+//                        cmd.setOperator("sys_patrol_inspect");
+//                        cmd.setEnable(false);//停止录像
+//                        String uuid = UUID.randomUUID().toString().replace("-", "");
+//                        String time = new SimpleDateFormat("yyyyMMdd").format(new Date());
+//                        String recordName = videoInspectTask.getCameraId() + "/" + time + "/" + uuid + ".mp4";
+//                        cmd.setRecordBucketName("record");
+//                        cmd.setRecordObjectName(recordName);
+//                        cmd.setUploadMinio(true);
+//                        hikClientService.recordToMinio(cmd);
+//                    }
+                    if (StringUtils.isNotEmpty(videoInspectTask.getCurrentStepId())) {
+                        videoInspectTask.setCurrentStepId("");
+                        ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(videoInspectTask);
                     }
-                    if (StringUtils.isEmpty(videoInspectTask.getCurrentStepId()) || StringUtils.isEmpty(videoInspectTask.getCurrentStepStartTime())) {
-                        continue;
+                    if (StringUtils.isNotEmpty(videoInspectTask.getCurrentStepStartTime())) {
+                        videoInspectTask.setCurrentStepId("");
+                        ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(videoInspectTask);
                     }
-                    /*过期的任务清空当前步骤信息*/
-                    videoInspectTask.setCurrentStepId("");
-                    videoInspectTask.setCurrentStepStartTime("");
-                    ardVideoInspectTaskMapper.updateArdVideoInspectTask(videoInspectTask);
                 }
             }
         } catch (Exception ex) {
@@ -432,7 +434,7 @@
                 /*更新任务当前步骤id和步骤启动时间*/
                 ardVideoInspectTask.setCurrentStepId(step.getId());
                 ardVideoInspectTask.setCurrentStepStartTime(DateUtils.getTime());
-                ardVideoInspectTaskMapper.updateArdVideoInspectTask(ardVideoInspectTask);
+                ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(ardVideoInspectTask);
                 String wellId = step.getWellId();
                 if (!StringUtils.isNull(wellId)) {
                     /*获取井坐标*/
@@ -457,8 +459,7 @@
                     cmd.setExpired(step.getRecordingTime());
                     boolean setTargetPosition = hikClientService.setTargetPosition(cmd);
                     if (setTargetPosition) {
-                        if(!Global.task_record.contains(ardVideoInspectTask.getId()))
-                        {
+                        if (!Global.task_record.contains(ardVideoInspectTask.getId())) {
                             /*控制相机巡检成功,开始录像*/
                             cmd.setEnable(true);//启动录像
                             hikClientService.recordToMinio(cmd);
@@ -470,7 +471,7 @@
                         hikClientService.recordToMinio(cmd);
                         /*控制失败,当前步骤启动时间置null*/
                         ardVideoInspectTask.setCurrentStepStartTime("");
-                        ardVideoInspectTaskMapper.updateArdVideoInspectTask(ardVideoInspectTask);
+                        ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(ardVideoInspectTask);
                     }
                 }
             }
@@ -478,6 +479,7 @@
             log.error("巡检开始异常:" + ex.getMessage());
         }
     }
+
     //步骤停止
     private void stopRunStep(ArdVideoInspectTask ardVideoInspectTask) {
         try {
@@ -524,6 +526,7 @@
             log.error("巡检停止异常:" + ex.getMessage());
         }
     }
+
     //步骤判断是否过期
     private boolean isExpirdStep(ArdVideoInspectTask ardVideoInspectTask) {
         try {
@@ -554,6 +557,7 @@
             return false;
         }
     }
+
     //步骤切换
     private String changeNextStep(ArdVideoInspectTask ardVideoInspectTask) {
         try {
@@ -582,7 +586,7 @@
                         .findFirst()
                         .orElse(null);
                 avit.setCurrentStepId(nextStepId);
-                ardVideoInspectTaskMapper.updateArdVideoInspectTask(avit);
+                ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(avit);
                 log.info("步骤:" + currentStepId + "切换为" + nextStepId);
                 return nextStepId;
             }
diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java
index 61ef513..f427cfd 100644
--- a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java
+++ b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java
@@ -13,6 +13,7 @@
 
 import javax.annotation.Resource;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -46,43 +47,44 @@
     public void startInspectionTask(String taskId) {
         if(taskMap.containsKey(taskId))
         {
-            log.info("巡检任务已启动:" + taskId);
+            log.info("手动巡检任务已启动:" + taskId);
             return;
         }
-        /*每次启动任务清空任务当前步骤信息*/
+//        /*每次启动任务清空任务当前步骤信息*/
         ArdVideoInspectTask ardVideoInspectTask = ardVideoInspectTaskMapper.selectArdVideoInspectTaskById(taskId);
-        ardVideoInspectTask.setCurrentStepId("");
-        ardVideoInspectTask.setCurrentStepStartTime("");
-        ardVideoInspectTaskMapper.updateArdVideoInspectTask(ardVideoInspectTask);
-        /*将关联的相机录像关闭*/
-        if( Global.task_record.contains(taskId))
-        {
-//            Integer userId = GlobalVariable.loginMap.get(ardVideoInspectTask.getCameraId());//获取当前相机的登录ID
-//            if( GlobalVariable.user_real_Map.containsKey(userId))
-//            {   //当前相机正在录像,则停止录像
-//                CameraCmd cmd = new CameraCmd();
-//                cmd.setCameraId(ardVideoInspectTask.getCameraId());
-//                cmd.setChannelNum(ardVideoInspectTask.getChannel());
-//                cmd.setEnable(false);//停止录像
-//                cmd.setUploadMinio(false);
-//                hikClientService.recordToMinio(cmd);
-//            }
-            Global.task_record.remove(taskId);
+//        ardVideoInspectTask.setCurrentStepId("");
+//        ardVideoInspectTask.setCurrentStepStartTime("");
+//        ardVideoInspectTaskMapper.updateArdVideoInspectTask(ardVideoInspectTask);
+
+        String cameraId = ardVideoInspectTask.getCameraId();
+        /*将当前相机的所有任务当前时间置空*/
+        ardVideoInspectTask=new ArdVideoInspectTask();
+        ardVideoInspectTask.setCameraId(cameraId);
+        List<ArdVideoInspectTask> ardVideoInspectTasks = ardVideoInspectTaskMapper.selectArdVideoInspectTaskList(ardVideoInspectTask);
+        if(ardVideoInspectTasks.size()>0) {
+            for (ArdVideoInspectTask VideoInspectTask : ardVideoInspectTasks) {
+                VideoInspectTask.setCurrentStepStartTime("");
+                ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(VideoInspectTask);
+                /*清楚任务录像记录*/
+                if(Global.task_record.contains(VideoInspectTask.getId()))
+                {
+                    Global.task_record.remove(VideoInspectTask.getId());
+                }
+            }
         }
+        /*开启任务*/
         InspectionTask task = new InspectionTask(taskId);
         task.start();
         taskMap.put(taskId, task);
-        log.info("巡检任务启动:" + taskId);
+        log.info("手动巡检任务启动:" + taskId);
     }
     /*停止任务*/
     public void stopInspectionTask(String taskId) {
-        /*将任务步骤信息清空*/
+
         ArdVideoInspectTask ardVideoInspectTask = ardVideoInspectTaskMapper.selectArdVideoInspectTaskById(taskId);
-        ardVideoInspectTask.setCurrentStepId("");
-        ardVideoInspectTask.setCurrentStepStartTime("");
-        ardVideoInspectTaskMapper.updateArdVideoInspectTask(ardVideoInspectTask);
         /*将关联的相机录像关闭*/
-        Integer userId = GlobalVariable.loginMap.get(ardVideoInspectTask.getCameraId());//获取当前相机的登录ID
+        String cameraId = ardVideoInspectTask.getCameraId();
+        Integer userId = GlobalVariable.loginMap.get(cameraId);//获取当前相机的登录ID
         if( GlobalVariable.user_real_Map.containsKey(userId))
         {   //当前相机正在录像,则停止录像
             CameraCmd cmd = new CameraCmd();
@@ -93,14 +95,20 @@
             hikClientService.recordToMinio(cmd);
             GlobalVariable.user_real_Map.remove(userId);
         }
+
+        /*停止任务*/
         InspectionTask task = taskMap.get(taskId);
         if (task != null) {
             task.stop();
             taskMap.remove(taskId);
-            log.info("巡检任务已停止:" + taskId);
-
+            Global.task_record.remove(taskId);
+            log.info("手动巡检任务已停止:" + taskId);
+            /*将任务步骤信息清空*/
+            ardVideoInspectTask.setCurrentStepId("");
+            ardVideoInspectTask.setCurrentStepStartTime("");
+            ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(ardVideoInspectTask);
         } else {
-            log.info("找不到指定的巡检任务:" + taskId);
+            log.info("找不到指定的手动巡检任务:" + taskId);
         }
     }
 }
diff --git a/ard-work/src/main/resources/mapper/inspect/ArdVideoInspectTaskMapper.xml b/ard-work/src/main/resources/mapper/inspect/ArdVideoInspectTaskMapper.xml
index 8101ae7..0829d05 100644
--- a/ard-work/src/main/resources/mapper/inspect/ArdVideoInspectTaskMapper.xml
+++ b/ard-work/src/main/resources/mapper/inspect/ArdVideoInspectTaskMapper.xml
@@ -121,12 +121,33 @@
             <if test="channel != null">channel = #{channel},</if>
             <if test="deptId != null">dept_id = #{deptId},</if>
             <if test="userId != null">user_id = #{userId},</if>
+<!--            <if test="currentStepId != null">current_step_id = #{currentStepId},</if>-->
+<!--            <if test="currentStepStartTime != null">current_step_start_time = #{currentStepStartTime},</if>-->
+        </trim>
+        where id = #{id}
+    </update>
+    <update id="updateArdVideoInspectTaskWithCurrentSetpInfo" parameterType="ArdVideoInspectTask">
+        update ard_video_inspect_task
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="taskName != null">task_name = #{taskName},</if>
+            <if test="startTime != null">start_time = #{startTime},</if>
+            <if test="endTime != null">end_time = #{endTime},</if>
+            <if test="repeatPeriod != null">repeat_period = #{repeatPeriod},</if>
+            <if test="inspectMode != null">inspect_mode = #{inspectMode},</if>
+            <if test="menualSwitch != null">menual_switch = #{menualSwitch},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="cameraId != null">camera_id = #{cameraId},</if>
+            <if test="channel != null">channel = #{channel},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="userId != null">user_id = #{userId},</if>
             <if test="currentStepId != null">current_step_id = #{currentStepId},</if>
             <if test="currentStepStartTime != null">current_step_start_time = #{currentStepStartTime},</if>
         </trim>
         where id = #{id}
     </update>
-
     <delete id="deleteArdVideoInspectTaskById" parameterType="String">
         delete from ard_video_inspect_task where id = #{id}
     </delete>
@@ -157,7 +178,7 @@
     </insert>
 
     <!--查询任务中相机已使用时段-->
-    <select id="getTaskUsedCameraPeriods" parameterType="String" resultType="java.util.HashMap">
+    <select id="getTaskUsedCameraPeriods" parameterType="String" resultType="java.util.List">
         select t.start_time,t.end_time from ard_video_inspect_task t
         where t.camera_id=#{startMonth}
         ORDER BY t.start_time

--
Gitblit v1.9.3