From 67d965cb476bde49109a3773532c33dd9de60518 Mon Sep 17 00:00:00 2001 From: Administrator <1144154118@qq.com> Date: 星期三, 09 八月 2023 13:30:02 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java | 172 +++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 105 insertions(+), 67 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 19077f2..66f6a26 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,21 +1,17 @@ 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; -import com.ruoyi.constant.Global; +import com.ruoyi.common.utils.uuid.IdUtils; 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; import com.ruoyi.inspect.mapper.ArdVideoInspectTaskStepMapper; -import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import com.ruoyi.common.utils.StringUtils; @@ -25,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; @@ -36,7 +31,7 @@ * @date 2023-05-30 */ @Service -@Slf4j +@Slf4j(topic = "PatrolInspectionTask") public class ArdVideoInspectTaskServiceImpl implements IArdVideoInspectTaskService { @Resource private ArdVideoInspectTaskMapper ardVideoInspectTaskMapper; @@ -176,12 +171,12 @@ List<ArdVideoInspectTaskStep> ardVideoInspectTaskStepList = ardVideoInspectTask.getArdVideoInspectTaskStepList(); //鑾峰彇鐩告満 ArdCameras camera = camerasMapper.selectArdCamerasById(ardVideoInspectTask.getCameraId()); - Collections.sort(ardVideoInspectTaskStepList,new ArdVideoInspectTaskStepComparator(this.ardAlarmpointsWellMapper,camera.getLongitude(),camera.getLatitude())); + 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)); + step.setOrderNumber(new Integer(i + 1)); } if (StringUtils.isNotNull(ardVideoInspectTaskStepList)) { for (ArdVideoInspectTaskStep ardVideoInspectTaskStep : ardVideoInspectTaskStepList) { @@ -231,6 +226,9 @@ //寮�濮嬩笅涓�姝ラ videoInspectTask.setCurrentStepId(nextStepId); startRunStep(videoInspectTask); + } else { + //鏈繃鏈熷皾璇曞紩瀵硷紝寮曞澶辫触娓呯┖褰撳墠姝ラ寮�濮嬫椂闂达紝鏍囪涓柇 + tryGuide(videoInspectTask); } } } @@ -339,26 +337,12 @@ //寮�濮嬩笅涓�姝ラ videoInspectTask.setCurrentStepId(nextStepId); startRunStep(videoInspectTask); + } else { + tryGuide(videoInspectTask); } } } } else { -// if(Global.task_record.contains(videoInspectTask.getId())) -// { -// /*鍋滄褰曞儚*/ -// CameraCmd cmd = new CameraCmd(); -// cmd.setCameraId(videoInspectTask.getCameraId()); -// cmd.setChannelNum(videoInspectTask.getChannel()); -// cmd.setOperator("sys_patrol_inspect"); -// cmd.setEnable(false);//鍋滄褰曞儚 -// String uuid = UUID.randomUUID().toString().replace("-", ""); -// String time = new SimpleDateFormat("yyyyMMdd").format(new Date()); -// String recordName = videoInspectTask.getCameraId() + "/" + time + "/" + uuid + ".mp4"; -// cmd.setRecordBucketName("record"); -// cmd.setRecordObjectName(recordName); -// cmd.setUploadMinio(true); -// hikClientService.recordToMinio(cmd); -// } if (StringUtils.isNotEmpty(videoInspectTask.getCurrentStepId())) { videoInspectTask.setCurrentStepId(""); ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(videoInspectTask); @@ -429,10 +413,10 @@ try { String currentStepId = ardVideoInspectTask.getCurrentStepId(); if (StringUtils.isNull(currentStepId)) { - log.info("褰撳墠寮�濮嬪贰妫�姝ラid涓虹┖"); + log.debug("褰撳墠寮�濮嬪贰妫�姝ラid涓虹┖"); return; } - log.info("姝ラ锛�" + currentStepId + "寮�濮�"); + log.debug("宸℃姝ラ锛�" + currentStepId + "灏濊瘯寮�濮�"); String cameraId = ardVideoInspectTask.getCameraId(); Integer channel = ardVideoInspectTask.getChannel(); Optional<ArdVideoInspectTaskStep> objectOptional = ardVideoInspectTask.getArdVideoInspectTaskStepList().stream() @@ -454,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(); @@ -462,22 +451,14 @@ 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); + cmd.setExpired(step.getRecordingTime() * 60); + boolean setTargetPosition = hikClientService.guideTargetPosition(cmd); if (setTargetPosition) { - if (!Global.task_record.contains(ardVideoInspectTask.getId())) { - /*鎺у埗鐩告満宸℃鎴愬姛锛屽紑濮嬪綍鍍�*/ - cmd.setEnable(true);//鍚姩褰曞儚 - hikClientService.recordToMinio(cmd); - Global.task_record.add(ardVideoInspectTask.getId()); - } + /*鎺у埗鐩告満宸℃鎴愬姛锛屽紑濮嬪綍鍍�*/ + hikClientService.recordStart(cmd); } else { - cmd.setEnable(false);//鍋滄褰曞儚 - cmd.setUploadMinio(true); - hikClientService.recordToMinio(cmd); /*鎺у埗澶辫触,褰撳墠姝ラ鍚姩鏃堕棿缃畁ull*/ ardVideoInspectTask.setCurrentStepStartTime(""); ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(ardVideoInspectTask); @@ -489,11 +470,68 @@ } } + //灏濊瘯鎺у埗寮曞 + private void tryGuide(ArdVideoInspectTask ardVideoInspectTask) { + try { + String currentStepId = ardVideoInspectTask.getCurrentStepId(); + if (StringUtils.isNull(currentStepId)) { + log.debug("褰撳墠寮�濮嬪贰妫�姝ラid涓虹┖"); + return; + } + log.debug("宸℃姝e父锛屽皾璇曞紩瀵硷細" + 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); + if(StringUtils.isNull(cameras)) + { + log.debug("鎵句笉鍒扮浉鏈�:"+cameraId); + return; + } + 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.setTargetPosition(targetPositon); + cmd.setOperator("sys_patrol_inspect"); + cmd.setExpired(step.getRecordingTime() * 60); + boolean setTargetPosition = hikClientService.guideTargetPosition(cmd); + if (!setTargetPosition) { + /*鎺у埗澶辫触,褰撳墠姝ラ鍚姩鏃堕棿缃畁ull*/ + ardVideoInspectTask.setCurrentStepStartTime(""); + ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(ardVideoInspectTask); + } else { + log.debug("寮曞鎴愬姛!"); + } + } + } + } catch (Exception ex) { + log.error("宸℃灏濊瘯寮曞寮傚父锛�" + ex.getMessage()); + } + } + //姝ラ鍋滄 private void stopRunStep(ArdVideoInspectTask ardVideoInspectTask) { try { String currentStepId = ardVideoInspectTask.getCurrentStepId(); - log.info("姝ラ锛�" + currentStepId + "鍋滄"); + log.debug("宸℃姝ラ锛�" + currentStepId + "鍋滄"); if (StringUtils.isNull(currentStepId)) { log.info("褰撳墠鍋滄宸℃姝ラid涓虹┖"); return; @@ -511,28 +549,20 @@ 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); - cmd.setUploadMinio(true); - hikClientService.recordToMinio(cmd); - Global.task_record.remove(ardVideoInspectTask.getId()); + cmd.setRecordObjectName("inspect_" + IdUtils.fastSimpleUUID()); + String url = hikClientService.recordStopToMinio(cmd); /*鎻掑叆宸℃璁板綍*/ ArdVideoInspectRecord ardVideoInspectRecord = new ArdVideoInspectRecord(); ardVideoInspectRecord.setStepId(step.getId()); ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellMapper.selectArdAlarmpointsWellById(step.getWellId()); - if(StringUtils.isNotNull(ardAlarmpointsWell)) - { + 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)); 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); } @@ -614,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); @@ -623,23 +658,26 @@ 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; } -} \ No newline at end of file +} -- Gitblit v1.9.3