From f36efaba44f2108f551336336e437be58c270313 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期三, 31 五月 2023 17:02:49 +0800
Subject: [PATCH] 提交光电自动定时巡检

---
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PatrolInspectionTask.java |  270 ++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 180 insertions(+), 90 deletions(-)

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 279dc10..e51cd61 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
@@ -7,6 +7,7 @@
 import com.ruoyi.device.camera.domain.ArdCameras;
 import com.ruoyi.device.camera.domain.CameraCmd;
 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.domain.ArdVideoInspectTask;
@@ -15,10 +16,11 @@
 import com.ruoyi.inspect.service.IArdVideoInspectTaskService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
+
 import javax.annotation.Resource;
-import java.util.Date;
-import java.util.List;
-import java.util.Optional;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 /**
  * @Description: 宸℃浠诲姟
@@ -44,7 +46,6 @@
 
     public void scanRun() {
         /*鎵弿鎵�鏈夊彲鎵ц浠诲姟1-鏃堕棿婊¤冻2-鑷姩*/
-        log.info("寮�濮嬫壂鎻忔墍鏈夊彲鎵ц浠诲姟");
         ArdVideoInspectTask ardVideoInspectTask = new ArdVideoInspectTask();
         ardVideoInspectTask.setInspectMode("鑷姩");
         List<ArdVideoInspectTask> ardVideoInspectTasks = ardVideoInspectTaskService.selectArdVideoInspectTaskList(ardVideoInspectTask);
@@ -52,98 +53,187 @@
             /*閬嶅巻鎵�鏈夋椂闂存弧瓒崇殑鑷姩浠诲姟*/
             boolean timeCompare = DateUtils.TimeCompare(videoInspectTask.getStartTime(), videoInspectTask.getEndTime());
             if (timeCompare) {
-                log.info("婊¤冻鏃堕棿");
-                /*褰撳墠浠诲姟鐨勫贰妫�姝ラ*/
+                /*鑾峰彇褰撳墠浠诲姟鐨勬墍鏈夊贰妫�姝ラ*/
                 List<ArdVideoInspectTaskStep> ardVideoInspectTaskStepList = ardVideoInspectTaskService.selectArdVideoInspectTaskById(videoInspectTask.getId()).getArdVideoInspectTaskStepList();
-                Integer setpNum=ardVideoInspectTaskStepList.size();//姝ラ鏁伴噺
-                /*鑾峰彇褰撳墠浠诲姟姝e湪鎵ц鐨勬楠ゅ拰褰撳墠姝ラ寮�濮嬬殑鏃堕棿*/
+                if (ardVideoInspectTaskStepList.size() == 0) {
+                    continue;
+                }
+                videoInspectTask.setArdVideoInspectTaskStepList(ardVideoInspectTaskStepList);
                 String currentStepId = videoInspectTask.getCurrentStepId();
-                String cameraId = videoInspectTask.getCameraId();
-                Integer channel = videoInspectTask.getChannel();
-                String currentStepStartTime = videoInspectTask.getCurrentStepStartTime();
-                /*濡傛灉褰撳墠姝ラ鏈壘鍒帮紝鍒欎粠1寮�濮�*/
                 if (StringUtils.isNull(currentStepId)) {
-                    String wellId = ardVideoInspectTaskStepList.get(0).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(ardVideoInspectTaskStepList.get(0).getRecordingTime());
-                        boolean setTargetPosition = hikClientService.setTargetPosition(cmd);
-                        if(setTargetPosition)
-                        {
-                            /*鎺у埗鐩告満宸℃鎴愬姛锛屽紑濮嬪綍鍍�*/
-                            cmd.setEnable(true);//鍚姩褰曞儚
-                            hikClientService.record(cmd);
-                            /*鏇存柊浠诲姟褰撳墠姝ラid鍜屾楠ゅ惎鍔ㄦ椂闂�*/
-                            ArdVideoInspectTask avit=new ArdVideoInspectTask();
-                            avit.setId(videoInspectTask.getId());
-                            avit.setCurrentStepId(ardVideoInspectTaskStepList.get(0).getId());
-                            avit.setCurrentStepStartTime(DateUtils.getTime());
-                            //TODO with int i = ardVideoInspectTaskService.updateArdVideoInspectTaskWithCurrentStepInfo(avit);
-                           // log.info("鏇存柊缁撴灉"+i);
-                        }
-                    }
-                }
-                else /*褰撳墠浠诲姟宸茬粡鎵ц锛屽垽鏂槸鍚﹀埌鏈�*/
-                {
-                    Optional<Integer> recordingTime = ardVideoInspectTaskStepList.stream()
-                            .filter(ardVideoInspectTaskStep -> ardVideoInspectTaskStep.getId().equals(currentStepId))
-                            .map(ArdVideoInspectTaskStep::getRecordingTime)
-                            .findFirst();
-                    if (recordingTime.isPresent()) {
-                        System.out.println("鎵惧埌浜嗗尮閰嶇殑recordingTime: " + recordingTime.get());
-                        /*鑾峰彇鍒板綋鍓嶆楠ょ殑鎸佺画鏃堕棿*/
-                        Date currentStepStartDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, currentStepStartTime);
-                        Date currentStepStopDate = DateUtils.addMinutes(currentStepStartDate,recordingTime.get());
-                        /*鍒ゆ柇鏃堕棿鏄惁杩囨湡*/
-                        if(!DateUtils.TimeCompare(currentStepStartDate,currentStepStopDate))
-                        {
-                            /*宸茶繃鏈�,鍋滄褰曞儚锛屾墽琛屼笅涓�姝ラ*/
-                            CameraCmd cmd = new CameraCmd();
-                            cmd.setCameraId(cameraId);
-                            cmd.setChannelNum(channel);
-                            cmd.setOperator("sys_patrol_inspect");
-                            cmd.setEnable(false);//鍋滄褰曞儚
-                            String record = hikClientService.record(cmd);
-                            /*鏇存柊宸℃璁板綍*/
-                            ArdVideoInspectRecord ardVideoInspectRecord=new ArdVideoInspectRecord();
-                            ardVideoInspectRecord.setStepId(currentStepId);
-                            ardVideoInspectRecord.setStartTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,currentStepStartDate));
-                            ardVideoInspectRecord.setEndTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,currentStepStopDate));
-                            ardVideoInspectRecord.setRecordFilePath(record);
-                            ardVideoInspectRecordService.insertArdVideoInspectRecord(ardVideoInspectRecord);
-                            log.info(record);
-                        }
-                    } else {
-                        System.out.println("鏈壘鍒板尮閰嶇殑recordingTime");
-                    }
+                    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);
+                    }
                 }
-                /*鍚﹀垯鍒ゆ柇褰撳墠姝ラ寮�濮嬫椂闂达紝鍒ゆ柇鏄惁鍒版湡*/
-                /*鏈埌鏈�*/
-                /*蹇界暐*/
-                /*宸插埌鏈�*/
-                        /*缁撴潫褰曞儚锛岃浆鍒颁笅涓�涓楠わ紝
-                        鎺у埗浜戝彴鎸囧悜鍏宠仈浜曞潗鏍囷紝骞跺紑濮嬪綍鍍忥紝鏇存柊褰撳墠姝ラ鍜屽綋鍓嶆楠ゅ紑濮嬫椂闂�/
-                         */
             }
         }
     }
+
+    //姝ラ寮�濮�
+    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);
+                }
+            }
+        }
+    }
+
+    //姝ラ鍋滄
+    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 "";
+    }
 }

--
Gitblit v1.9.3