Administrator
2023-08-09 67d965cb476bde49109a3773532c33dd9de60518
ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
@@ -1,8 +1,6 @@
package com.ruoyi.inspect.service.impl;
import java.text.SimpleDateFormat;
import java.util.*;
import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell;
import com.ruoyi.alarmpoints.well.mapper.ArdAlarmpointsWellMapper;
import com.ruoyi.common.utils.DateUtils;
@@ -10,7 +8,6 @@
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.hiksdk.config.MinioClientSingleton;
import com.ruoyi.device.hiksdk.service.IHikClientService;
import com.ruoyi.inspect.domain.ArdVideoInspectRecord;
import com.ruoyi.inspect.mapper.ArdVideoInspectRecordMapper;
@@ -24,7 +21,6 @@
import com.ruoyi.inspect.mapper.ArdVideoInspectTaskMapper;
import com.ruoyi.inspect.domain.ArdVideoInspectTask;
import com.ruoyi.inspect.service.IArdVideoInspectTaskService;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
@@ -230,7 +226,7 @@
                        //开始下一步骤
                        videoInspectTask.setCurrentStepId(nextStepId);
                        startRunStep(videoInspectTask);
                    }else{
                    } else {
                        //未过期尝试引导,引导失败清空当前步骤开始时间,标记中断
                        tryGuide(videoInspectTask);
                    }
@@ -341,7 +337,9 @@
                                //开始下一步骤
                                videoInspectTask.setCurrentStepId(nextStepId);
                                startRunStep(videoInspectTask);
                            }else{tryGuide(videoInspectTask);}
                            } else {
                                tryGuide(videoInspectTask);
                            }
                        }
                    }
                } else {
@@ -415,7 +413,7 @@
        try {
            String currentStepId = ardVideoInspectTask.getCurrentStepId();
            if (StringUtils.isNull(currentStepId)) {
                log.info("当前开始巡检步骤id为空");
                log.debug("当前开始巡检步骤id为空");
                return;
            }
            log.debug("巡检步骤:" + currentStepId + "尝试开始");
@@ -440,6 +438,11 @@
                    targetPositon[2] = ardAlarmpointsWell.getAltitude();
                    /*获取相机坐标*/
                    ArdCameras cameras = ardCamerasMapper.selectArdCamerasById(cameraId);
                    if(StringUtils.isNull(cameras))
                    {
                        log.debug("找不到相机:"+cameraId);
                        return;
                    }
                    double[] cameraPositon = new double[3];
                    cameraPositon[0] = cameras.getLongitude();
                    cameraPositon[1] = cameras.getLatitude();
@@ -450,7 +453,7 @@
                    cmd.setChannelNum(channel);
                    cmd.setTargetPosition(targetPositon);
                    cmd.setOperator("sys_patrol_inspect");
                    cmd.setExpired(step.getRecordingTime()*60);
                    cmd.setExpired(step.getRecordingTime() * 60);
                    boolean setTargetPosition = hikClientService.guideTargetPosition(cmd);
                    if (setTargetPosition) {
                        /*控制相机巡检成功,开始录像*/
@@ -466,12 +469,13 @@
            log.error("巡检开始异常:" + ex.getMessage());
        }
    }
    //尝试控制引导
    private void tryGuide(ArdVideoInspectTask ardVideoInspectTask) {
        try {
            String currentStepId = ardVideoInspectTask.getCurrentStepId();
            if (StringUtils.isNull(currentStepId)) {
                log.info("当前开始巡检步骤id为空");
                log.debug("当前开始巡检步骤id为空");
                return;
            }
            log.debug("巡检正常,尝试引导:" + currentStepId);
@@ -492,6 +496,11 @@
                    targetPositon[2] = ardAlarmpointsWell.getAltitude();
                    /*获取相机坐标*/
                    ArdCameras cameras = ardCamerasMapper.selectArdCamerasById(cameraId);
                    if(StringUtils.isNull(cameras))
                    {
                        log.debug("找不到相机:"+cameraId);
                        return;
                    }
                    double[] cameraPositon = new double[3];
                    cameraPositon[0] = cameras.getLongitude();
                    cameraPositon[1] = cameras.getLatitude();
@@ -502,15 +511,13 @@
                    cmd.setChannelNum(channel);
                    cmd.setTargetPosition(targetPositon);
                    cmd.setOperator("sys_patrol_inspect");
                    cmd.setExpired(step.getRecordingTime()*60);
                    cmd.setExpired(step.getRecordingTime() * 60);
                    boolean setTargetPosition = hikClientService.guideTargetPosition(cmd);
                    if (!setTargetPosition) {
                        /*控制失败,当前步骤启动时间置null*/
                        ardVideoInspectTask.setCurrentStepStartTime("");
                        ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(ardVideoInspectTask);
                    }
                    else
                    {
                    } else {
                        log.debug("引导成功!");
                    }
                }
@@ -519,6 +526,7 @@
            log.error("巡检尝试引导异常:" + ex.getMessage());
        }
    }
    //步骤停止
    private void stopRunStep(ArdVideoInspectTask ardVideoInspectTask) {
        try {
@@ -542,8 +550,8 @@
                cmd.setChannelNum(channel);
                cmd.setOperator("sys_patrol_inspect");
                cmd.setRecordBucketName("record");
                cmd.setRecordObjectName("inspect_"+ IdUtils.fastSimpleUUID());
                String url=  hikClientService.recordStopToMinio(cmd);
                cmd.setRecordObjectName("inspect_" + IdUtils.fastSimpleUUID());
                String url = hikClientService.recordStopToMinio(cmd);
                /*插入巡检记录*/
                ArdVideoInspectRecord ardVideoInspectRecord = new ArdVideoInspectRecord();
                ardVideoInspectRecord.setStepId(step.getId());
@@ -636,6 +644,11 @@
        return ardVideoInspectTaskMapper.getTaskUsedCameraPeriods(cameraId);
    }
    /**
     * 获取相机的空闲时段
     * @param cameraId
     * @return
     */
    public List getCameraIdleTimeList(String cameraId) {
        LinkedList<String> timeList = new LinkedList();
        List<Map> usedPeriods = this.getTaskUsedCameraPeriods(cameraId);
@@ -645,21 +658,24 @@
            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");
        if (timeList.size() > 0) {
            if ("00:00:00".equals(timeList.getFirst())) {
                timeList.removeFirst();
            } else {
                timeList.addFirst("00:00:00");
            }
            //判断最后一个结束时间
            if ("23:59:59".equals(timeList.getLast())) {
                timeList.removeLast();
            } else {
                timeList.addLast("23:59:59");
            }
            //事件段为空,则全天作为一个时间段
            if (timeList.size() == 0) {
                timeList.add("00:00:00");
                timeList.add("23:59:59");
            }
        }
        return timeList;