From 6b5b3154f3fea0cba63ba80da62ed86c72dd304a Mon Sep 17 00:00:00 2001
From: liusuyi <13324259@qq.com>
Date: 星期日, 04 六月 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);
                         /*鎺у埗澶辫触,褰撳墠姝ラ鍚姩鏃堕棿缃畁ull*/
                         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());//鑾峰彇褰撳墠鐩告満鐨勭櫥褰旾D
-//            if( GlobalVariable.user_real_Map.containsKey(userId))
-//            {   //褰撳墠鐩告満姝e湪褰曞儚锛屽垯鍋滄褰曞儚
-//                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());//鑾峰彇褰撳墠鐩告満鐨勭櫥褰旾D
+        String cameraId = ardVideoInspectTask.getCameraId();
+        Integer userId = GlobalVariable.loginMap.get(cameraId);//鑾峰彇褰撳墠鐩告満鐨勭櫥褰旾D
         if( GlobalVariable.user_real_Map.containsKey(userId))
         {   //褰撳墠鐩告満姝e湪褰曞儚锛屽垯鍋滄褰曞儚
             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