From 8dcb6801a19f08af6c7baaf6a1b9105c8b4dc58b Mon Sep 17 00:00:00 2001
From: liusuyi <13324259@qq.com>
Date: 星期三, 31 五月 2023 21:31:38 +0800
Subject: [PATCH] 增加手动巡检

---
 ard-work/src/main/java/com/ruoyi/inspect/service/IArdVideoInspectTaskService.java         |   35 +
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PatrolInspectionTask.java                |  460 ++++++++++++++++------------
 ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java |  422 +++++++++++++++++++++++--
 ruoyi-admin/src/main/resources/application-ard.yml                                        |    2 
 ruoyi-admin/src/main/resources/application.yml                                            |    4 
 5 files changed, 673 insertions(+), 250 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/IArdVideoInspectTaskService.java b/ard-work/src/main/java/com/ruoyi/inspect/service/IArdVideoInspectTaskService.java
index 9765b4c..4f070de 100644
--- a/ard-work/src/main/java/com/ruoyi/inspect/service/IArdVideoInspectTaskService.java
+++ b/ard-work/src/main/java/com/ruoyi/inspect/service/IArdVideoInspectTaskService.java
@@ -1,19 +1,19 @@
 package com.ruoyi.inspect.service;
 
 import java.util.List;
+
 import com.ruoyi.inspect.domain.ArdVideoInspectTask;
 
 /**
  * 瑙嗛宸℃浠诲姟Service鎺ュ彛
- * 
+ *
  * @author ruoyi
  * @date 2023-05-30
  */
-public interface IArdVideoInspectTaskService 
-{
+public interface IArdVideoInspectTaskService {
     /**
      * 鏌ヨ瑙嗛宸℃浠诲姟
-     * 
+     *
      * @param id 瑙嗛宸℃浠诲姟涓婚敭
      * @return 瑙嗛宸℃浠诲姟
      */
@@ -21,7 +21,7 @@
 
     /**
      * 鏌ヨ瑙嗛宸℃浠诲姟鍒楄〃
-     * 
+     *
      * @param ardVideoInspectTask 瑙嗛宸℃浠诲姟
      * @return 瑙嗛宸℃浠诲姟闆嗗悎
      */
@@ -29,7 +29,7 @@
 
     /**
      * 鏂板瑙嗛宸℃浠诲姟
-     * 
+     *
      * @param ardVideoInspectTask 瑙嗛宸℃浠诲姟
      * @return 缁撴灉
      */
@@ -37,15 +37,17 @@
 
     /**
      * 淇敼瑙嗛宸℃浠诲姟
-     * 
+     *
      * @param ardVideoInspectTask 瑙嗛宸℃浠诲姟
      * @return 缁撴灉
      */
     public int updateArdVideoInspectTask(ArdVideoInspectTask ardVideoInspectTask);
+
     public int updateArdVideoInspectTaskNoUpdater(ArdVideoInspectTask ardVideoInspectTask);
+
     /**
      * 鎵归噺鍒犻櫎瑙嗛宸℃浠诲姟
-     * 
+     *
      * @param ids 闇�瑕佸垹闄ょ殑瑙嗛宸℃浠诲姟涓婚敭闆嗗悎
      * @return 缁撴灉
      */
@@ -53,9 +55,24 @@
 
     /**
      * 鍒犻櫎瑙嗛宸℃浠诲姟淇℃伅
-     * 
+     *
      * @param id 瑙嗛宸℃浠诲姟涓婚敭
      * @return 缁撴灉
      */
     public int deleteArdVideoInspectTaskById(String id);
+
+    /**
+     * 鑷姩宸℃浠诲姟
+     */
+    public void autoTaskRun();
+
+    /**
+     * 鎵嬪姩宸℃浠诲姟
+     */
+    public void manualTaskRun();
+
+    /**
+     * 宸℃浠诲姟
+     */
+    public void taskRun();
 }
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 ce253a1..126e3bc 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
@@ -1,19 +1,35 @@
 package com.ruoyi.inspect.service.impl;
 
-import java.util.List;
-        import com.ruoyi.common.utils.DateUtils;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
+import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell;
+import com.ruoyi.alarmpoints.well.mapper.ArdAlarmpointsWellMapper;
+import com.ruoyi.alarmpoints.well.service.IArdAlarmpointsWellService;
+import com.ruoyi.common.utils.DateUtils;
+
+import com.ruoyi.device.camera.domain.ArdCameras;
+import com.ruoyi.device.camera.domain.CameraCmd;
+import com.ruoyi.device.camera.mapper.ArdCamerasMapper;
+import com.ruoyi.device.camera.service.IArdCamerasService;
+import com.ruoyi.device.hiksdk.config.MinioClientSingleton;
+import com.ruoyi.device.hiksdk.service.IHikClientService;
+import com.ruoyi.inspect.domain.ArdVideoInspectRecord;
+import com.ruoyi.inspect.mapper.ArdVideoInspectRecordMapper;
+import com.ruoyi.inspect.service.IArdVideoInspectRecordService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-    import java.util.ArrayList;
 
-    import com.ruoyi.common.utils.StringUtils;
-    import com.ruoyi.common.utils.SecurityUtils;
-    import org.springframework.transaction.annotation.Transactional;
-    import com.ruoyi.inspect.domain.ArdVideoInspectTaskStep;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import org.springframework.transaction.annotation.Transactional;
+import com.ruoyi.inspect.domain.ArdVideoInspectTaskStep;
 import com.ruoyi.inspect.mapper.ArdVideoInspectTaskMapper;
 import com.ruoyi.inspect.domain.ArdVideoInspectTask;
 import com.ruoyi.inspect.service.IArdVideoInspectTaskService;
+
+import javax.annotation.Resource;
 
 /**
  * 瑙嗛宸℃浠诲姟Service涓氬姟灞傚鐞�
@@ -22,9 +38,18 @@
  * @date 2023-05-30
  */
 @Service
+@Slf4j
 public class ArdVideoInspectTaskServiceImpl implements IArdVideoInspectTaskService {
-    @Autowired
+    @Resource
     private ArdVideoInspectTaskMapper ardVideoInspectTaskMapper;
+    @Resource
+    private ArdAlarmpointsWellMapper ardAlarmpointsWellMapper;
+    @Resource
+    private ArdVideoInspectRecordMapper ardVideoInspectRecordMapper;
+    @Resource
+    private ArdCamerasMapper ardCamerasMapper;
+    @Resource
+    private IHikClientService hikClientService;
 
     /**
      * 鏌ヨ瑙嗛宸℃浠诲姟
@@ -54,15 +79,15 @@
      * @param ardVideoInspectTask 瑙嗛宸℃浠诲姟
      * @return 缁撴灉
      */
-        @Transactional
+    @Transactional
     @Override
     public int insertArdVideoInspectTask(ArdVideoInspectTask ardVideoInspectTask) {
-                ardVideoInspectTask.setCreateBy(SecurityUtils.getUsername());
-                ardVideoInspectTask.setCreateTime(DateUtils.getNowDate());
-                ardVideoInspectTask.setUserId(SecurityUtils.getUserId());
-            int rows = ardVideoInspectTaskMapper.insertArdVideoInspectTask(ardVideoInspectTask);
-            insertArdVideoInspectTaskStep(ardVideoInspectTask);
-            return rows;
+        ardVideoInspectTask.setCreateBy(SecurityUtils.getUsername());
+        ardVideoInspectTask.setCreateTime(DateUtils.getNowDate());
+        ardVideoInspectTask.setUserId(SecurityUtils.getUserId());
+        int rows = ardVideoInspectTaskMapper.insertArdVideoInspectTask(ardVideoInspectTask);
+        insertArdVideoInspectTaskStep(ardVideoInspectTask);
+        return rows;
     }
 
     /**
@@ -71,30 +96,32 @@
      * @param ardVideoInspectTask 瑙嗛宸℃浠诲姟
      * @return 缁撴灉
      */
-        @Transactional
+    @Transactional
     @Override
     public int updateArdVideoInspectTask(ArdVideoInspectTask ardVideoInspectTask) {
-                ardVideoInspectTask.setUpdateBy(SecurityUtils.getUsername());
-                ardVideoInspectTask.setUpdateTime(DateUtils.getNowDate());
-                ardVideoInspectTaskMapper.deleteArdVideoInspectTaskStepByTaskId(ardVideoInspectTask.getId())
-            ;
-            insertArdVideoInspectTaskStep(ardVideoInspectTask);
+        ardVideoInspectTask.setUpdateBy(SecurityUtils.getUsername());
+        ardVideoInspectTask.setUpdateTime(DateUtils.getNowDate());
+        ardVideoInspectTaskMapper.deleteArdVideoInspectTaskStepByTaskId(ardVideoInspectTask.getId())
+        ;
+        insertArdVideoInspectTaskStep(ardVideoInspectTask);
         return ardVideoInspectTaskMapper.updateArdVideoInspectTask(ardVideoInspectTask);
     }
+
     @Override
     public int updateArdVideoInspectTaskNoUpdater(ArdVideoInspectTask ardVideoInspectTask) {
         return ardVideoInspectTaskMapper.updateArdVideoInspectTask(ardVideoInspectTask);
     }
+
     /**
      * 鎵归噺鍒犻櫎瑙嗛宸℃浠诲姟
      *
      * @param ids 闇�瑕佸垹闄ょ殑瑙嗛宸℃浠诲姟涓婚敭
      * @return 缁撴灉
      */
-        @Transactional
+    @Transactional
     @Override
     public int deleteArdVideoInspectTaskByIds(String[] ids) {
-                ardVideoInspectTaskMapper.deleteArdVideoInspectTaskStepByTaskIds(ids);
+        ardVideoInspectTaskMapper.deleteArdVideoInspectTaskStepByTaskIds(ids);
         return ardVideoInspectTaskMapper.deleteArdVideoInspectTaskByIds(ids);
     }
 
@@ -104,31 +131,342 @@
      * @param id 瑙嗛宸℃浠诲姟涓婚敭
      * @return 缁撴灉
      */
-        @Transactional
+    @Transactional
     @Override
     public int deleteArdVideoInspectTaskById(String id) {
-                ardVideoInspectTaskMapper.deleteArdVideoInspectTaskStepByTaskId(id);
+        ardVideoInspectTaskMapper.deleteArdVideoInspectTaskStepByTaskId(id);
         return ardVideoInspectTaskMapper.deleteArdVideoInspectTaskById(id);
     }
 
-        /**
-         * 鏂板瑙嗛宸℃姝ラ淇℃伅
-         *
-         * @param ardVideoInspectTask 瑙嗛宸℃浠诲姟瀵硅薄
-         */
-        public void insertArdVideoInspectTaskStep(ArdVideoInspectTask ardVideoInspectTask) {
-            List<ArdVideoInspectTaskStep> ardVideoInspectTaskStepList = ardVideoInspectTask.getArdVideoInspectTaskStepList();
-            String id = ardVideoInspectTask.getId();
-            if (StringUtils.isNotNull(ardVideoInspectTaskStepList)) {
-                List<ArdVideoInspectTaskStep> list = new ArrayList<ArdVideoInspectTaskStep>();
-                for (ArdVideoInspectTaskStep ardVideoInspectTaskStep :ardVideoInspectTaskStepList)
-                {
-                    ardVideoInspectTaskStep.setTaskId(id);
-                    list.add(ardVideoInspectTaskStep);
-                }
-                if (list.size() > 0) {
-                        ardVideoInspectTaskMapper.batchArdVideoInspectTaskStep(list);
+    /**
+     * 鏂板瑙嗛宸℃姝ラ淇℃伅
+     *
+     * @param ardVideoInspectTask 瑙嗛宸℃浠诲姟瀵硅薄
+     */
+    public void insertArdVideoInspectTaskStep(ArdVideoInspectTask ardVideoInspectTask) {
+        List<ArdVideoInspectTaskStep> ardVideoInspectTaskStepList = ardVideoInspectTask.getArdVideoInspectTaskStepList();
+        String id = ardVideoInspectTask.getId();
+        if (StringUtils.isNotNull(ardVideoInspectTaskStepList)) {
+            List<ArdVideoInspectTaskStep> list = new ArrayList<ArdVideoInspectTaskStep>();
+            for (ArdVideoInspectTaskStep ardVideoInspectTaskStep : ardVideoInspectTaskStepList) {
+                ardVideoInspectTaskStep.setTaskId(id);
+                list.add(ardVideoInspectTaskStep);
+            }
+            if (list.size() > 0) {
+                ardVideoInspectTaskMapper.batchArdVideoInspectTaskStep(list);
+            }
+        }
+    }
+
+
+    /**
+     * 鎵嬪姩宸℃浠诲姟
+     */
+    @Override
+    public void manualTaskRun() {
+        /*鎵弿鎵�鏈夊彲鎵ц浠诲姟1-鏃堕棿婊¤冻2-鑷姩*/
+        ArdVideoInspectTask ardVideoInspectTask = new ArdVideoInspectTask();
+        ardVideoInspectTask.setInspectMode("鎵嬪姩");
+        ardVideoInspectTask.setMenualSwitch("寮�");
+        List<ArdVideoInspectTask> ardVideoInspectTasks = ardVideoInspectTaskMapper.selectArdVideoInspectTaskList(ardVideoInspectTask);
+        for (ArdVideoInspectTask videoInspectTask : ardVideoInspectTasks) {
+            /*鑾峰彇褰撳墠浠诲姟鐨勬墍鏈夊贰妫�姝ラ*/
+            List<ArdVideoInspectTaskStep> ardVideoInspectTaskStepList = ardVideoInspectTaskMapper.selectArdVideoInspectTaskById(videoInspectTask.getId()).getArdVideoInspectTaskStepList();
+            if (ardVideoInspectTaskStepList.size() == 0) {
+                continue;
+            }
+            videoInspectTask.setArdVideoInspectTaskStepList(ardVideoInspectTaskStepList);
+            String currentStepId = videoInspectTask.getCurrentStepId();
+            if (StringUtils.isNull(currentStepId)) {
+                videoInspectTask.setCurrentStepId(ardVideoInspectTaskStepList.get(0).getId());
+                startRunStep(videoInspectTask);//寮�濮嬪綋鍓嶄换鍔$殑绗竴涓楠�
+            } else /*褰撳墠浠诲姟宸茬粡鎵ц锛屽垽鏂槸鍚﹀埌鏈�*/ {
+                if (StringUtils.isNull(videoInspectTask.getCurrentStepStartTime())) {
+                    //褰撳墠浠诲姟鍚姩鏃堕棿涓簄ull锛屽垯璇存槑褰撳墠姝ラ琚腑鏂紝鐩存帴鍚姩褰撳墠姝ラ
+                    startRunStep(videoInspectTask);
+                } else {
+                    boolean expird = isExpirdStep(videoInspectTask); /*鍒ゆ柇褰撳墠姝ラ鏃堕棿鏄惁杩囨湡*/
+                    if (expird) {
+                        //鍋滄褰曞儚
+                        stopRunStep(videoInspectTask);
+                        //鍒囨崲姝ラ
+                        String nextStepId = changeNextStep(videoInspectTask);
+                        //寮�濮嬩笅涓�姝ラ
+                        videoInspectTask.setCurrentStepId(nextStepId);
+                        startRunStep(videoInspectTask);
+                    }
                 }
             }
         }
+    }
+
+    /**
+     * 鑷姩宸℃浠诲姟
+     */
+    @Override
+    public void autoTaskRun() {
+        /*鎵弿鎵�鏈夊彲鎵ц浠诲姟1-鏃堕棿婊¤冻2-鑷姩*/
+        ArdVideoInspectTask ardVideoInspectTask = new ArdVideoInspectTask();
+        ardVideoInspectTask.setInspectMode("鑷姩");
+        List<ArdVideoInspectTask> ardVideoInspectTasks = ardVideoInspectTaskMapper.selectArdVideoInspectTaskList(ardVideoInspectTask);
+        for (ArdVideoInspectTask videoInspectTask : ardVideoInspectTasks) {
+            /*閬嶅巻鎵�鏈夋椂闂存弧瓒崇殑鑷姩浠诲姟*/
+            boolean timeCompare = DateUtils.TimeCompare(videoInspectTask.getStartTime(), videoInspectTask.getEndTime());
+            if (timeCompare) {
+                log.info("鑷姩浠诲姟鍚姩锛�" + videoInspectTask.getId());
+                /*鑾峰彇褰撳墠浠诲姟鐨勬墍鏈夊贰妫�姝ラ*/
+                List<ArdVideoInspectTaskStep> ardVideoInspectTaskStepList = ardVideoInspectTaskMapper.selectArdVideoInspectTaskById(videoInspectTask.getId()).getArdVideoInspectTaskStepList();
+                if (ardVideoInspectTaskStepList.size() == 0) {
+                    continue;
+                }
+                videoInspectTask.setArdVideoInspectTaskStepList(ardVideoInspectTaskStepList);
+                String currentStepId = videoInspectTask.getCurrentStepId();
+                if (StringUtils.isNull(currentStepId)) {
+                    videoInspectTask.setCurrentStepId(ardVideoInspectTaskStepList.get(0).getId());
+                    startRunStep(videoInspectTask);//寮�濮嬪綋鍓嶄换鍔$殑绗竴涓楠�
+                } else /*褰撳墠浠诲姟宸茬粡鎵ц锛屽垽鏂槸鍚﹀埌鏈�*/ {
+                    if (StringUtils.isNull(videoInspectTask.getCurrentStepStartTime())) {
+                        //褰撳墠浠诲姟鍚姩鏃堕棿涓簄ull锛屽垯璇存槑褰撳墠姝ラ琚腑鏂紝鐩存帴鍚姩褰撳墠姝ラ
+                        startRunStep(videoInspectTask);
+                    } else {
+                        boolean expird = isExpirdStep(videoInspectTask); /*鍒ゆ柇褰撳墠姝ラ鏃堕棿鏄惁杩囨湡*/
+                        if (expird) {
+                            //鍋滄褰曞儚
+                            stopRunStep(videoInspectTask);
+                            //鍒囨崲姝ラ
+                            String nextStepId = changeNextStep(videoInspectTask);
+                            //寮�濮嬩笅涓�姝ラ
+                            videoInspectTask.setCurrentStepId(nextStepId);
+                            startRunStep(videoInspectTask);
+                        }
+                    }
+                }
+            }
+        }
+    }
+    @Override
+    public void taskRun() {
+        /*鎵弿鎵�鏈夊彲鎵ц浠诲姟1-鏃堕棿婊¤冻2-鑷姩*/
+        ArdVideoInspectTask ardVideoInspectTask = new ArdVideoInspectTask();
+        List<ArdVideoInspectTask> ardVideoInspectTasks = ardVideoInspectTaskMapper.selectArdVideoInspectTaskList(ardVideoInspectTask);
+        for (ArdVideoInspectTask videoInspectTask : ardVideoInspectTasks) {
+            if (videoInspectTask.getInspectMode().equals("鑷姩")) {
+                boolean timeCompare = DateUtils.TimeCompare(videoInspectTask.getStartTime(), videoInspectTask.getEndTime());
+                if (!timeCompare) {
+                    continue;
+                }
+            } else {
+                if (videoInspectTask.getMenualSwitch().equals("鍏�")) {
+                    continue;
+                }
+            }
+            /*鑾峰彇褰撳墠浠诲姟鐨勬墍鏈夊贰妫�姝ラ*/
+            List<ArdVideoInspectTaskStep> ardVideoInspectTaskStepList = ardVideoInspectTaskMapper.selectArdVideoInspectTaskById(videoInspectTask.getId()).getArdVideoInspectTaskStepList();
+            if (ardVideoInspectTaskStepList.size() == 0) {
+                continue;
+            }
+            videoInspectTask.setArdVideoInspectTaskStepList(ardVideoInspectTaskStepList);
+            String currentStepId = videoInspectTask.getCurrentStepId();
+            if (StringUtils.isNull(currentStepId)) {
+                videoInspectTask.setCurrentStepId(ardVideoInspectTaskStepList.get(0).getId());
+                startRunStep(videoInspectTask);//寮�濮嬪綋鍓嶄换鍔$殑绗竴涓楠�
+            } else /*褰撳墠浠诲姟宸茬粡鎵ц锛屽垽鏂槸鍚﹀埌鏈�*/ {
+                if (StringUtils.isNull(videoInspectTask.getCurrentStepStartTime())) {
+                    //褰撳墠浠诲姟鍚姩鏃堕棿涓簄ull锛屽垯璇存槑褰撳墠姝ラ琚腑鏂紝鐩存帴鍚姩褰撳墠姝ラ
+                    startRunStep(videoInspectTask);
+                } else {
+                    boolean expird = isExpirdStep(videoInspectTask); /*鍒ゆ柇褰撳墠姝ラ鏃堕棿鏄惁杩囨湡*/
+                    if (expird) {
+                        //鍋滄褰曞儚
+                        stopRunStep(videoInspectTask);
+                        //鍒囨崲姝ラ
+                        String nextStepId = changeNextStep(videoInspectTask);
+                        //寮�濮嬩笅涓�姝ラ
+                        videoInspectTask.setCurrentStepId(nextStepId);
+                        startRunStep(videoInspectTask);
+                    }
+                }
+            }
+        }
+    }
+
+    //姝ラ寮�濮�
+    private void startRunStep(ArdVideoInspectTask ardVideoInspectTask) {
+        try {
+            String currentStepId = ardVideoInspectTask.getCurrentStepId();
+            if (StringUtils.isNull(currentStepId)) {
+                log.info("褰撳墠寮�濮嬪贰妫�姝ラid涓虹┖");
+                return;
+            }
+            log.info("姝ラ锛�" + currentStepId + "寮�濮�");
+            String cameraId = ardVideoInspectTask.getCameraId();
+            Integer channel = ardVideoInspectTask.getChannel();
+            Optional<ArdVideoInspectTaskStep> objectOptional = ardVideoInspectTask.getArdVideoInspectTaskStepList().stream()
+                    .filter(obj -> obj.getId().equals(currentStepId))
+                    .findFirst();
+            if (objectOptional.isPresent()) {
+                ArdVideoInspectTaskStep step = objectOptional.get();
+                String wellId = step.getWellId();
+                if (!StringUtils.isNull(wellId)) {
+                    /*鑾峰彇浜曞潗鏍�*/
+                    ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellMapper.selectArdAlarmpointsWellById(wellId);
+                    double[] targetPositon = new double[3];
+                    targetPositon[0] = ardAlarmpointsWell.getLongitude();
+                    targetPositon[1] = ardAlarmpointsWell.getLatitude();
+                    targetPositon[2] = ardAlarmpointsWell.getAltitude();
+                    /*鑾峰彇鐩告満鍧愭爣*/
+                    ArdCameras cameras = ardCamerasMapper.selectArdCamerasById(cameraId);
+                    double[] cameraPositon = new double[3];
+                    cameraPositon[0] = cameras.getLongitude();
+                    cameraPositon[1] = cameras.getLatitude();
+                    cameraPositon[2] = cameras.getAltitude();
+                    /*鎺у埗鐩告満宸℃*/
+                    CameraCmd cmd = new CameraCmd();
+                    cmd.setCameraId(cameraId);
+                    cmd.setChannelNum(channel);
+                    cmd.setCamPosition(cameraPositon);
+                    cmd.setTargetPosition(targetPositon);
+                    cmd.setOperator("sys_patrol_inspect");
+                    cmd.setExpired(step.getRecordingTime());
+                    boolean setTargetPosition = hikClientService.setTargetPosition(cmd);
+                    if (setTargetPosition) {
+                        /*鎺у埗鐩告満宸℃鎴愬姛锛屽紑濮嬪綍鍍�*/
+                        cmd.setEnable(true);//鍚姩褰曞儚
+                        hikClientService.recordToMinio(cmd);
+                        /*鏇存柊浠诲姟褰撳墠姝ラid鍜屾楠ゅ惎鍔ㄦ椂闂�*/
+                        ArdVideoInspectTask avit = new ArdVideoInspectTask();
+                        avit.setId(ardVideoInspectTask.getId());
+                        avit.setCurrentStepId(step.getId());
+                        avit.setCurrentStepStartTime(DateUtils.getTime());
+                        ardVideoInspectTaskMapper.updateArdVideoInspectTask(avit);
+                    } else {
+                        cmd.setEnable(false);//鍋滄褰曞儚
+                        hikClientService.recordToMinio(cmd);
+                        /*鎺у埗澶辫触,褰撳墠姝ラ鍚姩鏃堕棿缃畁ull*/
+                        ArdVideoInspectTask avit = new ArdVideoInspectTask();
+                        avit.setId(ardVideoInspectTask.getId());
+                        avit.setCurrentStepId(step.getId());
+                        avit.setCurrentStepStartTime(null);
+                        ardVideoInspectTaskMapper.updateArdVideoInspectTask(avit);
+                    }
+                }
+            }
+        } catch (Exception ex) {
+            log.error("宸℃寮�濮嬪紓甯革細" + ex.getMessage());
+        }
+    }
+
+    //姝ラ鍋滄
+    private void stopRunStep(ArdVideoInspectTask ardVideoInspectTask) {
+        try {
+            String currentStepId = ardVideoInspectTask.getCurrentStepId();
+            log.info("姝ラ锛�" + currentStepId + "鍋滄");
+            if (StringUtils.isNull(currentStepId)) {
+                log.info("褰撳墠鍋滄宸℃姝ラid涓虹┖");
+                return;
+            }
+            String currentStepStartTime = ardVideoInspectTask.getCurrentStepStartTime();
+            String cameraId = ardVideoInspectTask.getCameraId();
+            Integer channel = ardVideoInspectTask.getChannel();
+            Optional<ArdVideoInspectTaskStep> objectOptional = ardVideoInspectTask.getArdVideoInspectTaskStepList().stream()
+                    .filter(obj -> obj.getId().equals(currentStepId))
+                    .findFirst();
+            if (objectOptional.isPresent()) {
+                ArdVideoInspectTaskStep step = objectOptional.get();
+                /*鍋滄褰曞儚*/
+                CameraCmd cmd = new CameraCmd();
+                cmd.setCameraId(cameraId);
+                cmd.setChannelNum(channel);
+                cmd.setOperator("sys_patrol_inspect");
+                cmd.setEnable(false);//鍋滄褰曞儚
+                String uuid = UUID.randomUUID().toString().replace("-", "");
+                String time = new SimpleDateFormat("yyyyMMdd").format(new Date());
+                String recordName = cameraId + "/" + time + "/" + uuid + ".mp4";
+                cmd.setRecordBucketName("record");
+                cmd.setRecordObjectName(recordName);
+                hikClientService.recordToMinio(cmd);
+                /*鎻掑叆宸℃璁板綍*/
+                ArdVideoInspectRecord ardVideoInspectRecord = new ArdVideoInspectRecord();
+                ardVideoInspectRecord.setStepId(step.getId());
+                Date currentStepStartDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, currentStepStartTime);
+                Date currentStepStopDate = DateUtils.addMinutes(currentStepStartDate, step.getRecordingTime());
+                ardVideoInspectRecord.setStartTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, currentStepStartDate));
+                ardVideoInspectRecord.setEndTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, currentStepStopDate));
+                String url = MinioClientSingleton.domainUrl + "/" + cmd.getRecordBucketName() + "/" + recordName;
+                ardVideoInspectRecord.setRecordFilePath(url);
+                ardVideoInspectRecordMapper.insertArdVideoInspectRecord(ardVideoInspectRecord);
+            }
+        } catch (Exception ex) {
+            log.error("宸℃鍋滄寮傚父:" + ex.getMessage());
+        }
+    }
+
+    //姝ラ鍒ゆ柇鏄惁杩囨湡
+    private boolean isExpirdStep(ArdVideoInspectTask ardVideoInspectTask) {
+        try {
+            List<ArdVideoInspectTaskStep> ardVideoInspectTaskStepList = ardVideoInspectTask.getArdVideoInspectTaskStepList();
+            /*鑾峰彇褰撳墠浠诲姟姝e湪鎵ц鐨勬楠ゅ拰褰撳墠姝ラ寮�濮嬬殑鏃堕棿*/
+            String currentStepId = ardVideoInspectTask.getCurrentStepId();
+            String currentStepStartTime = ardVideoInspectTask.getCurrentStepStartTime();
+            Optional<ArdVideoInspectTaskStep> objectOptional = ardVideoInspectTaskStepList.stream()
+                    .filter(ardVideoInspectTaskStep -> ardVideoInspectTaskStep.getId().equals(currentStepId))
+                    .findFirst();
+            if (objectOptional.isPresent()) {
+                /*鑾峰彇褰撳墠姝ラ淇℃伅*/
+                ArdVideoInspectTaskStep currentStep = objectOptional.get();
+                /*鑾峰彇鍒板綋鍓嶆楠ょ殑寮�濮嬪拰缁撴潫鏃堕棿*/
+                Date currentStepStartDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, currentStepStartTime);
+                Date currentStepStopDate = DateUtils.addMinutes(currentStepStartDate, currentStep.getRecordingTime());
+                /*鍒ゆ柇褰撳墠姝ラ鏃堕棿鏄惁杩囨湡*/
+                if (!DateUtils.TimeCompare(currentStepStartDate, currentStepStopDate)) {
+                    return true;
+                } else {
+                    return false;
+                }
+            } else {
+                return false;
+            }
+        } catch (Exception ex) {
+            log.error("鍒ゆ柇宸℃姝ラ杩囨湡寮傚父锛�" + ex.getMessage());
+            return false;
+        }
+    }
+
+    //姝ラ鍒囨崲
+    private String changeNextStep(ArdVideoInspectTask ardVideoInspectTask) {
+        try {
+            String currentStepId = ardVideoInspectTask.getCurrentStepId();
+            Optional<ArdVideoInspectTaskStep> objectOptional = ardVideoInspectTask.getArdVideoInspectTaskStepList().stream()
+                    .filter(obj -> obj.getId().equals(currentStepId))
+                    .findFirst();
+            if (objectOptional.isPresent()) {
+                ArdVideoInspectTaskStep step = objectOptional.get();
+                Integer currentStepOrderNumber = step.getOrderNumber();
+                /*鍒ゆ柇褰撳墠姝ラ搴忓彿鏄惁灏忎簬姝ラ鎬绘暟*/
+                if (currentStepOrderNumber < ardVideoInspectTask.getArdVideoInspectTaskStepList().size()) {
+                    /*灏忎簬鍒欐墽琛屼笅涓�姝ラ*/
+                    currentStepOrderNumber++;
+                } else {
+                    /*鍚﹀垯浠�1寮�濮嬫墽琛�*/
+                    currentStepOrderNumber = 1;
+                }
+                Integer nextStepOrderNumber = currentStepOrderNumber;
+                /*鏇存柊褰撳墠浠诲姟鍒囨崲鏂版楠�*/
+                ArdVideoInspectTask avit = new ArdVideoInspectTask();
+                avit.setId(ardVideoInspectTask.getId());
+                String nextStepId = ardVideoInspectTask.getArdVideoInspectTaskStepList().stream()
+                        .filter(obj -> obj.getOrderNumber() == nextStepOrderNumber)
+                        .map(ArdVideoInspectTaskStep::getId)
+                        .findFirst()
+                        .orElse(null);
+                avit.setCurrentStepId(nextStepId);
+                ardVideoInspectTaskMapper.updateArdVideoInspectTask(avit);
+                log.info("姝ラ锛�" + currentStepId + "鍒囨崲涓�" + nextStepId);
+                return nextStepId;
+            }
+        } catch (Exception ex) {
+            log.error("宸℃姝ラ鍒囨崲寮傚父锛�" + ex.getMessage());
+        }
+        return "";
+    }
 }
diff --git a/ruoyi-admin/src/main/resources/application-ard.yml b/ruoyi-admin/src/main/resources/application-ard.yml
index 3c47288..d1f8fbe 100644
--- a/ruoyi-admin/src/main/resources/application-ard.yml
+++ b/ruoyi-admin/src/main/resources/application-ard.yml
@@ -1,6 +1,6 @@
 # minio閰嶇疆
 minio:
-  endpoint: http://192.168.1.15:9001
+  endpoint: http://192.168.1.55:9001
   accessKey: admin
   secretKey: xzx12345
 # forest閰嶇疆
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index 7150798..fa2b341 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -70,13 +70,13 @@
   # redis 閰嶇疆
   redis:
     # 鍦板潃
-    host: 192.168.1.15
+    host: 192.168.1.55
     # 绔彛锛岄粯璁や负6379
     port: 6379
     # 鏁版嵁搴撶储寮�
     database: 0
     # 瀵嗙爜
-    password: 5959932
+    password:
     # 杩炴帴瓒呮椂鏃堕棿
     timeout: 10s
     lettuce:
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PatrolInspectionTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PatrolInspectionTask.java
index e51cd61..291f326 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PatrolInspectionTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PatrolInspectionTask.java
@@ -35,205 +35,273 @@
 
     @Resource
     IArdVideoInspectTaskService ardVideoInspectTaskService;
-    @Resource
-    IArdAlarmpointsWellService ardAlarmpointsWellService;
-    @Resource
-    IArdVideoInspectRecordService ardVideoInspectRecordService;
-    @Resource
-    IArdCamerasService ardCamerasService;
-    @Resource
-    IHikClientService hikClientService;
 
+    //宸℃浠诲姟
     public void scanRun() {
-        /*鎵弿鎵�鏈夊彲鎵ц浠诲姟1-鏃堕棿婊¤冻2-鑷姩*/
-        ArdVideoInspectTask ardVideoInspectTask = new ArdVideoInspectTask();
-        ardVideoInspectTask.setInspectMode("鑷姩");
-        List<ArdVideoInspectTask> ardVideoInspectTasks = ardVideoInspectTaskService.selectArdVideoInspectTaskList(ardVideoInspectTask);
-        for (ArdVideoInspectTask videoInspectTask : ardVideoInspectTasks) {
-            /*閬嶅巻鎵�鏈夋椂闂存弧瓒崇殑鑷姩浠诲姟*/
-            boolean timeCompare = DateUtils.TimeCompare(videoInspectTask.getStartTime(), videoInspectTask.getEndTime());
-            if (timeCompare) {
-                /*鑾峰彇褰撳墠浠诲姟鐨勬墍鏈夊贰妫�姝ラ*/
-                List<ArdVideoInspectTaskStep> ardVideoInspectTaskStepList = ardVideoInspectTaskService.selectArdVideoInspectTaskById(videoInspectTask.getId()).getArdVideoInspectTaskStepList();
-                if (ardVideoInspectTaskStepList.size() == 0) {
-                    continue;
-                }
-                videoInspectTask.setArdVideoInspectTaskStepList(ardVideoInspectTaskStepList);
-                String currentStepId = videoInspectTask.getCurrentStepId();
-                if (StringUtils.isNull(currentStepId)) {
-                    videoInspectTask.setCurrentStepId(ardVideoInspectTaskStepList.get(0).getId());
-                    startRunStep(videoInspectTask);//寮�濮嬪綋鍓嶄换鍔$殑绗竴涓楠�
-                } else /*褰撳墠浠诲姟宸茬粡鎵ц锛屽垽鏂槸鍚﹀埌鏈�*/ {
-                    boolean expird = isExpirdStep(videoInspectTask); /*鍒ゆ柇褰撳墠姝ラ鏃堕棿鏄惁杩囨湡*/
-                    if (expird) {
-                        /*宸茶繃鏈�,鍋滄褰曞儚*/
-
-                        stopRunStep(videoInspectTask);
-                        /*鍒囨崲涓嬩竴姝�*/
-                        String nextStepId = changeNextStep(videoInspectTask);
-                        /*寮�濮�*/
-                        videoInspectTask.setCurrentStepId(nextStepId);
-                        startRunStep(videoInspectTask);
-                    }
-                }
-            }
-        }
+        ardVideoInspectTaskService.taskRun();
     }
 
-    //姝ラ寮�濮�
-    private void startRunStep(ArdVideoInspectTask ardVideoInspectTask) {
-        String currentStepId = ardVideoInspectTask.getCurrentStepId();
-        if(StringUtils.isNull(currentStepId))
-        {
-            log.info("褰撳墠寮�濮嬪贰妫�姝ラid涓虹┖");
-            return;
-        }
-        log.info("姝ラ锛�" + currentStepId + "寮�濮�");
-        String cameraId = ardVideoInspectTask.getCameraId();
-        Integer channel = ardVideoInspectTask.getChannel();
-        Optional<ArdVideoInspectTaskStep> objectOptional = ardVideoInspectTask.getArdVideoInspectTaskStepList().stream()
-                .filter(obj -> obj.getId().equals(currentStepId))
-                .findFirst();
-        if (objectOptional.isPresent()) {
-            ArdVideoInspectTaskStep step = objectOptional.get();
-            String wellId = step.getWellId();
-            if (!StringUtils.isNull(wellId)) {
-                /*鑾峰彇浜曞潗鏍�*/
-                ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellService.selectArdAlarmpointsWellById(wellId);
-                double[] targetPositon = new double[3];
-                targetPositon[0] = ardAlarmpointsWell.getLongitude();
-                targetPositon[1] = ardAlarmpointsWell.getLatitude();
-                targetPositon[2] = ardAlarmpointsWell.getAltitude();
-                /*鑾峰彇鐩告満鍧愭爣*/
-                ArdCameras cameras = ardCamerasService.selectArdCamerasById(cameraId);
-                double[] cameraPositon = new double[3];
-                cameraPositon[0] = cameras.getLongitude();
-                cameraPositon[1] = cameras.getLatitude();
-                cameraPositon[2] = cameras.getAltitude();
-                /*鎺у埗鐩告満宸℃*/
-                CameraCmd cmd = new CameraCmd();
-                cmd.setCameraId(cameraId);
-                cmd.setChannelNum(channel);
-                cmd.setCamPosition(cameraPositon);
-                cmd.setTargetPosition(targetPositon);
-                cmd.setOperator("sys_patrol_inspect");
-                cmd.setExpired(step.getRecordingTime());
-                boolean setTargetPosition = hikClientService.setTargetPosition(cmd);
-                if (setTargetPosition) {
-                    /*鎺у埗鐩告満宸℃鎴愬姛锛屽紑濮嬪綍鍍�*/
-                    cmd.setEnable(true);//鍚姩褰曞儚
-                    hikClientService.recordToMinio(cmd);
-                    /*鏇存柊浠诲姟褰撳墠姝ラid鍜屾楠ゅ惎鍔ㄦ椂闂�*/
-                    ArdVideoInspectTask avit = new ArdVideoInspectTask();
-                    avit.setId(ardVideoInspectTask.getId());
-                    avit.setCurrentStepId(step.getId());
-                    avit.setCurrentStepStartTime(DateUtils.getTime());
-                    ardVideoInspectTaskService.updateArdVideoInspectTaskNoUpdater(avit);
-                }
-            }
-        }
-    }
+    //鑷姩宸℃浠诲姟
+//    public void scanRun() {
+//        /*鎵弿鎵�鏈夊彲鎵ц浠诲姟1-鏃堕棿婊¤冻2-鑷姩*/
+//        ArdVideoInspectTask ardVideoInspectTask = new ArdVideoInspectTask();
+//        ardVideoInspectTask.setInspectMode("鑷姩");
+//        List<ArdVideoInspectTask> ardVideoInspectTasks = ardVideoInspectTaskService.selectArdVideoInspectTaskList(ardVideoInspectTask);
+//        for (ArdVideoInspectTask videoInspectTask : ardVideoInspectTasks) {
+//            /*閬嶅巻鎵�鏈夋椂闂存弧瓒崇殑鑷姩浠诲姟*/
+//            boolean timeCompare = DateUtils.TimeCompare(videoInspectTask.getStartTime(), videoInspectTask.getEndTime());
+//            if (timeCompare) {
+//                /*鑾峰彇褰撳墠浠诲姟鐨勬墍鏈夊贰妫�姝ラ*/
+//                List<ArdVideoInspectTaskStep> ardVideoInspectTaskStepList = ardVideoInspectTaskService.selectArdVideoInspectTaskById(videoInspectTask.getId()).getArdVideoInspectTaskStepList();
+//                if (ardVideoInspectTaskStepList.size() == 0) {
+//                    continue;
+//                }
+//                videoInspectTask.setArdVideoInspectTaskStepList(ardVideoInspectTaskStepList);
+//                String currentStepId = videoInspectTask.getCurrentStepId();
+//                if (StringUtils.isNull(currentStepId)) {
+//                    videoInspectTask.setCurrentStepId(ardVideoInspectTaskStepList.get(0).getId());
+//                    startRunStep(videoInspectTask);//寮�濮嬪綋鍓嶄换鍔$殑绗竴涓楠�
+//                } else /*褰撳墠浠诲姟宸茬粡鎵ц锛屽垽鏂槸鍚﹀埌鏈�*/ {
+//                    if (StringUtils.isNull(videoInspectTask.getCurrentStepStartTime())) {
+//                        //褰撳墠浠诲姟鍚姩鏃堕棿涓簄ull锛屽垯璇存槑褰撳墠姝ラ琚腑鏂紝鐩存帴鍚姩褰撳墠姝ラ
+//                        startRunStep(videoInspectTask);
+//                    } else {
+//                        boolean expird = isExpirdStep(videoInspectTask); /*鍒ゆ柇褰撳墠姝ラ鏃堕棿鏄惁杩囨湡*/
+//                        if (expird) {
+//                            //鍋滄褰曞儚
+//                            stopRunStep(videoInspectTask);
+//                            //鍒囨崲姝ラ
+//                            String nextStepId = changeNextStep(videoInspectTask);
+//                            //寮�濮嬩笅涓�姝ラ
+//                            videoInspectTask.setCurrentStepId(nextStepId);
+//                            startRunStep(videoInspectTask);
+//                        }
+//                    }
+//                }
+//            }
+//        }
+//    }
 
-    //姝ラ鍋滄
-    private void stopRunStep(ArdVideoInspectTask ardVideoInspectTask) {
-        String currentStepId = ardVideoInspectTask.getCurrentStepId();
-        log.info("姝ラ锛�" + currentStepId + "鍋滄");
-        if(StringUtils.isNull(currentStepId))
-        {
-            log.info("褰撳墠鍋滄宸℃姝ラid涓虹┖");
-            return;
-        }
-        String currentStepStartTime = ardVideoInspectTask.getCurrentStepStartTime();
-        String cameraId = ardVideoInspectTask.getCameraId();
-        Integer channel = ardVideoInspectTask.getChannel();
-        Optional<ArdVideoInspectTaskStep> objectOptional = ardVideoInspectTask.getArdVideoInspectTaskStepList().stream()
-                .filter(obj -> obj.getId().equals(currentStepId))
-                .findFirst();
-        if (objectOptional.isPresent()) {
-            ArdVideoInspectTaskStep step = objectOptional.get();
-            /*鍋滄褰曞儚*/
-            CameraCmd cmd = new CameraCmd();
-            cmd.setCameraId(cameraId);
-            cmd.setChannelNum(channel);
-            cmd.setOperator("sys_patrol_inspect");
-            cmd.setEnable(false);//鍋滄褰曞儚
-            String uuid = UUID.randomUUID().toString().replace("-", "");
-            String time = new SimpleDateFormat("yyyyMMdd").format(new Date());
-            String recordName = cameraId + "/" + time + "/" + uuid + ".mp4";
-            cmd.setRecordBucketName("record");
-            cmd.setRecordObjectName(recordName);
-            hikClientService.recordToMinio(cmd);
-            /*鎻掑叆宸℃璁板綍*/
-            ArdVideoInspectRecord ardVideoInspectRecord = new ArdVideoInspectRecord();
-            ardVideoInspectRecord.setStepId(step.getId());
-            Date currentStepStartDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, currentStepStartTime);
-            Date currentStepStopDate = DateUtils.addMinutes(currentStepStartDate, step.getRecordingTime());
-            ardVideoInspectRecord.setStartTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, currentStepStartDate));
-            ardVideoInspectRecord.setEndTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, currentStepStopDate));
-            String url = MinioClientSingleton.domainUrl + "/" + cmd.getRecordBucketName() + "/" + recordName;
-            ardVideoInspectRecord.setRecordFilePath(url);
-            ardVideoInspectRecordService.insertArdVideoInspectRecord(ardVideoInspectRecord);
-        }
-    }
-
-    //姝ラ鍒ゆ柇鏄惁杩囨湡
-    private boolean isExpirdStep(ArdVideoInspectTask ardVideoInspectTask) {
-        List<ArdVideoInspectTaskStep> ardVideoInspectTaskStepList = ardVideoInspectTask.getArdVideoInspectTaskStepList();
-        /*鑾峰彇褰撳墠浠诲姟姝e湪鎵ц鐨勬楠ゅ拰褰撳墠姝ラ寮�濮嬬殑鏃堕棿*/
-        String currentStepId = ardVideoInspectTask.getCurrentStepId();
-        String currentStepStartTime = ardVideoInspectTask.getCurrentStepStartTime();
-        Optional<ArdVideoInspectTaskStep> objectOptional = ardVideoInspectTaskStepList.stream()
-                .filter(ardVideoInspectTaskStep -> ardVideoInspectTaskStep.getId().equals(currentStepId))
-                .findFirst();
-        if (objectOptional.isPresent()) {
-            /*鑾峰彇褰撳墠姝ラ淇℃伅*/
-            ArdVideoInspectTaskStep currentStep = objectOptional.get();
-            /*鑾峰彇鍒板綋鍓嶆楠ょ殑寮�濮嬪拰缁撴潫鏃堕棿*/
-            Date currentStepStartDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, currentStepStartTime);
-            Date currentStepStopDate = DateUtils.addMinutes(currentStepStartDate, currentStep.getRecordingTime());
-            /*鍒ゆ柇褰撳墠姝ラ鏃堕棿鏄惁杩囨湡*/
-            if (!DateUtils.TimeCompare(currentStepStartDate, currentStepStopDate)) {
-                return true;
-            } else {
-                return false;
-            }
-        } else {
-            return false;
-        }
-
-    }
-
-    //姝ラ鍒囨崲
-    private String changeNextStep(ArdVideoInspectTask ardVideoInspectTask) {
-        String currentStepId = ardVideoInspectTask.getCurrentStepId();
-        Optional<ArdVideoInspectTaskStep> objectOptional = ardVideoInspectTask.getArdVideoInspectTaskStepList().stream()
-                .filter(obj -> obj.getId().equals(currentStepId))
-                .findFirst();
-        if (objectOptional.isPresent()) {
-            ArdVideoInspectTaskStep step = objectOptional.get();
-            Integer currentStepOrderNumber = step.getOrderNumber();
-            /*鍒ゆ柇褰撳墠姝ラ搴忓彿鏄惁灏忎簬姝ラ鎬绘暟*/
-            if (currentStepOrderNumber < ardVideoInspectTask.getArdVideoInspectTaskStepList().size()) {
-                /*灏忎簬鍒欐墽琛屼笅涓�姝ラ*/
-                currentStepOrderNumber++;
-            } else {
-                /*鍚﹀垯浠�1寮�濮嬫墽琛�*/
-                currentStepOrderNumber = 1;
-            }
-            Integer nextStepOrderNumber = currentStepOrderNumber;
-            /*鏇存柊褰撳墠浠诲姟鍒囨崲鏂版楠�*/
-            ArdVideoInspectTask avit = new ArdVideoInspectTask();
-            avit.setId(ardVideoInspectTask.getId());
-            String nextStepId = ardVideoInspectTask.getArdVideoInspectTaskStepList().stream()
-                    .filter(obj -> obj.getOrderNumber() == nextStepOrderNumber)
-                    .map(ArdVideoInspectTaskStep::getId)
-                    .findFirst()
-                    .orElse(null);
-            avit.setCurrentStepId(nextStepId);
-            ardVideoInspectTaskService.updateArdVideoInspectTaskNoUpdater(avit);
-            log.info("姝ラ锛�" + currentStepId + "鍒囨崲涓�"+nextStepId);
-            return nextStepId;
-        }
-        return "";
-    }
+//    //鎵嬪姩宸℃浠诲姟
+//    public void ManualTaskRun(String taskId) {
+//        Timer timer = new Timer();
+//        // 5s鍚庢墽琛�
+//        // timer.schedule(new MyTask(), 5000);
+//        // 椹笂鎵ц浠诲姟,姣忛殧2000鎵ц涓�娆�
+//        timerTask = new TimerTask() {
+//            @Override
+//            public void run() {
+//                ArdVideoInspectTask videoInspectTask = ardVideoInspectTaskService.selectArdVideoInspectTaskById(taskId);
+//                /*鑾峰彇褰撳墠浠诲姟鐨勬墍鏈夊贰妫�姝ラ*/
+//                List<ArdVideoInspectTaskStep> ardVideoInspectTaskStepList = ardVideoInspectTaskService.selectArdVideoInspectTaskById(videoInspectTask.getId()).getArdVideoInspectTaskStepList();
+//                if (ardVideoInspectTaskStepList.size() == 0) {
+//                    log.error("褰撳墠浠诲姟娌℃湁鍙戠幇鎵ц姝ラ");
+//                    return;
+//                }
+//                videoInspectTask.setArdVideoInspectTaskStepList(ardVideoInspectTaskStepList);
+//                String currentStepId = videoInspectTask.getCurrentStepId();
+//                if (StringUtils.isNull(currentStepId)) {
+//                    videoInspectTask.setCurrentStepId(ardVideoInspectTaskStepList.get(0).getId());
+//                    startRunStep(videoInspectTask);//寮�濮嬪綋鍓嶄换鍔$殑绗竴涓楠�
+//                } else /*褰撳墠浠诲姟宸茬粡鎵ц锛屽垽鏂槸鍚﹀埌鏈�*/ {
+//                    if (StringUtils.isNull(videoInspectTask.getCurrentStepStartTime())) {
+//                        //褰撳墠浠诲姟鍚姩鏃堕棿涓簄ull锛屽垯璇存槑褰撳墠姝ラ琚腑鏂紝鐩存帴鍚姩褰撳墠姝ラ
+//                        startRunStep(videoInspectTask);
+//                    } else {
+//                        boolean expird = isExpirdStep(videoInspectTask); /*鍒ゆ柇褰撳墠姝ラ鏃堕棿鏄惁杩囨湡*/
+//                        if (expird) {
+//                            //鍋滄褰曞儚
+//                            stopRunStep(videoInspectTask);
+//                            //鍒囨崲姝ラ
+//                            String nextStepId = changeNextStep(videoInspectTask);
+//                            //寮�濮嬩笅涓�姝ラ
+//                            videoInspectTask.setCurrentStepId(nextStepId);
+//                            startRunStep(videoInspectTask);
+//                        }
+//                    }
+//                }
+//            }
+//        };
+//        timer.scheduleAtFixedRate(timerTask, new Date(), 2000);
+//    }
+//
+//    //姝ラ寮�濮�
+//    private void startRunStep(ArdVideoInspectTask ardVideoInspectTask) {
+//        try {
+//            String currentStepId = ardVideoInspectTask.getCurrentStepId();
+//            if (StringUtils.isNull(currentStepId)) {
+//                log.info("褰撳墠寮�濮嬪贰妫�姝ラid涓虹┖");
+//                return;
+//            }
+//            log.info("姝ラ锛�" + currentStepId + "寮�濮�");
+//            String cameraId = ardVideoInspectTask.getCameraId();
+//            Integer channel = ardVideoInspectTask.getChannel();
+//            Optional<ArdVideoInspectTaskStep> objectOptional = ardVideoInspectTask.getArdVideoInspectTaskStepList().stream()
+//                    .filter(obj -> obj.getId().equals(currentStepId))
+//                    .findFirst();
+//            if (objectOptional.isPresent()) {
+//                ArdVideoInspectTaskStep step = objectOptional.get();
+//                String wellId = step.getWellId();
+//                if (!StringUtils.isNull(wellId)) {
+//                    /*鑾峰彇浜曞潗鏍�*/
+//                    ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellService.selectArdAlarmpointsWellById(wellId);
+//                    double[] targetPositon = new double[3];
+//                    targetPositon[0] = ardAlarmpointsWell.getLongitude();
+//                    targetPositon[1] = ardAlarmpointsWell.getLatitude();
+//                    targetPositon[2] = ardAlarmpointsWell.getAltitude();
+//                    /*鑾峰彇鐩告満鍧愭爣*/
+//                    ArdCameras cameras = ardCamerasService.selectArdCamerasById(cameraId);
+//                    double[] cameraPositon = new double[3];
+//                    cameraPositon[0] = cameras.getLongitude();
+//                    cameraPositon[1] = cameras.getLatitude();
+//                    cameraPositon[2] = cameras.getAltitude();
+//                    /*鎺у埗鐩告満宸℃*/
+//                    CameraCmd cmd = new CameraCmd();
+//                    cmd.setCameraId(cameraId);
+//                    cmd.setChannelNum(channel);
+//                    cmd.setCamPosition(cameraPositon);
+//                    cmd.setTargetPosition(targetPositon);
+//                    cmd.setOperator("sys_patrol_inspect");
+//                    cmd.setExpired(step.getRecordingTime());
+//                    boolean setTargetPosition = hikClientService.setTargetPosition(cmd);
+//                    if (setTargetPosition) {
+//                        /*鎺у埗鐩告満宸℃鎴愬姛锛屽紑濮嬪綍鍍�*/
+//                        cmd.setEnable(true);//鍚姩褰曞儚
+//                        hikClientService.recordToMinio(cmd);
+//                        /*鏇存柊浠诲姟褰撳墠姝ラid鍜屾楠ゅ惎鍔ㄦ椂闂�*/
+//                        ArdVideoInspectTask avit = new ArdVideoInspectTask();
+//                        avit.setId(ardVideoInspectTask.getId());
+//                        avit.setCurrentStepId(step.getId());
+//                        avit.setCurrentStepStartTime(DateUtils.getTime());
+//                        ardVideoInspectTaskService.updateArdVideoInspectTaskNoUpdater(avit);
+//                    } else {
+//                        cmd.setEnable(false);//鍋滄褰曞儚
+//                        hikClientService.recordToMinio(cmd);
+//                        /*鎺у埗澶辫触,褰撳墠姝ラ鍚姩鏃堕棿缃畁ull*/
+//                        ArdVideoInspectTask avit = new ArdVideoInspectTask();
+//                        avit.setId(ardVideoInspectTask.getId());
+//                        avit.setCurrentStepId(step.getId());
+//                        avit.setCurrentStepStartTime(null);
+//                        ardVideoInspectTaskService.updateArdVideoInspectTaskNoUpdater(avit);
+//                    }
+//                }
+//            }
+//        } catch (Exception ex) {
+//            log.error("宸℃寮�濮嬪紓甯革細" + ex.getMessage());
+//        }
+//    }
+//
+//    //姝ラ鍋滄
+//    private void stopRunStep(ArdVideoInspectTask ardVideoInspectTask) {
+//        try {
+//            String currentStepId = ardVideoInspectTask.getCurrentStepId();
+//            log.info("姝ラ锛�" + currentStepId + "鍋滄");
+//            if (StringUtils.isNull(currentStepId)) {
+//                log.info("褰撳墠鍋滄宸℃姝ラid涓虹┖");
+//                return;
+//            }
+//            String currentStepStartTime = ardVideoInspectTask.getCurrentStepStartTime();
+//            String cameraId = ardVideoInspectTask.getCameraId();
+//            Integer channel = ardVideoInspectTask.getChannel();
+//            Optional<ArdVideoInspectTaskStep> objectOptional = ardVideoInspectTask.getArdVideoInspectTaskStepList().stream()
+//                    .filter(obj -> obj.getId().equals(currentStepId))
+//                    .findFirst();
+//            if (objectOptional.isPresent()) {
+//                ArdVideoInspectTaskStep step = objectOptional.get();
+//                /*鍋滄褰曞儚*/
+//                CameraCmd cmd = new CameraCmd();
+//                cmd.setCameraId(cameraId);
+//                cmd.setChannelNum(channel);
+//                cmd.setOperator("sys_patrol_inspect");
+//                cmd.setEnable(false);//鍋滄褰曞儚
+//                String uuid = UUID.randomUUID().toString().replace("-", "");
+//                String time = new SimpleDateFormat("yyyyMMdd").format(new Date());
+//                String recordName = cameraId + "/" + time + "/" + uuid + ".mp4";
+//                cmd.setRecordBucketName("record");
+//                cmd.setRecordObjectName(recordName);
+//                hikClientService.recordToMinio(cmd);
+//                /*鎻掑叆宸℃璁板綍*/
+//                ArdVideoInspectRecord ardVideoInspectRecord = new ArdVideoInspectRecord();
+//                ardVideoInspectRecord.setStepId(step.getId());
+//                Date currentStepStartDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, currentStepStartTime);
+//                Date currentStepStopDate = DateUtils.addMinutes(currentStepStartDate, step.getRecordingTime());
+//                ardVideoInspectRecord.setStartTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, currentStepStartDate));
+//                ardVideoInspectRecord.setEndTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, currentStepStopDate));
+//                String url = MinioClientSingleton.domainUrl + "/" + cmd.getRecordBucketName() + "/" + recordName;
+//                ardVideoInspectRecord.setRecordFilePath(url);
+//                ardVideoInspectRecordService.insertArdVideoInspectRecord(ardVideoInspectRecord);
+//            }
+//        } catch (Exception ex) {
+//            log.error("宸℃鍋滄寮傚父:" + ex.getMessage());
+//        }
+//    }
+//
+//    //姝ラ鍒ゆ柇鏄惁杩囨湡
+//    private boolean isExpirdStep(ArdVideoInspectTask ardVideoInspectTask) {
+//        try {
+//            List<ArdVideoInspectTaskStep> ardVideoInspectTaskStepList = ardVideoInspectTask.getArdVideoInspectTaskStepList();
+//            /*鑾峰彇褰撳墠浠诲姟姝e湪鎵ц鐨勬楠ゅ拰褰撳墠姝ラ寮�濮嬬殑鏃堕棿*/
+//            String currentStepId = ardVideoInspectTask.getCurrentStepId();
+//            String currentStepStartTime = ardVideoInspectTask.getCurrentStepStartTime();
+//            Optional<ArdVideoInspectTaskStep> objectOptional = ardVideoInspectTaskStepList.stream()
+//                    .filter(ardVideoInspectTaskStep -> ardVideoInspectTaskStep.getId().equals(currentStepId))
+//                    .findFirst();
+//            if (objectOptional.isPresent()) {
+//                /*鑾峰彇褰撳墠姝ラ淇℃伅*/
+//                ArdVideoInspectTaskStep currentStep = objectOptional.get();
+//                /*鑾峰彇鍒板綋鍓嶆楠ょ殑寮�濮嬪拰缁撴潫鏃堕棿*/
+//                Date currentStepStartDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, currentStepStartTime);
+//                Date currentStepStopDate = DateUtils.addMinutes(currentStepStartDate, currentStep.getRecordingTime());
+//                /*鍒ゆ柇褰撳墠姝ラ鏃堕棿鏄惁杩囨湡*/
+//                if (!DateUtils.TimeCompare(currentStepStartDate, currentStepStopDate)) {
+//                    return true;
+//                } else {
+//                    return false;
+//                }
+//            } else {
+//                return false;
+//            }
+//        } catch (Exception ex) {
+//            log.error("鍒ゆ柇宸℃姝ラ杩囨湡寮傚父锛�" + ex.getMessage());
+//            return false;
+//        }
+//    }
+//
+//    //姝ラ鍒囨崲
+//    private String changeNextStep(ArdVideoInspectTask ardVideoInspectTask) {
+//        try {
+//            String currentStepId = ardVideoInspectTask.getCurrentStepId();
+//            Optional<ArdVideoInspectTaskStep> objectOptional = ardVideoInspectTask.getArdVideoInspectTaskStepList().stream()
+//                    .filter(obj -> obj.getId().equals(currentStepId))
+//                    .findFirst();
+//            if (objectOptional.isPresent()) {
+//                ArdVideoInspectTaskStep step = objectOptional.get();
+//                Integer currentStepOrderNumber = step.getOrderNumber();
+//                /*鍒ゆ柇褰撳墠姝ラ搴忓彿鏄惁灏忎簬姝ラ鎬绘暟*/
+//                if (currentStepOrderNumber < ardVideoInspectTask.getArdVideoInspectTaskStepList().size()) {
+//                    /*灏忎簬鍒欐墽琛屼笅涓�姝ラ*/
+//                    currentStepOrderNumber++;
+//                } else {
+//                    /*鍚﹀垯浠�1寮�濮嬫墽琛�*/
+//                    currentStepOrderNumber = 1;
+//                }
+//                Integer nextStepOrderNumber = currentStepOrderNumber;
+//                /*鏇存柊褰撳墠浠诲姟鍒囨崲鏂版楠�*/
+//                ArdVideoInspectTask avit = new ArdVideoInspectTask();
+//                avit.setId(ardVideoInspectTask.getId());
+//                String nextStepId = ardVideoInspectTask.getArdVideoInspectTaskStepList().stream()
+//                        .filter(obj -> obj.getOrderNumber() == nextStepOrderNumber)
+//                        .map(ArdVideoInspectTaskStep::getId)
+//                        .findFirst()
+//                        .orElse(null);
+//                avit.setCurrentStepId(nextStepId);
+//                ardVideoInspectTaskService.updateArdVideoInspectTaskNoUpdater(avit);
+//                log.info("姝ラ锛�" + currentStepId + "鍒囨崲涓�" + nextStepId);
+//                return nextStepId;
+//            }
+//        } catch (Exception ex) {
+//            log.error("宸℃姝ラ鍒囨崲寮傚父锛�" + ex.getMessage());
+//        }
+//        return "";
+//    }
 }

--
Gitblit v1.9.3