ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java
@@ -39,6 +39,7 @@ import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DictUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.external.domain.ArdEquipExternal; import com.ruoyi.device.external.mapper.ArdEquipExternalMapper; import com.ruoyi.device.radar.mapper.ArdEquipRadarMapper; @@ -51,6 +52,7 @@ import com.ruoyi.utils.tube.GeoPoint; import com.ruoyi.utils.tube.TubeTools; import lombok.extern.slf4j.Slf4j; import org.gavaghan.geodesy.GlobalCoordinates; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @@ -1020,7 +1022,6 @@ } else { //否则比对更新时间 Date lastUpdateTime = lastMoveData.getUpdateTime(); Date lastGuideTime = lastMoveData.getGuideTime(); long secDatePoor = DateUtils.getSecDatePoor(alarmTime,lastUpdateTime); if (secDatePoor <= radarMergeTime) { @@ -1374,11 +1375,11 @@ int index = name.indexOf("("); String alarmpointName = name.substring(0, index); //获取雷达所在塔上的大光电 String cameraIdWithTower = ardEquipRadarMapper.getCameraByRadar(radarId); if (StringUtils.isNotNull(cameraIdWithTower) && StringUtils.isNotEmpty(cameraIdWithTower)) { log.debug("获取到雷达塔上的光电:" + cameraIdWithTower); ArdCameras cameraWithTower = ardEquipRadarMapper.getCameraByRadar(radarId); if (StringUtils.isNotNull(cameraWithTower)) { log.debug("获取到雷达塔上的光电:" + cameraWithTower.getId()); //如果雷达塔上有光电 messagesEnqueued(cameraIdWithTower, alarmId, alarmType, createTime, 1, 1, coordinate); messagesEnqueued(cameraWithTower.getId(), alarmId, alarmType, createTime, 1, 1, coordinate); } else { log.debug("未获取到雷达塔上的光电,无法引导"); } @@ -1386,7 +1387,7 @@ ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(alarmpointName); if (StringUtils.isNotNull(ardAlarmpointsWell) && StringUtils.isNotEmpty(ardAlarmpointsWell.getCameraId())) { String cameraId = ardAlarmpointsWell.getCameraId(); if (cameraId.equals(cameraIdWithTower)) { if (cameraId.equals(cameraWithTower.getId())) { return; } log.info("获取到报警点关联的光电:" + cameraId); ard-work/src/main/java/com/ruoyi/alarm/radar/service/impl/ArdRadarServiceImpl.java
@@ -3,11 +3,14 @@ import com.alibaba.fastjson2.JSONObject; import com.ruoyi.alarm.radar.service.ArdRadarService; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.camera.service.ICameraSdkService; import com.ruoyi.device.radar.mapper.ArdEquipRadarMapper; import com.ruoyi.storage.minio.domain.jsonbean.JsonsRootBean; import com.ruoyi.utils.gis.GisUtil; import lombok.extern.slf4j.Slf4j; import org.gavaghan.geodesy.GlobalCoordinates; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @@ -42,19 +45,26 @@ if (msgMap != null) { Double p = Double.parseDouble(msgMap.get("p").toString()); Double t = Double.parseDouble(msgMap.get("t").toString()); Double z = Double.parseDouble(msgMap.get("z").toString()); Long distance = Long.parseLong(msgMap.get("distance").toString()); String radarId = msgMap.get("radarId").toString(); //获取雷达所在塔上的大光电 String cameraIdWithTower = ardEquipRadarMapper.getCameraByRadar(radarId); if (StringUtils.isNotNull(cameraIdWithTower) && StringUtils.isNotEmpty(cameraIdWithTower)) { log.debug("获取到雷达塔上的光电:" + cameraIdWithTower); ArdCameras camera = ardEquipRadarMapper.getCameraByRadar(radarId); if (StringUtils.isNotNull(camera)) { log.debug("获取到雷达塔上的光电:" + camera.getId()); //计算目标点坐标 GlobalCoordinates cameraCoordinates = new GlobalCoordinates(camera.getLatitude(), camera.getLongitude()); GlobalCoordinates targetCoordinates = GisUtil.getGlobalCoordinates(cameraCoordinates, p, distance); //获取ptz double[] cameraPoint = new double[]{ camera.getLongitude(), camera.getLatitude(),camera.getAltitude()}; double[] targetPoint = new double[]{targetCoordinates.getLongitude(), targetCoordinates.getLatitude()}; double[] cameraPTZ = GisUtil.getCameraPTZ(cameraPoint, targetPoint, 20, 150); //如果雷达塔上有光电 CameraCmd cmd = new CameraCmd(cameraIdWithTower, 1); CameraCmd cmd = new CameraCmd(camera.getId(), 1); cmd.setOperator("sys_radar_force"); Map<String, Double> ptzMap = new HashMap<>(); ptzMap.put("p", p); ptzMap.put("t", t); ptzMap.put("z", z); ptzMap.put("z", cameraPTZ[2]); cmd.setPtzMap(ptzMap); boolean res = iCameraSdkService.setPtz(cmd); if (res) { @@ -67,7 +77,7 @@ } } } catch (Exception ex) { log.error("强制引导异常:"+ ex.getMessage()); log.error("强制引导异常:" + ex.getMessage()); } } } } ard-work/src/main/java/com/ruoyi/device/radar/mapper/ArdEquipRadarMapper.java
@@ -3,6 +3,7 @@ import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.radar.domain.ArdEquipRadar; /** @@ -62,7 +63,7 @@ public int deleteArdEquipRadarByIds(String[] ids); /** * 通过雷达id找到关联塔上的大光电id * 通过雷达id找到关联塔上的大光电 */ String getCameraByRadar(String radarId); ArdCameras getCameraByRadar(String radarId); } ard-work/src/main/java/com/ruoyi/utils/gis/GisUtil.java
@@ -201,9 +201,9 @@ double[] ptz = GisUtil.getCameraPTZ(camera, lookAt, viewAngle, viewWidth); System.out.println("ptz:" + Arrays.toString(ptz));*/ // double[] camera = {125.153903999999997,46.5600799999999992,258.430000000000007}; GlobalCoordinates camera = new GlobalCoordinates(46.5600799999999992,125.153903999999997); double p = 212.70155; double distance = 4048.886568114861; GlobalCoordinates camera = new GlobalCoordinates(45.755847,126.640557); double p = 39.71; double distance = 164; GlobalCoordinates point = getGlobalCoordinates(camera, p, distance); System.out.println("point:"); @@ -211,4 +211,4 @@ System.out.println("lat:"+point.getLatitude()); } } } ard-work/src/main/resources/mapper/device/ArdEquipRadarMapper.xml
@@ -194,12 +194,11 @@ #{id} </foreach> </delete> <select id="getCameraByRadar" resultType="String"> select ac.id from ard_equip_radar aer INNER JOIN ard_towers at on aer.tower_id= at.id INNER JOIN ard_cameras ac on aer.tower_id=ac.tower_id <select id="getCameraByRadar" resultType="ArdCameras"> select ac.* from ard_equip_radar aer INNER JOIN ard_towers at on aer.tower_id= at.id INNER JOIN ard_cameras ac on aer.tower_id=ac.tower_id where aer.id=#{radarId} limit 1 </select> </mapper>