From 6d44233b19774063d82303d6fb725feea6601a56 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期三, 14 六月 2023 17:28:03 +0800
Subject: [PATCH] 优化海康sdk录像

---
 ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java |  110 ++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 81 insertions(+), 29 deletions(-)

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 c35cc97..73f0659 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
@@ -13,6 +13,7 @@
 import com.ruoyi.device.hiksdk.service.IHikClientService;
 import com.ruoyi.inspect.domain.ArdVideoInspectRecord;
 import com.ruoyi.inspect.mapper.ArdVideoInspectRecordMapper;
+import com.ruoyi.inspect.mapper.ArdVideoInspectTaskStepMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import com.ruoyi.common.utils.StringUtils;
@@ -38,6 +39,8 @@
     @Resource
     private ArdVideoInspectTaskMapper ardVideoInspectTaskMapper;
     @Resource
+    private ArdVideoInspectTaskStepMapper ardVideoInspectTaskStepMapper;
+    @Resource
     private ArdAlarmpointsWellMapper ardAlarmpointsWellMapper;
     @Resource
     private ArdVideoInspectRecordMapper ardVideoInspectRecordMapper;
@@ -45,16 +48,20 @@
     private ArdCamerasMapper ardCamerasMapper;
     @Resource
     private IHikClientService hikClientService;
+    @Resource
+    private ArdCamerasMapper camerasMapper;
 
     @PostConstruct
     public void initTask() {
         List<ArdVideoInspectTask> ardVideoInspectTasks = ardVideoInspectTaskMapper.selectArdVideoInspectTaskList(new ArdVideoInspectTask());
-        /*鍚姩鍚庡皢鎵�鏈夋墜鍔ㄤ换鍔$疆涓哄叧闂�*/
         for (ArdVideoInspectTask ardVideoInspectTask : ardVideoInspectTasks) {
+            /*鍚姩鍚庡皢鎵�鏈夋墜鍔ㄤ换鍔$疆涓哄叧闂�,鎵�鏈変换鍔″綋鍓嶆楠や俊鎭竻绌�*/
             if (ardVideoInspectTask.getInspectMode().equals("鎵嬪姩")) {
                 ardVideoInspectTask.setMenualSwitch("鍏�");
-                ardVideoInspectTaskMapper.updateArdVideoInspectTask(ardVideoInspectTask);
             }
+            ardVideoInspectTask.setCurrentStepId("");
+            ardVideoInspectTask.setCurrentStepStartTime("");
+            ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(ardVideoInspectTask);
         }
     }
 
@@ -108,7 +115,7 @@
     public int updateArdVideoInspectTask(ArdVideoInspectTask ardVideoInspectTask) {
         ardVideoInspectTask.setUpdateBy(SecurityUtils.getUsername());
         ardVideoInspectTask.setUpdateTime(DateUtils.getNowDate());
-        ardVideoInspectTaskMapper.deleteArdVideoInspectTaskStepByTaskId(ardVideoInspectTask.getId());
+        //  ardVideoInspectTaskMapper.deleteArdVideoInspectTaskStepByTaskId(ardVideoInspectTask.getId());
         insertArdVideoInspectTaskStep(ardVideoInspectTask);
         return ardVideoInspectTaskMapper.updateArdVideoInspectTask(ardVideoInspectTask);
     }
@@ -165,15 +172,24 @@
      */
     public void insertArdVideoInspectTaskStep(ArdVideoInspectTask ardVideoInspectTask) {
         List<ArdVideoInspectTaskStep> ardVideoInspectTaskStepList = ardVideoInspectTask.getArdVideoInspectTaskStepList();
-        String id = ardVideoInspectTask.getId();
+        //鑾峰彇鐩告満
+        ArdCameras camera = camerasMapper.selectArdCamerasById(ardVideoInspectTask.getCameraId());
+        Collections.sort(ardVideoInspectTaskStepList, new ArdVideoInspectTaskStepComparator(this.ardAlarmpointsWellMapper, camera.getLongitude(), camera.getLatitude()));
+        String taskId = ardVideoInspectTask.getId();
+        for (int i = 0; i < ardVideoInspectTaskStepList.size(); i++) {
+            ArdVideoInspectTaskStep step = ardVideoInspectTaskStepList.get(i);
+            step.setTaskId(taskId);
+            step.setOrderNumber(new Integer(i + 1));
+        }
         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);
+                if (ardVideoInspectTaskStep.getId() == null) {
+                    //鏂扮殑姝ラ,娣诲姞
+                    ardVideoInspectTaskStepMapper.insertArdVideoInspectTaskStep(ardVideoInspectTaskStep);
+                } else {
+                    //宸叉湁姝ラ,鏇存柊
+                    ardVideoInspectTaskStepMapper.updateArdVideoInspectTaskStep(ardVideoInspectTaskStep);
+                }
             }
         }
     }
@@ -185,6 +201,9 @@
     public void manualTaskRun(String TaskId) {
         try {
             ArdVideoInspectTask videoInspectTask = ardVideoInspectTaskMapper.selectArdVideoInspectTaskById(TaskId);
+            if (!videoInspectTask.getMenualSwitch().equals("寮�")) {
+                return;
+            }
             if (videoInspectTask.getArdVideoInspectTaskStepList().size() == 0) {
                 return;
             }
@@ -296,6 +315,7 @@
                         continue;
                     }
                     videoInspectTask.setArdVideoInspectTaskStepList(ardVideoInspectTaskStepList);
+
                     String currentStepId = videoInspectTask.getCurrentStepId();
                     String currentStepStartTime = videoInspectTask.getCurrentStepStartTime();
                     if (StringUtils.isNull(currentStepId) || StringUtils.isEmpty(currentStepId)) {
@@ -321,13 +341,14 @@
                         }
                     }
                 } else {
-                    if (StringUtils.isEmpty(videoInspectTask.getCurrentStepId()) || StringUtils.isEmpty(videoInspectTask.getCurrentStepStartTime())) {
-                        continue;
+                    if (StringUtils.isNotEmpty(videoInspectTask.getCurrentStepId())) {
+                        videoInspectTask.setCurrentStepId("");
+                        ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(videoInspectTask);
                     }
-                    /*杩囨湡鐨勪换鍔℃竻绌哄綋鍓嶆楠や俊鎭�*/
-                    videoInspectTask.setCurrentStepId("");
-                    videoInspectTask.setCurrentStepStartTime("");
-                    ardVideoInspectTaskMapper.updateArdVideoInspectTask(videoInspectTask);
+                    if (StringUtils.isNotEmpty(videoInspectTask.getCurrentStepStartTime())) {
+                        videoInspectTask.setCurrentStepId("");
+                        ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(videoInspectTask);
+                    }
                 }
             }
         } catch (Exception ex) {
@@ -401,6 +422,10 @@
                     .findFirst();
             if (objectOptional.isPresent()) {
                 ArdVideoInspectTaskStep step = objectOptional.get();
+                /*鏇存柊浠诲姟褰撳墠姝ラid鍜屾楠ゅ惎鍔ㄦ椂闂�*/
+                ardVideoInspectTask.setCurrentStepId(step.getId());
+                ardVideoInspectTask.setCurrentStepStartTime(DateUtils.getTime());
+                ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(ardVideoInspectTask);
                 String wellId = step.getWellId();
                 if (!StringUtils.isNull(wellId)) {
                     /*鑾峰彇浜曞潗鏍�*/
@@ -419,7 +444,6 @@
                     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());
@@ -428,22 +452,13 @@
                         /*鎺у埗鐩告満宸℃鎴愬姛锛屽紑濮嬪綍鍍�*/
                         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);//鍋滄褰曞儚
                         cmd.setUploadMinio(true);
                         hikClientService.recordToMinio(cmd);
                         /*鎺у埗澶辫触,褰撳墠姝ラ鍚姩鏃堕棿缃畁ull*/
-                        ArdVideoInspectTask avit = new ArdVideoInspectTask();
-                        avit.setId(ardVideoInspectTask.getId());
-                        avit.setCurrentStepId(step.getId());
-                        avit.setCurrentStepStartTime("");
-                        ardVideoInspectTaskMapper.updateArdVideoInspectTask(avit);
+                        ardVideoInspectTask.setCurrentStepStartTime("");
+                        ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(ardVideoInspectTask);
                     }
                 }
             }
@@ -485,6 +500,10 @@
                 /*鎻掑叆宸℃璁板綍*/
                 ArdVideoInspectRecord ardVideoInspectRecord = new ArdVideoInspectRecord();
                 ardVideoInspectRecord.setStepId(step.getId());
+                ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellMapper.selectArdAlarmpointsWellById(step.getWellId());
+                if (StringUtils.isNotNull(ardAlarmpointsWell)) {
+                    ardVideoInspectRecord.setWellName(ardAlarmpointsWell.getWellId());
+                }
                 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));
@@ -557,7 +576,7 @@
                         .findFirst()
                         .orElse(null);
                 avit.setCurrentStepId(nextStepId);
-                ardVideoInspectTaskMapper.updateArdVideoInspectTask(avit);
+                ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(avit);
                 log.info("姝ラ锛�" + currentStepId + "鍒囨崲涓�" + nextStepId);
                 return nextStepId;
             }
@@ -566,4 +585,37 @@
         }
         return "";
     }
+
+    public List getTaskUsedCameraPeriods(String cameraId) {
+        return ardVideoInspectTaskMapper.getTaskUsedCameraPeriods(cameraId);
+    }
+
+    public List getCameraIdleTimeList(String cameraId) {
+        LinkedList<String> timeList = new LinkedList();
+        List<Map> usedPeriods = this.getTaskUsedCameraPeriods(cameraId);
+        for (Map p :
+                usedPeriods) {
+            timeList.add((String) p.get("start_time"));
+            timeList.add((String) p.get("end_time"));
+        }
+        //鍒ゆ柇绗竴涓捣濮嬬偣
+        if (timeList.getFirst().equals("00:00:00")) {
+            timeList.removeFirst();
+        } else {
+            timeList.addFirst("00:00:00");
+        }
+        //鍒ゆ柇鏈�鍚庝竴涓粨鏉熸椂闂�
+        if (timeList.getLast().equals("23:59:59")) {
+            timeList.removeLast();
+        } else {
+            timeList.addLast("23:59:59");
+        }
+        //浜嬩欢娈典负绌�,鍒欏叏澶╀綔涓轰竴涓椂闂存
+        if (timeList.size() == 0) {
+            timeList.add("00:00:00");
+            timeList.add("23:59:59");
+        }
+
+        return timeList;
+    }
 }

--
Gitblit v1.9.3