| | |
| | | package com.ruoyi.alarm.radar.service.impl; |
| | | |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.ruoyi.alarm.global.domain.GuidePoint; |
| | | import com.ruoyi.alarm.radar.domain.ArdAlarmRadar; |
| | | import com.ruoyi.alarm.radar.domain.RadarAlarmData; |
| | | import com.ruoyi.alarm.radar.service.ArdRadarService; |
| | | import com.ruoyi.common.core.domain.AjaxResult; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.device.camera.domain.ArdCameras; |
| | | import com.ruoyi.device.camera.domain.CameraCmd; |
| | |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | |
| | | ptzMap.put("t", t); |
| | | ptzMap.put("z", cameraPTZ[2]); |
| | | cmd.setPtzMap(ptzMap); |
| | | boolean res = iCameraSdkService.setPtz(cmd); |
| | | if (res) { |
| | | log.debug("强制引导成功"); |
| | | } else { |
| | | log.debug("强制引导失败"); |
| | | } |
| | | iCameraSdkService.setPtz(cmd); |
| | | } else { |
| | | log.debug("未获取到雷达塔上的光电"); |
| | | } |
| | |
| | | log.error("强制引导异常:" + ex.getMessage()); |
| | | } |
| | | } |
| | | } |
| | | /** |
| | | * 异步雷达追踪引导 |
| | | * 刘苏义 |
| | | * 2023/11/2 9:00:55 |
| | | */ |
| | | @Override |
| | | @Async |
| | | public void followGuide(String msg) { |
| | | try { |
| | | RadarAlarmData radarFollowData = JSONObject.parseObject(msg, RadarAlarmData.class); |
| | | if (radarFollowData != null) { |
| | | List<ArdAlarmRadar> ardFollowRadars = radarFollowData.getArdFollowRadars(); |
| | | if (ardFollowRadars.size()>0) { |
| | | //当每次上报只上报一个追踪信息,认为不太可能雷达扫描一次会跟踪多个目标 |
| | | ArdAlarmRadar ardFollowRadar = ardFollowRadars.get(0); |
| | | String radarId = radarFollowData.getRadarId();//雷达id |
| | | //这里追踪的坐标为雷达经过计算上传的经纬度 |
| | | Double longitude = ardFollowRadar.getLongitude(); |
| | | Double latitude = ardFollowRadar.getLatitude(); |
| | | GuidePoint guidePoint=new GuidePoint().setLongitude(longitude).setLatitude(latitude); |
| | | //获取雷达所在塔上的大光电 |
| | | ArdCameras camera = ardEquipRadarMapper.getCameraByRadar(radarId); |
| | | if (StringUtils.isNotNull(camera)) { |
| | | log.debug("获取到雷达塔上的大光电:" + camera.getId()); |
| | | //如果雷达塔上有光电,引导光电的1通道到追踪的坐标 |
| | | CameraCmd cmd = new CameraCmd(camera.getId(), 1); |
| | | cmd.setOperator("sys_radar_follow"); |
| | | cmd.setCameraId(camera.getId()); |
| | | cmd.setChanNo(1); |
| | | cmd.setTargetPosition(new double[]{guidePoint.getLongitude(), guidePoint.getLatitude()}); |
| | | boolean res = iCameraSdkService.guideTargetPosition(cmd).get("code").equals(200); |
| | | if (res) { |
| | | log.debug("雷达追踪引导成功"); |
| | | } else { |
| | | log.debug("雷达追踪引导失败"); |
| | | } |
| | | } else { |
| | | log.debug("未获取到雷达塔上的大光电"); |
| | | } |
| | | } |
| | | } |
| | | } catch (Exception ex) { |
| | | log.error("雷达追踪引导异常:" + ex.getMessage()); |
| | | } |
| | | } |
| | | } |