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 |  299 ++++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 173 insertions(+), 126 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 a889fd7..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
@@ -44,9 +44,8 @@
     @Resource
     IHikClientService hikClientService;
 
-    public void scanRun(){
+    public void scanRun() {
         /*鎵弿鎵�鏈夊彲鎵ц浠诲姟1-鏃堕棿婊¤冻2-鑷姩*/
-        log.info("寮�濮嬫壂鎻忔墍鏈夊彲鎵ц浠诲姟");
         ArdVideoInspectTask ardVideoInspectTask = new ArdVideoInspectTask();
         ardVideoInspectTask.setInspectMode("鑷姩");
         List<ArdVideoInspectTask> ardVideoInspectTasks = ardVideoInspectTaskService.selectArdVideoInspectTaskList(ardVideoInspectTask);
@@ -54,139 +53,187 @@
             /*閬嶅巻鎵�鏈夋椂闂存弧瓒崇殑鑷姩浠诲姟*/
             boolean timeCompare = DateUtils.TimeCompare(videoInspectTask.getStartTime(), videoInspectTask.getEndTime());
             if (timeCompare) {
-                log.info("婊¤冻鏃堕棿");
-                /*褰撳墠浠诲姟鐨勫贰妫�姝ラ*/
+                /*鑾峰彇褰撳墠浠诲姟鐨勬墍鏈夊贰妫�姝ラ*/
                 List<ArdVideoInspectTaskStep> ardVideoInspectTaskStepList = ardVideoInspectTaskService.selectArdVideoInspectTaskById(videoInspectTask.getId()).getArdVideoInspectTaskStepList();
-                Map<Integer, Object> sortMap = new HashMap<>();//鎺掑簭map
-                Map<String, Object> stepMap = new HashMap<>();//IDmap
-                for (ArdVideoInspectTaskStep step : ardVideoInspectTaskStepList) {
-                    sortMap.put(step.getOrderNumber(), step);
-                    stepMap.put(step.getId(), step);
+                if (ardVideoInspectTaskStepList.size() == 0) {
+                    continue;
                 }
-                /*鑾峰彇褰撳墠浠诲姟姝e湪鎵ц鐨勬楠ゅ拰褰撳墠姝ラ寮�濮嬬殑鏃堕棿*/
+                videoInspectTask.setArdVideoInspectTaskStepList(ardVideoInspectTaskStepList);
                 String currentStepId = videoInspectTask.getCurrentStepId();
-                String cameraId = videoInspectTask.getCameraId();
-                Integer channel = videoInspectTask.getChannel();
-                String currentStepStartTime = videoInspectTask.getCurrentStepStartTime();
-                /*濡傛灉褰撳墠姝ラ鏈壘鍒帮紝鍒欎粠1寮�濮�*/
                 if (StringUtils.isNull(currentStepId)) {
-                    ArdVideoInspectTaskStep step = (ArdVideoInspectTaskStep) sortMap.get(1);
-                    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(videoInspectTask.getId());
-                            avit.setCurrentStepId(ardVideoInspectTaskStepList.get(0).getId());
-                            avit.setCurrentStepStartTime(DateUtils.getTime());
-                            ardVideoInspectTaskService.updateArdVideoInspectTaskNoUpdater(avit);
-                        }
-                    }
+                    videoInspectTask.setCurrentStepId(ardVideoInspectTaskStepList.get(0).getId());
+                    startRunStep(videoInspectTask);//寮�濮嬪綋鍓嶄换鍔$殑绗竴涓楠�
                 } else /*褰撳墠浠诲姟宸茬粡鎵ц锛屽垽鏂槸鍚﹀埌鏈�*/ {
-                    if (stepMap.containsKey(currentStepId)) {
-                        /*鑾峰彇褰撳墠姝ラ淇℃伅*/
-                        ArdVideoInspectTaskStep currentStep = (ArdVideoInspectTaskStep) stepMap.get(currentStepId);
-                        /*鑾峰彇鍒板綋鍓嶆楠ょ殑寮�濮嬪拰缁撴潫鏃堕棿*/
-                        Date currentStepStartDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, currentStepStartTime);
-                        Date currentStepStopDate = DateUtils.addMinutes(currentStepStartDate, currentStep.getRecordingTime());
-                        /*鍒ゆ柇褰撳墠姝ラ鏃堕棿鏄惁杩囨湡*/
-                        if (!DateUtils.TimeCompare(currentStepStartDate, currentStepStopDate)) {
-                            /*宸茶繃鏈�,鍋滄褰曞儚*/
-                            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);
-                            String url= MinioClientSingleton.domainUrl+ "/" +cmd.getRecordBucketName()+ "/"+recordName;
-                            hikClientService.recordToMinio(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(url);
-                            ardVideoInspectRecordService.insertArdVideoInspectRecord(ardVideoInspectRecord);
+                    boolean expird = isExpirdStep(videoInspectTask); /*鍒ゆ柇褰撳墠姝ラ鏃堕棿鏄惁杩囨湡*/
+                    if (expird) {
+                        /*宸茶繃鏈�,鍋滄褰曞儚*/
 
-                            /*鍒囨崲涓嬩竴姝ラ*/
-                            Integer orderNumber = currentStep.getOrderNumber();
-                            /*鍒ゆ柇褰撳墠姝ラ搴忓彿鏄惁灏忎簬姝ラ鎬绘暟*/
-                            if (orderNumber < stepMap.size()) {
-                                /*灏忎簬鍒欐墽琛屼笅涓�姝ラ*/
-                                orderNumber++;
-                            } else {
-                                /*鍚﹀垯浠�1寮�濮嬫墽琛�*/
-                                orderNumber = 1;
-                            }
-                            ArdVideoInspectTaskStep step = (ArdVideoInspectTaskStep) sortMap.get(orderNumber);
-                            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();
-                                /*鎺у埗鐩告満宸℃*/
-                                log.info("鎸囧悜" + ardAlarmpointsWell.getWellId() + "鍧愭爣:" + targetPositon);
-                                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(videoInspectTask.getId());
-                                    avit.setCurrentStepId(step.getId());
-                                    avit.setCurrentStepStartTime(DateUtils.getTime());
-                                    ardVideoInspectTaskService.updateArdVideoInspectTaskNoUpdater(avit);
-                                }
-                            }
-                        }
+                        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