From c3e4465b7ac9a90ecc00a58883fcf80c5c7beb81 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期三, 31 五月 2023 12:01:35 +0800
Subject: [PATCH] 优化

---
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PatrolInspectionTask.java |  132 ++++++++++++++++++++++++++++----------------
 1 files changed, 84 insertions(+), 48 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 ec09940..a889fd7 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
@@ -16,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: 宸℃浠诲姟
@@ -56,7 +57,12 @@
                 log.info("婊¤冻鏃堕棿");
                 /*褰撳墠浠诲姟鐨勫贰妫�姝ラ*/
                 List<ArdVideoInspectTaskStep> ardVideoInspectTaskStepList = ardVideoInspectTaskService.selectArdVideoInspectTaskById(videoInspectTask.getId()).getArdVideoInspectTaskStepList();
-                Integer setpNum=ardVideoInspectTaskStepList.size();//姝ラ鏁伴噺
+                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);
+                }
                 /*鑾峰彇褰撳墠浠诲姟姝e湪鎵ц鐨勬楠ゅ拰褰撳墠姝ラ寮�濮嬬殑鏃堕棿*/
                 String currentStepId = videoInspectTask.getCurrentStepId();
                 String cameraId = videoInspectTask.getCameraId();
@@ -64,20 +70,21 @@
                 String currentStepStartTime = videoInspectTask.getCurrentStepStartTime();
                 /*濡傛灉褰撳墠姝ラ鏈壘鍒帮紝鍒欎粠1寮�濮�*/
                 if (StringUtils.isNull(currentStepId)) {
-                    String wellId = ardVideoInspectTaskStepList.get(0).getWellId();//鑾峰彇绗竴涓楠ょ殑浜曞彿
+                    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();
+                        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();
+                        cameraPositon[0] = cameras.getLongitude();
+                        cameraPositon[1] = cameras.getLatitude();
+                        cameraPositon[2] = cameras.getAltitude();
                         /*鎺у埗鐩告満宸℃*/
                         CameraCmd cmd = new CameraCmd();
                         cmd.setCameraId(cameraId);
@@ -85,38 +92,30 @@
                         cmd.setCamPosition(cameraPositon);
                         cmd.setTargetPosition(targetPositon);
                         cmd.setOperator("sys_patrol_inspect");
-                        cmd.setExpired(ardVideoInspectTaskStepList.get(0).getRecordingTime());
+                        cmd.setExpired(step.getRecordingTime());
                         boolean setTargetPosition = hikClientService.setTargetPosition(cmd);
-                        if(setTargetPosition)
-                        {
+                        if (setTargetPosition) {
                             /*鎺у埗鐩告満宸℃鎴愬姛锛屽紑濮嬪綍鍍�*/
                             cmd.setEnable(true);//鍚姩褰曞儚
                             hikClientService.recordToMinio(cmd);
                             /*鏇存柊浠诲姟褰撳墠姝ラid鍜屾楠ゅ惎鍔ㄦ椂闂�*/
-                            ArdVideoInspectTask avit=new ArdVideoInspectTask();
+                            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);
+                            ardVideoInspectTaskService.updateArdVideoInspectTaskNoUpdater(avit);
                         }
                     }
-                }
-                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());
-                        /*鑾峰彇鍒板綋鍓嶆楠ょ殑鎸佺画鏃堕棿*/
+                } 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,recordingTime.get());
-                        /*鍒ゆ柇鏃堕棿鏄惁杩囨湡*/
-                        if(!DateUtils.TimeCompare(currentStepStartDate,currentStepStopDate))
-                        {
-                            /*宸茶繃鏈�,鍋滄褰曞儚锛屾墽琛屼笅涓�姝ラ*/
+                        Date currentStepStopDate = DateUtils.addMinutes(currentStepStartDate, currentStep.getRecordingTime());
+                        /*鍒ゆ柇褰撳墠姝ラ鏃堕棿鏄惁杩囨湡*/
+                        if (!DateUtils.TimeCompare(currentStepStartDate, currentStepStopDate)) {
+                            /*宸茶繃鏈�,鍋滄褰曞儚*/
                             CameraCmd cmd = new CameraCmd();
                             cmd.setCameraId(cameraId);
                             cmd.setChannelNum(channel);
@@ -130,26 +129,63 @@
                             String url= MinioClientSingleton.domainUrl+ "/" +cmd.getRecordBucketName()+ "/"+recordName;
                             hikClientService.recordToMinio(cmd);
                             /*鏇存柊宸℃璁板綍*/
-                            ArdVideoInspectRecord ardVideoInspectRecord=new ArdVideoInspectRecord();
+                            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);
+                            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);
-                            log.info(record);
-                        }
-                    } else {
-                        System.out.println("鏈壘鍒板尮閰嶇殑recordingTime");
-                    }
 
+                            /*鍒囨崲涓嬩竴姝ラ*/
+                            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);
+                                }
+                            }
+                        }
+                    }
                 }
-                /*鍚﹀垯鍒ゆ柇褰撳墠姝ラ寮�濮嬫椂闂达紝鍒ゆ柇鏄惁鍒版湡*/
-                /*鏈埌鏈�*/
-                /*蹇界暐*/
-                /*宸插埌鏈�*/
-                        /*缁撴潫褰曞儚锛岃浆鍒颁笅涓�涓楠わ紝
-                        鎺у埗浜戝彴鎸囧悜鍏宠仈浜曞潗鏍囷紝骞跺紑濮嬪綍鍍忥紝鏇存柊褰撳墠姝ラ鍜屽綋鍓嶆楠ゅ紑濮嬫椂闂�/
-                         */
             }
         }
     }

--
Gitblit v1.9.3