| | |
| | | package com.ruoyi.alarm.globalAlarm.service.impl; |
| | | |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.ruoyi.alarm.cameraAlarm.domain.ArdAlarmCamera; |
| | | import com.ruoyi.alarm.cameraAlarm.mapper.ArdAlarmCameraMapper; |
| | | import com.ruoyi.alarm.globalAlarm.domain.GlobalAlarmCondition; |
| | | import com.ruoyi.alarm.globalAlarm.domain.GlobalAlarmData; |
| | | import com.ruoyi.alarm.globalAlarm.service.IGlobalAlarmService; |
| | |
| | | @Resource |
| | | ArdAlarmTubeMapper ardAlarmTubeMapper; |
| | | @Resource |
| | | ArdAlarmCameraMapper ardAlarmCameraMapper; |
| | | @Resource |
| | | ArdTubesMapper ardTubesMapper; |
| | | @Resource |
| | | ArdAlarmpointsWellMapper ardAlarmpointsWellMapper; |
| | |
| | | private IHikClientService hikClientService; |
| | | @Resource |
| | | private RedisCache redisCache; |
| | | |
| | | /** |
| | | * @描述 按条件查询报警 |
| | | * @参数 [condition] |
| | |
| | | return globalAlarmData; |
| | | }) |
| | | .collect(Collectors.toList()); |
| | | case 1002: |
| | | List<ArdAlarmCamera> ardAlarmCameras = ardAlarmCameraMapper.selectListAllByCommand(refreshTime); |
| | | return ardAlarmCameras.stream() |
| | | .map(ardAlarmCamera -> { |
| | | GlobalAlarmData globalAlarmData = new GlobalAlarmData() |
| | | .setId(ardAlarmCamera.getId()) |
| | | .setName(ardAlarmCamera.getCameraName()) |
| | | .setAlarmTime(ardAlarmCamera.getAlarmTime()) |
| | | .setLongitude(ardAlarmCamera.getLongitude()) |
| | | .setLatitude(ardAlarmCamera.getLatitude()) |
| | | .setCount(ardAlarmCamera.getCount()) |
| | | .setTotal(ardAlarmCamera.getTotal()); |
| | | return globalAlarmData; |
| | | }) |
| | | .collect(Collectors.toList()); |
| | | case 1014: |
| | | List<ArdAlarmTube> ardAlarmTubes = ardAlarmTubeMapper.selectListAllByCommand(refreshTime); |
| | | return ardAlarmTubes.stream() |
| | |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @描述 按条件更新查看时间 |
| | | * @参数 [condition] |
| | |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @描述 异步处理接收的报警 |
| | | * @参数 [topic, message] |
| | |
| | | } |
| | | //endregion |
| | | break; |
| | | case "camera": |
| | | //region 处理通用光电报警 |
| | | ArdAlarmCamera ardAlarmCamera = JSONObject.parseObject(message, ArdAlarmCamera.class); |
| | | ardAlarmCamera.setId(simpleUUID); |
| | | int aac = ardAlarmCameraMapper.insertArdAlarmCamera(ardAlarmCamera); |
| | | if (aac > 0) { |
| | | log.debug("camera入库成功:" + ardAlarmCamera); |
| | | //引导录像 |
| | | CameraCmd cmd = new CameraCmd(); |
| | | cmd.setRecordBucketName("record"); |
| | | cmd.setRecordObjectName("camera"); |
| | | cmd.setOperator("sys_camera"); |
| | | cmd.setExpired(30); |
| | | cmd.setTargetPosition(new double[]{ardAlarmCamera.getLongitude(), ardAlarmCamera.getLatitude()}); |
| | | String url = guideCamera(cmd); |
| | | //更新录像 |
| | | if (StringUtils.isNotEmpty(url)) { |
| | | ardAlarmCamera.setRecordUrl(url); |
| | | ardAlarmCameraMapper.updateArdAlarmCamera(ardAlarmCamera); |
| | | } |
| | | } |
| | | //endregion |
| | | break; |
| | | } |
| | | } catch (Exception ex) { |
| | | log.error("接收报警异常:" + ex.getMessage()); |
| | |
| | | double distance = GisTool.getDistance(cmd.getTargetPosition(), camPosition); |
| | | if (distance != 0.0 && distance <= camera.getCamMaxVisibleDistance()) { |
| | | distanceMap.put(camera.getId(), distance); |
| | | guideMap.put(camera.getId(),camera.getCamAlarmGuideEnable()); |
| | | if (StringUtils.isNull(camera.getCamAlarmGuideEnable())) { |
| | | camera.setCamAlarmGuideEnable(0); |
| | | } |
| | | guideMap.put(camera.getId(), camera.getCamAlarmGuideEnable()); |
| | | } |
| | | } |
| | | if (distanceMap.size() > 0) { |
| | | log.debug("尝试查找最近光电"); |
| | | //获取距离字典中最近的一个相机ID |
| | | String minDistanceCameraId = ArdTool.getKeyByMinValue(distanceMap); |
| | | log.debug("查找到最近光电:"+minDistanceCameraId+",尝试引导"); |
| | | if(guideMap.get(minDistanceCameraId).equals(0)) |
| | | { |
| | | log.debug("查找到最近光电:" + minDistanceCameraId + ",尝试引导"); |
| | | if (guideMap.get(minDistanceCameraId).equals(0)) { |
| | | log.debug("该光电未开启报警引导"); |
| | | return ""; |
| | | } |
| | |
| | | * @修改人和其它信息 |
| | | */ |
| | | @Override |
| | | public Map<String, Integer> selectAlarmLogsCount() { |
| | | public Map<String, Object> selectAlarmLogsCount() { |
| | | Map<String,Object> map=new HashMap<>(); |
| | | Map<String, Integer> countMap = new HashMap<>(); |
| | | String refreshTime = configService.selectConfigByKey("refreshTime"); |
| | | int count1001 = ardAlarmStealelecMapper.selectCountByStartTime(refreshTime); |
| | | countMap.put("1001", count1001); |
| | | int count1014 = ardAlarmTubeMapper.selectCountByStartTime(refreshTime); |
| | | countMap.put("1014 ", count1014); |
| | | return countMap; |
| | | int count1002 = ardAlarmCameraMapper.selectCountByAlarmTime(refreshTime); |
| | | countMap.put("1002", count1002); |
| | | int count1014 = ardAlarmTubeMapper.selectCountByAlarmTime(refreshTime); |
| | | countMap.put("1014", count1014); |
| | | map.put("20000",countMap); |
| | | return map; |
| | | } |
| | | |
| | | @Override |
| | | public Object selectAlarmList(Integer command, String beginTime, String endTime,Integer pageNum,Integer pageSize) { |
| | | Map<String, Object> params = new HashMap<>(); |
| | | params.put("beginTime", beginTime); |
| | | params.put("endTime", endTime); |
| | | switch (command) { |
| | | case 1001: |
| | | ArdAlarmStealelec aas = new ArdAlarmStealelec(); |
| | | aas.setParams(params); |
| | | aas.setPageNum(pageNum); |
| | | aas.setPageSize(pageSize); |
| | | List<ArdAlarmStealelec> ardAlarmStealelecs = ardAlarmStealelecMapper.selectArdAlarmStealelecList(aas); |
| | | return ardAlarmStealelecs; |
| | | case 1002: |
| | | ArdAlarmCamera aac = new ArdAlarmCamera(); |
| | | aac.setParams(params); |
| | | aac.setPageNum(pageNum); |
| | | aac.setPageSize(pageSize); |
| | | List<ArdAlarmCamera> ardAlarmCameras = ardAlarmCameraMapper.selectArdAlarmCameraList(aac); |
| | | return ardAlarmCameras; |
| | | case 1014: |
| | | ArdAlarmTube aat = new ArdAlarmTube(); |
| | | aat.setParams(params); |
| | | aat.setPageNum(pageNum); |
| | | aat.setPageSize(pageSize); |
| | | List<ArdAlarmTube> ardAlarmTubes = ardAlarmTubeMapper.selectArdAlarmTubeList(aat); |
| | | return ardAlarmTubes; |
| | | } |
| | | return null; |
| | | } |
| | | public static void main(String[] args) { |
| | | // 给定坐标 A |
| | | double Ax = 0; |
| | | double Ay = 0; |
| | | |
| | | // 给定角度(以度为单位) |
| | | double angle = 45; |
| | | |
| | | // 给定距离 |
| | | double distance = 1.414; |
| | | |
| | | // 将角度转换为弧度 |
| | | double radians = Math.toRadians(angle); |
| | | |
| | | // 计算 B 坐标 |
| | | double Bx = Ax + distance * Math.cos(radians); |
| | | double By = Ay + distance * Math.sin(radians); |
| | | |
| | | // 输出结果 |
| | | System.out.println("坐标 B: (" + Bx + ", " + By + ")"); |
| | | } |
| | | } |