From 9dbf954f33e02e65621b4afdc55e8f642c6a6095 Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期二, 27 六月 2023 17:15:28 +0800 Subject: [PATCH] ptz推送websocket增加操作过期时间 --- ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java | 135 +++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 129 insertions(+), 6 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java index 26b741a..1bf8e38 100644 --- a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java @@ -1,6 +1,8 @@ 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; @@ -14,6 +16,7 @@ import com.ruoyi.alarmpoints.tube.mapper.ArdTubesMapper; import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell; import com.ruoyi.alarmpoints.well.mapper.ArdAlarmpointsWellMapper; +import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.utils.tools.ArdTool; @@ -32,8 +35,15 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.math.BigInteger; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -52,6 +62,8 @@ @Resource ArdAlarmTubeMapper ardAlarmTubeMapper; @Resource + ArdAlarmCameraMapper ardAlarmCameraMapper; + @Resource ArdTubesMapper ardTubesMapper; @Resource ArdAlarmpointsWellMapper ardAlarmpointsWellMapper; @@ -63,6 +75,9 @@ private ArdCamerasMapper ardCamerasMapper; @Resource private IHikClientService hikClientService; + @Resource + private RedisCache redisCache; + /** * @鎻忚堪 鎸夋潯浠舵煡璇㈡姤璀� * @鍙傛暟 [condition] @@ -91,6 +106,21 @@ 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() @@ -111,6 +141,7 @@ return null; } } + /** * @鎻忚堪 鎸夋潯浠舵洿鏂版煡鐪嬫椂闂� * @鍙傛暟 [condition] @@ -143,6 +174,7 @@ return null; } } + /** * @鎻忚堪 寮傛澶勭悊鎺ユ敹鐨勬姤璀� * @鍙傛暟 [topic, message] @@ -229,6 +261,29 @@ } //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()); @@ -246,25 +301,35 @@ private String guideCamera(CameraCmd cmd) { String url = ""; try { + String dayNightTime = redisCache.getCacheObject("sys_config:dayNightTime"); //鑾峰彇鎵�鏈夊ぇ鍏夌數 List<ArdCameras> ardCamerasList = ardCamerasMapper.selectArdCamerasList(new ArdCameras("1")); //缁熻鎵�鏈夊ぇ鍏夌數鍙鑼冨洿鍐呬笌鎶ヨ鐐圭殑璺濈 Map<String, Double> distanceMap = new HashMap<>(); + Map<String, Integer> guideMap = new HashMap<>(); for (ArdCameras camera : ardCamerasList) { double[] camPosition = new double[]{camera.getLongitude(), camera.getLatitude()}; double distance = GisTool.getDistance(cmd.getTargetPosition(), camPosition); if (distance != 0.0 && distance <= camera.getCamMaxVisibleDistance()) { distanceMap.put(camera.getId(), distance); + if (StringUtils.isNull(camera.getCamAlarmGuideEnable())) { + camera.setCamAlarmGuideEnable(0); + } + guideMap.put(camera.getId(), camera.getCamAlarmGuideEnable()); } } if (distanceMap.size() > 0) { log.debug("灏濊瘯鏌ユ壘鏈�杩戝厜鐢�"); //鑾峰彇璺濈瀛楀吀涓渶杩戠殑涓�涓浉鏈篒D String minDistanceCameraId = ArdTool.getKeyByMinValue(distanceMap); - log.debug("鏌ユ壘鍒版渶杩戝厜鐢�:"+minDistanceCameraId+"锛屽皾璇曞紩瀵�"); + log.debug("鏌ユ壘鍒版渶杩戝厜鐢�:" + minDistanceCameraId + "锛屽皾璇曞紩瀵�"); + if (guideMap.get(minDistanceCameraId).equals(0)) { + log.debug("璇ュ厜鐢垫湭寮�鍚姤璀﹀紩瀵�"); + return ""; + } //寮曞鍏夌數 cmd.setCameraId(minDistanceCameraId); - cmd.setChannelNum(1); + cmd.setChannelNum(ArdTool.getChannelBydayNightTime(dayNightTime)); boolean guideRes = hikClientService.guideTargetPosition(cmd); if (guideRes) { log.debug("寮曞鎴愬姛锛屽皾璇曞綍鍍�"); @@ -300,13 +365,71 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 */ @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 + ")"); + } + } -- Gitblit v1.9.3