| | |
| | | @Resource |
| | | private RedisCache redisCache; |
| | | @Resource |
| | | private QueueManager queueManager; |
| | | private QueueHandler queueHandler; |
| | | @Resource |
| | | private ArdEquipRadarMapper ardEquipRadarMapper; |
| | | //endregion |
| | |
| | | .setAlarmId(ardAlarmTube.getId()) |
| | | .setAlarmType("sys_tube_leak") |
| | | .setReceiveTime(ardAlarmTube.getCreateTime()) |
| | | .setNum(1) |
| | | .setRecordSn(1) |
| | | .setTargetPosition(coordinate); |
| | | messagesEnqueued(guideDataDto); |
| | | } |
| | |
| | | if (well == null) { |
| | | return; |
| | | } |
| | | Double guideP = well.getGuideP(); |
| | | Double guideT = well.getGuideT(); |
| | | Double guideZ = well.getGuideZ(); |
| | | |
| | | Double longitude = well.getLongitude(); |
| | | Double latitude = well.getLatitude(); |
| | | String targetId = ardAlarmRadar.getTargetId(); |
| | | GuidePTZ guidePTZ = new GuidePTZ(); |
| | | guidePTZ.setP1(well.getGuideP1()); |
| | | guidePTZ.setT1(well.getGuideT1()); |
| | | guidePTZ.setZ1(well.getGuideZ1()); |
| | | guidePTZ.setP2(well.getGuideP2()); |
| | | guidePTZ.setT2(well.getGuideT2()); |
| | | guidePTZ.setZ2(well.getGuideZ2()); |
| | | switch (ardAlarmRadar.getAlarmType()) { |
| | | case "运动目标检测": |
| | | ArdAlarmRadarMove ardAlarmRadarMove = new ArdAlarmRadarMove(); |
| | |
| | | ardAlarmRadarMove.setLatitude(latitude); |
| | | ardAlarmRadarMove.setUpdateTime(radarAlarmData.getAlarmTime()); |
| | | ardAlarmRadarMove.setRadarId(radarId); |
| | | |
| | | guidePTZ.setP(guideP); |
| | | guidePTZ.setT(guideT); |
| | | guidePTZ.setZ(guideZ); |
| | | ardAlarmRadarMove.setGuidePTZ(guidePTZ); |
| | | Date alarmTime = ardAlarmRadarMove.getAlarmTime(); |
| | | //获取当前兴趣点当前雷达的上一条数据 |
| | |
| | | ardAlarmRadarFire.setAlarmType("热源检测"); |
| | | ardAlarmRadarFire.setLongitude(longitude); |
| | | ardAlarmRadarFire.setLatitude(latitude); |
| | | guidePTZ.setP(guideP); |
| | | guidePTZ.setT(guideT); |
| | | guidePTZ.setZ(guideZ); |
| | | ardAlarmRadarFire.setGuidePTZ(guidePTZ); |
| | | ardAlarmRadarFire.setRadarId(radarId); |
| | | ardAlarmRadarFire.setUpdateTime(radarAlarmData.getAlarmTime()); |
| | |
| | | alarmTime = ardAlarmRadarPump.getAlarmTime(); |
| | | ardAlarmRadarPump.setLongitude(well.getLongitude()); |
| | | ardAlarmRadarPump.setLatitude(well.getLatitude()); |
| | | guidePTZ.setP(guideP); |
| | | guidePTZ.setT(guideT); |
| | | guidePTZ.setZ(guideZ); |
| | | ardAlarmRadarPump.setGuidePTZ(guidePTZ); |
| | | // |
| | | ArdAlarmRadarPump lastPumpData = ardAlarmRadarPumpMapper.selectArdAlarmRadarLastData(ardAlarmRadarPump.getName()); |
| | |
| | | //外联防区名称就是兴趣点,查兴趣点坐标 |
| | | String defenseName = ardAlarmExternal.getDefenseName(); |
| | | ArdAlarmpointsWell well = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(defenseName); |
| | | GuidePTZ guidePTZ = new GuidePTZ(); |
| | | if (StringUtils.isNotNull(well)) { |
| | | ardAlarmExternal.setLongitude(well.getLongitude()); |
| | | ardAlarmExternal.setLatitude(well.getLatitude()); |
| | | guidePTZ.setP1(well.getGuideP1()); |
| | | guidePTZ.setT1(well.getGuideT1()); |
| | | guidePTZ.setZ1(well.getGuideZ1()); |
| | | guidePTZ.setP2(well.getGuideP2()); |
| | | guidePTZ.setT2(well.getGuideT2()); |
| | | guidePTZ.setZ2(well.getGuideZ2()); |
| | | } |
| | | int aae = ardAlarmExternalMapper.insertArdAlarmExternal(ardAlarmExternal); |
| | | if (aae > 0) { |
| | |
| | | return; |
| | | } |
| | | double[] coordinate = new double[]{ardAlarmExternal.getLongitude(), ardAlarmExternal.getLatitude()};//引导坐标 |
| | | GuidePTZ guidePTZ = new GuidePTZ() |
| | | .setP(well.getGuideP()) |
| | | .setT(well.getGuideT()) |
| | | .setZ(well.getGuideZ()); |
| | | String cameraId = getCameraByNear(coordinate);//最近相机ID |
| | | if (StringUtils.isNotEmpty(cameraId)) { |
| | | GuideDataDto guideDataDto = new GuideDataDto() |
| | |
| | | .setAlarmId(ardAlarmExternal.getId()) |
| | | .setAlarmType("sys_external") |
| | | .setReceiveTime(ardAlarmExternal.getCreateTime()) |
| | | .setNum(1) |
| | | .setRecordSn(1) |
| | | .setTargetPosition(coordinate) |
| | | .setGuidePTZ(guidePTZ); |
| | | messagesEnqueued(guideDataDto); |
| | |
| | | .setAlarmId(ardAlarmAccess.getId()) |
| | | .setAlarmType("sys_external") |
| | | .setReceiveTime(ardAlarmAccess.getCreateTime()) |
| | | .setNum(1) |
| | | .setRecordSn(1) |
| | | .setTargetPosition(coordinate); |
| | | messagesEnqueued(guideDataDto); |
| | | } |
| | |
| | | private void messagesEnqueued(GuideDataDto guideDataDto) { |
| | | try { |
| | | String cameraId = guideDataDto.getCameraId(); |
| | | String alarmType = guideDataDto.getAlarmType(); |
| | | if (!IsEnableGuide(cameraId)) { |
| | | log.info("相机:" + cameraId + "未开启报警引导功能"); |
| | | return; |
| | | } |
| | | SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); |
| | | GuideTask guideTask = new GuideTask(); |
| | | //相机ID |
| | | guideTask.setCameraId(cameraId); |
| | | //报警类型 |
| | | guideTask.setCameraId(cameraId);//相机ID |
| | | String alarmType = guideDataDto.getAlarmType(); |
| | | switch (alarmType) { |
| | | case "运动目标检测": |
| | | alarmType = "sys_radar_move"; |
| | |
| | | alarmType = "sys_radar_pump"; |
| | | break; |
| | | } |
| | | guideTask.setAlarmType(alarmType); |
| | | //通道(通过日夜时间研判) |
| | | String dayNightTime = redisCache.getCacheObject("sys_config:dayNightTime"); |
| | | Integer channel = ArdTool.getChannelBydayNightTime(dayNightTime); |
| | | guideTask.setChanNum(channel); |
| | | //报警ID |
| | | guideTask.setAlarmId(guideDataDto.getAlarmId()); |
| | | //接收时间 |
| | | guideTask.setReceiveTime(fmt.format(guideDataDto.getReceiveTime())); |
| | | guideTask.setAlarmType(alarmType);//报警类型 |
| | | Integer chanNo = ArdTool.getChannelBydayNightTime(redisCache.getCacheObject("sys_config:dayNightTime")); |
| | | guideTask.setChanNo(chanNo);//通道(通过日夜时间研判) |
| | | guideTask.setAlarmId(guideDataDto.getAlarmId()); //报警ID |
| | | guideTask.setReceiveTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS_MS,guideDataDto.getReceiveTime()));//接收时间 |
| | | //报警优先级(通过优先级字典) |
| | | String priority = DictUtils.getDictValue("cameras_priority", alarmType); |
| | | if (StringUtils.isEmpty(priority)) { |
| | |
| | | return; |
| | | } |
| | | guideTask.setPriority(Integer.valueOf(priority)); |
| | | //报警次数 |
| | | guideTask.setNum(guideDataDto.getNum()); |
| | | //录像存储位置 |
| | | guideTask.setRecordSn(guideDataDto.getRecordSn()); |
| | | //目标经纬度 |
| | | guideTask.setTargetPosition(guideDataDto.getTargetPosition()); |
| | | //目标PTZ |
| | | guideTask.setTargetPosition(guideDataDto.getTargetPosition());//目标经纬度 |
| | | if (guideDataDto.getGuidePTZ() != null) { |
| | | guideTask.setGuidePTZ(guideDataDto.getGuidePTZ()); |
| | | guideTask.setGuidePTZ(guideDataDto.getGuidePTZ());//目标PTZ |
| | | } |
| | | //消息入队 |
| | | queueManager.addTaskToQueue(cameraId, guideTask); |
| | | queueHandler.addTaskToQueue(cameraId, guideTask); |
| | | //打印队列 |
| | | GuidePriorityQueue.printPriorityQueue(); |
| | | } catch (Exception ex) { |
| | |
| | | |
| | | //获取相机引导入队 |
| | | private void getCameraGuideToQueue(GuideDataDto guideDataDto) { |
| | | int index = guideDataDto.getName().indexOf("("); |
| | | String alarmpointName = guideDataDto.getName().substring(0, index); |
| | | |
| | | //获取雷达所在塔上的大光电 |
| | | ArdCameras cameraWithTower = ardEquipRadarMapper.getCameraByRadar(guideDataDto.getRadarId()); |
| | | if (StringUtils.isNotNull(cameraWithTower)) { |
| | |
| | | messagesEnqueued(guideDataDto); |
| | | } else { |
| | | log.debug("未获取到雷达塔上的光电,无法引导"); |
| | | } |
| | | //获取报警点关联的大光电 |
| | | ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(alarmpointName); |
| | | if (StringUtils.isNotNull(ardAlarmpointsWell) && StringUtils.isNotEmpty(ardAlarmpointsWell.getCameraId())) { |
| | | String cameraId = ardAlarmpointsWell.getCameraId(); |
| | | if (cameraId.equals(cameraWithTower.getId())) { |
| | | return; |
| | | } |
| | | log.debug("获取到报警点关联的光电:" + cameraId); |
| | | //如果报警点关联了光电 |
| | | guideDataDto.setCameraId(cameraId); |
| | | guideDataDto.setRecordSn(2);//兴趣点光电引导录像存储第二个路径 |
| | | messagesEnqueued(guideDataDto); |
| | | } else { |
| | | log.debug("未获取到报警点关联的光电,无法引导"); |
| | | } |
| | | } |
| | | |
| | |
| | | .setAlarmId(ardAlarmRadarMove.getId()) |
| | | .setAlarmType(ardAlarmRadarMove.getAlarmType()) |
| | | .setReceiveTime(ardAlarmRadarMove.getCreateTime()) |
| | | .setNum(1) |
| | | .setRecordSn(1) |
| | | .setTargetPosition(coordinate) |
| | | .setGuidePTZ(ardAlarmRadarMove.getGuidePTZ()); |
| | | getCameraGuideToQueue(guideDataDto);//获取相机入队 |
| | |
| | | .setAlarmId(ardAlarmRadarFire.getId()) |
| | | .setAlarmType(ardAlarmRadarFire.getAlarmType()) |
| | | .setReceiveTime(ardAlarmRadarFire.getCreateTime()) |
| | | .setNum(1) |
| | | .setRecordSn(1) |
| | | .setTargetPosition(coordinate) |
| | | .setGuidePTZ(ardAlarmRadarFire.getGuidePTZ()); |
| | | getCameraGuideToQueue(guideDataDto);//获取相机入队 |
| | |
| | | .setAlarmId(ardAlarmRadarPump.getId()) |
| | | .setAlarmType(ardAlarmRadarPump.getAlarmType()) |
| | | .setReceiveTime(ardAlarmRadarPump.getCreateTime()) |
| | | .setNum(1) |
| | | .setRecordSn(1) |
| | | .setTargetPosition(coordinate) |
| | | .setGuidePTZ(ardAlarmRadarPump.getGuidePTZ()); |
| | | getCameraGuideToQueue(guideDataDto);//获取相机入队 |