From 81dd45819944baa8032d942e2e28c5c859c0cc81 Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期四, 15 六月 2023 10:37:46 +0800 Subject: [PATCH] 优化巡检 --- ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java | 415 ++++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 308 insertions(+), 107 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 85d6bb1..df4af33 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 @@ -5,22 +5,17 @@ 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 com.ruoyi.inspect.mapper.ArdVideoInspectTaskStepMapper; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; - import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.SecurityUtils; import org.springframework.transaction.annotation.Transactional; @@ -29,6 +24,7 @@ import com.ruoyi.inspect.domain.ArdVideoInspectTask; import com.ruoyi.inspect.service.IArdVideoInspectTaskService; +import javax.annotation.PostConstruct; import javax.annotation.Resource; /** @@ -38,10 +34,12 @@ * @date 2023-05-30 */ @Service -@Slf4j +@Slf4j(topic = "PatrolInspectionTask") public class ArdVideoInspectTaskServiceImpl implements IArdVideoInspectTaskService { @Resource private ArdVideoInspectTaskMapper ardVideoInspectTaskMapper; + @Resource + private ArdVideoInspectTaskStepMapper ardVideoInspectTaskStepMapper; @Resource private ArdAlarmpointsWellMapper ardAlarmpointsWellMapper; @Resource @@ -50,6 +48,22 @@ 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("鍏�"); + } + ardVideoInspectTask.setCurrentStepId(""); + ardVideoInspectTask.setCurrentStepStartTime(""); + ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(ardVideoInspectTask); + } + } /** * 鏌ヨ瑙嗛宸℃浠诲姟 @@ -101,9 +115,22 @@ 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); + } + + /** + * 淇敼瑙嗛宸℃浠诲姟,bu鏇存柊姝ラ + * + * @param ardVideoInspectTask 瑙嗛宸℃浠诲姟 + * @return 缁撴灉 + */ + @Transactional + @Override + public int updateArdVideoInspectTaskSingle(ArdVideoInspectTask ardVideoInspectTask) { + ardVideoInspectTask.setUpdateBy(SecurityUtils.getUsername()); + ardVideoInspectTask.setUpdateTime(DateUtils.getNowDate()); return ardVideoInspectTaskMapper.updateArdVideoInspectTask(ardVideoInspectTask); } @@ -145,54 +172,109 @@ */ 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); + } } } } - /** * 鎵嬪姩宸℃浠诲姟 */ @Override public void manualTaskRun(String TaskId) { - ArdVideoInspectTask videoInspectTask = ardVideoInspectTaskMapper.selectArdVideoInspectTaskById(TaskId); - if (videoInspectTask.getArdVideoInspectTaskStepList().size() == 0) { - return; - } - String currentStepId = videoInspectTask.getCurrentStepId(); - String currentStepStartTime = videoInspectTask.getCurrentStepStartTime(); - if (StringUtils.isNull(currentStepId)||StringUtils.isEmpty(currentStepId)) { - //浠�1鍙锋楠ゅ紑濮� - videoInspectTask.setCurrentStepId(videoInspectTask.getArdVideoInspectTaskStepList().get(0).getId()); - if(InspectionTaskManager.taskMap.containsKey(TaskId)) { - startRunStep(videoInspectTask); + try { + ArdVideoInspectTask videoInspectTask = ardVideoInspectTaskMapper.selectArdVideoInspectTaskById(TaskId); + if (!videoInspectTask.getMenualSwitch().equals("寮�")) { + return; } - } else /*褰撳墠浠诲姟宸茬粡鎵ц锛屽垽鏂槸鍚﹀埌鏈�*/ { - if (StringUtils.isNull(currentStepStartTime)||StringUtils.isEmpty(currentStepStartTime)) { - //褰撳墠浠诲姟鍚姩鏃堕棿涓簄ull锛屽垯璇存槑褰撳墠姝ラ琚腑鏂紝鐩存帴鍚姩褰撳墠姝ラ - startRunStep(videoInspectTask); - } else { - boolean expird = isExpirdStep(videoInspectTask); /*鍒ゆ柇褰撳墠姝ラ鏃堕棿鏄惁杩囨湡*/ - if (expird) { - //鍋滄褰曞儚 - stopRunStep(videoInspectTask); - //鍒囨崲姝ラ - String nextStepId = changeNextStep(videoInspectTask); - //寮�濮嬩笅涓�姝ラ - videoInspectTask.setCurrentStepId(nextStepId); + if (videoInspectTask.getArdVideoInspectTaskStepList().size() == 0) { + return; + } + String currentStepId = videoInspectTask.getCurrentStepId(); + String currentStepStartTime = videoInspectTask.getCurrentStepStartTime(); + if (StringUtils.isNull(currentStepId) || StringUtils.isEmpty(currentStepId)) { + //浠�1鍙锋楠ゅ紑濮� + videoInspectTask.setCurrentStepId(videoInspectTask.getArdVideoInspectTaskStepList().get(0).getId()); + if (InspectionTaskManager.taskMap.containsKey(TaskId)) { startRunStep(videoInspectTask); + } + } else /*褰撳墠浠诲姟宸茬粡鎵ц锛屽垽鏂槸鍚﹀埌鏈�*/ { + if (StringUtils.isNull(currentStepStartTime) || StringUtils.isEmpty(currentStepStartTime)) { + //褰撳墠浠诲姟鍚姩鏃堕棿涓簄ull锛屽垯璇存槑褰撳墠姝ラ琚腑鏂紝鐩存帴鍚姩褰撳墠姝ラ + startRunStep(videoInspectTask); + } else { + boolean expird = isExpirdStep(videoInspectTask); /*鍒ゆ柇褰撳墠姝ラ鏃堕棿鏄惁杩囨湡*/ + if (expird) { + //鍋滄褰曞儚 + stopRunStep(videoInspectTask); + //鍒囨崲姝ラ + String nextStepId = changeNextStep(videoInspectTask); + //寮�濮嬩笅涓�姝ラ + videoInspectTask.setCurrentStepId(nextStepId); + startRunStep(videoInspectTask); + }else{ + //鏈繃鏈熷皾璇曞紩瀵硷紝寮曞澶辫触娓呯┖褰撳墠姝ラ寮�濮嬫椂闂达紝鏍囪涓柇 + tryGuide(videoInspectTask); + } + } + } + } catch (Exception ex) { + log.error("鎵嬪姩宸℃寮傚父锛�" + ex.getMessage()); + } + } + + /** + * 鍒ゆ柇褰撳墠鎵嬪姩浠诲姟鑳藉惁寮�鍚� + */ + @Override + public boolean isEnablemanualTask(String TaskId) { + /*鎵弿褰撳墠鎵嬪姩寮�鐨勪换鍔★紝鑾峰彇鎵嬪姩鎺у埗鐨勭浉鏈篿dList*/ + List<String> menualCameraId = new ArrayList<>(); + ArdVideoInspectTask menualTask = new ArdVideoInspectTask(); + menualTask.setInspectMode("鎵嬪姩"); + menualTask.setMenualSwitch("寮�"); + List<ArdVideoInspectTask> menualTasks = ardVideoInspectTaskMapper.selectArdVideoInspectTaskList(menualTask); + if (menualTasks.size() > 0) { + for (ArdVideoInspectTask task : menualTasks) { + if (StringUtils.isNull(task.getCameraId()) || StringUtils.isEmpty(task.getCameraId())) { + continue; + } + if (!menualCameraId.contains(task.getCameraId())) { + menualCameraId.add(task.getCameraId()); } } } + /*鍒ゆ柇鐩告満鏄惁宸茬粡琚汉鎵嬪姩鎺у埗*/ + ArdVideoInspectTask videoInspectTask = ardVideoInspectTaskMapper.selectArdVideoInspectTaskById(TaskId); + if (StringUtils.isNull(videoInspectTask)) { + return false; + } + String cameraId = videoInspectTask.getCameraId(); + if (StringUtils.isEmpty(cameraId)) { + return false; + } + if (menualCameraId.contains(cameraId)) { + /*濡傛灉褰撳墠浠诲姟鍏宠仈鐨勭浉鏈哄凡缁忔湁浜烘墜鍔ㄦ帶鍒讹紝鍒欎笉鍏佽鎺у埗*/ + return false; + } + return true; } /** @@ -200,49 +282,88 @@ */ @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())) { - //褰撳墠浠诲姟鍚姩鏃堕棿涓簄ull锛屽垯璇存槑褰撳墠姝ラ琚腑鏂紝鐩存帴鍚姩褰撳墠姝ラ - startRunStep(videoInspectTask); - } else { - boolean expird = isExpirdStep(videoInspectTask); /*鍒ゆ柇褰撳墠姝ラ鏃堕棿鏄惁杩囨湡*/ - if (expird) { - //鍋滄褰曞儚 - stopRunStep(videoInspectTask); - //鍒囨崲姝ラ - String nextStepId = changeNextStep(videoInspectTask); - //寮�濮嬩笅涓�姝ラ - videoInspectTask.setCurrentStepId(nextStepId); - startRunStep(videoInspectTask); - } + try { + /*鎵弿褰撳墠鎵嬪姩寮�鐨勪换鍔★紝鑾峰彇鎵嬪姩鎺у埗鐨勭浉鏈篿dList*/ + List<String> menualCameraId = new ArrayList<>(); + ArdVideoInspectTask menualTask = new ArdVideoInspectTask(); + menualTask.setInspectMode("鎵嬪姩"); + menualTask.setMenualSwitch("寮�"); + List<ArdVideoInspectTask> menualTasks = ardVideoInspectTaskMapper.selectArdVideoInspectTaskList(menualTask); + if (menualTasks.size() > 0) { + for (ArdVideoInspectTask task : menualTasks) { + if (StringUtils.isNull(task.getCameraId()) || StringUtils.isEmpty(task.getCameraId())) { + continue; + } + if (!menualCameraId.contains(task.getCameraId())) { + menualCameraId.add(task.getCameraId()); } } } + + /*鎵弿鎵�鏈夎嚜鍔ㄤ换鍔�*/ + ArdVideoInspectTask autoTask = new ArdVideoInspectTask(); + autoTask.setInspectMode("鑷姩"); + List<ArdVideoInspectTask> ardVideoInspectTasks = ardVideoInspectTaskMapper.selectArdVideoInspectTaskList(autoTask); + for (ArdVideoInspectTask videoInspectTask : ardVideoInspectTasks) { + /*閬嶅巻鎵�鏈夋椂闂存弧瓒崇殑鑷姩浠诲姟*/ + boolean timeCompare = DateUtils.TimeCompare(videoInspectTask.getStartTime(), videoInspectTask.getEndTime()); + if (timeCompare) { + if (menualCameraId.contains(videoInspectTask.getCameraId())) { + /*鑻ュ綋鍓嶇浉鏈烘鍦ㄦ湁浠诲姟鎵嬪姩鎵ц锛屽垯涓嶆墽琛�*/ + continue; + } + /*鑾峰彇褰撳墠浠诲姟鐨勬墍鏈夊贰妫�姝ラ*/ + List<ArdVideoInspectTaskStep> ardVideoInspectTaskStepList = ardVideoInspectTaskMapper.selectArdVideoInspectTaskById(videoInspectTask.getId()).getArdVideoInspectTaskStepList(); + if (ardVideoInspectTaskStepList.size() == 0) { + continue; + } + videoInspectTask.setArdVideoInspectTaskStepList(ardVideoInspectTaskStepList); + + String currentStepId = videoInspectTask.getCurrentStepId(); + String currentStepStartTime = videoInspectTask.getCurrentStepStartTime(); + if (StringUtils.isNull(currentStepId) || StringUtils.isEmpty(currentStepId)) { + //寮�濮嬪綋鍓嶄换鍔$殑绗竴涓楠� + videoInspectTask.setCurrentStepId(ardVideoInspectTaskStepList.get(0).getId()); + startRunStep(videoInspectTask); + } else /*褰撳墠浠诲姟宸茬粡鎵ц锛屽垽鏂槸鍚﹀埌鏈�*/ { + if (StringUtils.isNull(currentStepStartTime) || StringUtils.isEmpty(currentStepStartTime)) { + //褰撳墠浠诲姟鍚姩鏃堕棿涓虹┖锛屽垯璇存槑褰撳墠姝ラ琚腑鏂紝鐩存帴鍚姩褰撳墠姝ラ + startRunStep(videoInspectTask); + } else { + //鍒ゆ柇褰撳墠姝ラ鏃堕棿鏄惁杩囨湡 + boolean expird = isExpirdStep(videoInspectTask); + if (expird) { + //鍋滄褰曞儚 + stopRunStep(videoInspectTask); + //鍒囨崲姝ラ + String nextStepId = changeNextStep(videoInspectTask); + //寮�濮嬩笅涓�姝ラ + videoInspectTask.setCurrentStepId(nextStepId); + startRunStep(videoInspectTask); + }else{tryGuide(videoInspectTask);} + } + } + } else { + if (StringUtils.isNotEmpty(videoInspectTask.getCurrentStepId())) { + videoInspectTask.setCurrentStepId(""); + ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(videoInspectTask); + } + if (StringUtils.isNotEmpty(videoInspectTask.getCurrentStepStartTime())) { + videoInspectTask.setCurrentStepId(""); + ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(videoInspectTask); + } + } + } + } catch (Exception ex) { + log.error("鑷姩宸℃浠诲姟寮傚父锛�" + ex.getMessage()); } } + /** + * 鑷姩鎵嬪姩鍚堝苟锛屾壂搴撴柟寮忥紝鐩墠涓嶄娇鐢� + */ @Override public void taskRun() { - /*鎵弿鎵�鏈夊彲鎵ц浠诲姟1-鏃堕棿婊¤冻2-鑷姩*/ ArdVideoInspectTask ardVideoInspectTask = new ArdVideoInspectTask(); List<ArdVideoInspectTask> ardVideoInspectTasks = ardVideoInspectTaskMapper.selectArdVideoInspectTaskList(ardVideoInspectTask); for (ArdVideoInspectTask videoInspectTask : ardVideoInspectTasks) { @@ -262,13 +383,15 @@ continue; } videoInspectTask.setArdVideoInspectTaskStepList(ardVideoInspectTaskStepList); - String currentStepId = videoInspectTask.getCurrentStepId(); - if (StringUtils.isNull(currentStepId)) { + String currentStepId = videoInspectTask.getCurrentStepId();//褰撳墠姝ラid + String currentStepStartTime = videoInspectTask.getCurrentStepStartTime();//褰撳墠姝ラ鍚姩鏃堕棿 + if (StringUtils.isNull(currentStepId) || StringUtils.isEmpty(currentStepId)) { + //寮�濮嬬涓�涓楠� videoInspectTask.setCurrentStepId(ardVideoInspectTaskStepList.get(0).getId()); - startRunStep(videoInspectTask);//寮�濮嬪綋鍓嶄换鍔$殑绗竴涓楠� - } else /*褰撳墠浠诲姟宸茬粡鎵ц锛屽垽鏂槸鍚﹀埌鏈�*/ { - if (StringUtils.isNull(videoInspectTask.getCurrentStepStartTime())) { - //褰撳墠浠诲姟鍚姩鏃堕棿涓簄ull锛屽垯璇存槑褰撳墠姝ラ琚腑鏂紝鐩存帴鍚姩褰撳墠姝ラ + startRunStep(videoInspectTask); + } else { + if (StringUtils.isNull(currentStepStartTime) || StringUtils.isEmpty(currentStepStartTime)) { + //褰撳墠浠诲姟鍚姩鏃堕棿涓虹┖锛屽垯璇存槑褰撳墠姝ラ琚腑鏂紝鐩存帴鍚姩褰撳墠姝ラ startRunStep(videoInspectTask); } else { boolean expird = isExpirdStep(videoInspectTask); /*鍒ゆ柇褰撳墠姝ラ鏃堕棿鏄惁杩囨湡*/ @@ -294,7 +417,64 @@ log.info("褰撳墠寮�濮嬪贰妫�姝ラid涓虹┖"); return; } - log.info("姝ラ锛�" + currentStepId + "寮�濮�"); + log.debug("宸℃姝ラ锛�" + 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(); + /*鏇存柊浠诲姟褰撳墠姝ラid鍜屾楠ゅ惎鍔ㄦ椂闂�*/ + ardVideoInspectTask.setCurrentStepId(step.getId()); + ardVideoInspectTask.setCurrentStepStartTime(DateUtils.getTime()); + ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(ardVideoInspectTask); + 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.setTargetPosition(targetPositon); + cmd.setOperator("sys_patrol_inspect"); + cmd.setExpired(step.getRecordingTime()*60); + boolean setTargetPosition = hikClientService.setTargetPosition(cmd); + if (setTargetPosition) { + /*鎺у埗鐩告満宸℃鎴愬姛锛屽紑濮嬪綍鍍�*/ + cmd.setEnable(true);//鍚姩褰曞儚 + hikClientService.recordToMinio(cmd); + } else { + /*鎺у埗澶辫触,褰撳墠姝ラ鍚姩鏃堕棿缃畁ull*/ + ardVideoInspectTask.setCurrentStepStartTime(""); + ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(ardVideoInspectTask); + } + } + } + } catch (Exception ex) { + log.error("宸℃寮�濮嬪紓甯革細" + ex.getMessage()); + } + } + //灏濊瘯鎺у埗寮曞 + private void tryGuide(ArdVideoInspectTask ardVideoInspectTask) { + try { + String currentStepId = ardVideoInspectTask.getCurrentStepId(); + if (StringUtils.isNull(currentStepId)) { + log.info("褰撳墠寮�濮嬪贰妫�姝ラid涓虹┖"); + return; + } + log.debug("宸℃姝e父锛屽皾璇曞紩瀵硷細" + currentStepId); String cameraId = ardVideoInspectTask.getCameraId(); Integer channel = ardVideoInspectTask.getChannel(); Optional<ArdVideoInspectTaskStep> objectOptional = ardVideoInspectTask.getArdVideoInspectTaskStepList().stream() @@ -320,43 +500,26 @@ 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()); + cmd.setExpired(step.getRecordingTime()*60); 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); + if (!setTargetPosition) { /*鎺у埗澶辫触,褰撳墠姝ラ鍚姩鏃堕棿缃畁ull*/ - ArdVideoInspectTask avit = new ArdVideoInspectTask(); - avit.setId(ardVideoInspectTask.getId()); - avit.setCurrentStepId(step.getId()); - avit.setCurrentStepStartTime(""); - ardVideoInspectTaskMapper.updateArdVideoInspectTask(avit); + ardVideoInspectTask.setCurrentStepStartTime(""); + ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(ardVideoInspectTask); } } } } catch (Exception ex) { - log.error("宸℃寮�濮嬪紓甯革細" + ex.getMessage()); + 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; @@ -380,10 +543,15 @@ String recordName = cameraId + "/" + time + "/" + uuid + ".mp4"; cmd.setRecordBucketName("record"); cmd.setRecordObjectName(recordName); + cmd.setUploadMinio(true); hikClientService.recordToMinio(cmd); /*鎻掑叆宸℃璁板綍*/ 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)); @@ -456,7 +624,7 @@ .findFirst() .orElse(null); avit.setCurrentStepId(nextStepId); - ardVideoInspectTaskMapper.updateArdVideoInspectTask(avit); + ardVideoInspectTaskMapper.updateArdVideoInspectTaskWithCurrentSetpInfo(avit); log.info("姝ラ锛�" + currentStepId + "鍒囨崲涓�" + nextStepId); return nextStepId; } @@ -465,4 +633,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