From 8dcb6801a19f08af6c7baaf6a1b9105c8b4dc58b Mon Sep 17 00:00:00 2001
From: liusuyi <13324259@qq.com>
Date: 周三, 31 5月 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())) {
+ //当前任务启动时间为null,则说明当前步骤被中断,直接启动当前步骤
+ 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())) {
+ //当前任务启动时间为null,则说明当前步骤被中断,直接启动当前步骤
+ 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())) {
+ //当前任务启动时间为null,则说明当前步骤被中断,直接启动当前步骤
+ 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);
+ /*控制失败,当前步骤启动时间置null*/
+ 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();
+ /*获取当前任务正在执行的步骤和当前步骤开始的时间*/
+ 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())) {
+// //当前任务启动时间为null,则说明当前步骤被中断,直接启动当前步骤
+// 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();
- /*获取当前任务正在执行的步骤和当前步骤开始的时间*/
- 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())) {
+// //当前任务启动时间为null,则说明当前步骤被中断,直接启动当前步骤
+// 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);
+// /*控制失败,当前步骤启动时间置null*/
+// 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();
+// /*获取当前任务正在执行的步骤和当前步骤开始的时间*/
+// 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