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) { ard-work/src/main/java/com/ruoyi/device/camera/factory/CameraSDK.java
File was renamed from ard-work/src/main/java/com/ruoyi/device/camera/strategy/SdkStrategy.java @@ -1,4 +1,4 @@ package com.ruoyi.device.camera.strategy; package com.ruoyi.device.camera.factory; import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.camera.domain.CameraCmd; @@ -11,7 +11,7 @@ * 刘苏义 * 2023/11/7 10:48:52 */ public interface SdkStrategy { public interface CameraSDK { //同步登录 boolean login(ArdCameras cameras); @@ -85,7 +85,6 @@ //手动录像 String record(CameraCmd cmd); //引导目标位置 boolean guideTargetPosition(CameraCmd cmd); @@ -99,8 +98,8 @@ boolean recordStopNotToMinio(CameraCmd cmd); //获取相机通道信息 public List<ArdChannel> getCameraChannelList(ArdCameras camera); List<ArdChannel> getCameraChannelList(ArdCameras camera); //获取GIS信息数据 public Map<String, Object> getGisInfo(CameraCmd cmd); Map<String, Object> getGisInfo(CameraCmd cmd); } ard-work/src/main/java/com/ruoyi/device/camera/factory/CameraSDKFactory.java
New file @@ -0,0 +1,42 @@ package com.ruoyi.device.camera.factory; import com.ruoyi.utils.sdk.dhsdk.service.impl.DahuaSDK; import com.ruoyi.utils.sdk.hiksdk.service.impl.HikvisionSDK; import org.springframework.stereotype.Component; import javax.annotation.Resource; /** * @Description: SDK策略工厂类 * @ClassName: SdkStrategyFactory * @Author: 刘苏义 * @Date: 2023年11月07日10:53:00 **/ @Component public class CameraSDKFactory { @Resource private HikvisionSDK hikvisionSDK; @Resource private DahuaSDK dahuaSDK; /** * 根据传入的工厂参数创建相应的相机SDK实例 * * @param factory 工厂参数,用于确定要创建的相机SDK类型 * @return 创建的相机SDK实例 * @throws IllegalArgumentException 如果传入的工厂参数不支持 */ public CameraSDK createCameraSDK(String factory) { if (factory.equals("1")) { return hikvisionSDK; } else if (factory.equals("2")) { return dahuaSDK; } else { throw new IllegalArgumentException("Unsupported device: " + factory); } } } ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java
@@ -7,8 +7,8 @@ import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.camera.service.IArdCamerasService; import com.ruoyi.device.camera.service.ICameraSdkService; import com.ruoyi.device.camera.strategy.SdkStrategy; import com.ruoyi.device.camera.strategy.SdkStrategyFactory; import com.ruoyi.device.camera.factory.CameraSDK; import com.ruoyi.device.camera.factory.CameraSDKFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; @@ -34,7 +34,7 @@ @Resource private RedisCache redisCache; @Resource private SdkStrategyFactory sdkStrategyFactory; private CameraSDKFactory cameraSDKFactory; /** * 启动线程方法,用于执行初始化登录相机的逻辑 @@ -64,9 +64,9 @@ try { if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); //sdkStrategy.login(ardCamera);//同步登录 sdkStrategy.asyncLogin(ardCamera);//异步登录 cameraSDK.asyncLogin(ardCamera);//异步登录 result=true; } } catch (Exception ex) { @@ -84,8 +84,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); result = sdkStrategy.logout(cameraId); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.logout(cameraId); } } catch (Exception ex) { log.error("注销异常:" + ex.getMessage()); @@ -103,8 +103,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); onLine = sdkStrategy.isOnLine(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); onLine = cameraSDK.isOnLine(cmd); } return onLine; } catch (Exception ex) { @@ -123,8 +123,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); result = sdkStrategy.pTZControl(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.pTZControl(cmd); } return result; } catch (Exception ex) { @@ -142,8 +142,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); result = sdkStrategy.setFocusPos(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.setFocusPos(cmd); } } catch (Exception ex) { log.error("设置聚焦值异常:" + ex.getMessage()); @@ -161,8 +161,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); result = sdkStrategy.getFocusPos(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.getFocusPos(cmd); } } catch (Exception ex) { log.error("获取聚焦值异常:" + ex.getMessage()); @@ -180,8 +180,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); result = sdkStrategy.setPreset(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.setPreset(cmd); } } catch (Exception ex) { log.error("设置预置位异常:" + ex.getMessage()); @@ -199,8 +199,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); result = sdkStrategy.gotoPreset(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.gotoPreset(cmd); } } catch (Exception ex) { log.error("调用预置位异常:" + ex.getMessage()); @@ -217,8 +217,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); map = sdkStrategy.getVideoCompressionCfg(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); map = cameraSDK.getVideoCompressionCfg(cmd); } } catch (Exception ex) { log.error("获取码流压缩参数异常:" + ex.getMessage()); @@ -235,8 +235,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); result = sdkStrategy.controlDefogcfg(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.controlDefogcfg(cmd); } } catch (Exception ex) { log.error("操控透雾异常:" + ex.getMessage()); @@ -253,8 +253,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); result = sdkStrategy.controlInfrarecfg(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.controlInfrarecfg(cmd); } } catch (Exception ex) { log.error("操控红外异常:" + ex.getMessage()); @@ -271,8 +271,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); result = sdkStrategy.controlFocusMode(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.controlFocusMode(cmd); } } catch (Exception ex) { log.error("操控聚焦模式异常:" + ex.getMessage()); @@ -289,8 +289,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); result = sdkStrategy.getFocusMode(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.getFocusMode(cmd); } } catch (Exception ex) { log.error("获取聚焦模式异常:" + ex.getMessage()); @@ -307,8 +307,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); result = sdkStrategy.controlPTHeateRpwron(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.controlPTHeateRpwron(cmd); } } catch (Exception ex) { log.error("操控云台加热异常:" + ex.getMessage()); @@ -325,8 +325,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); result = sdkStrategy.controlCameraDeicing(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.controlCameraDeicing(cmd); } } catch (Exception ex) { log.error("操控云台加热异常:" + ex.getMessage()); @@ -343,8 +343,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); result = sdkStrategy.getPTZLockInfo(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.getPTZLockInfo(cmd); } } catch (Exception ex) { log.error("获取云台锁定信息异常:" + ex.getMessage()); @@ -370,8 +370,8 @@ if (ardCamera != null) { //获取摄像头工厂 String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); url = sdkStrategy.picCutCate(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); url = cameraSDK.picCutCate(cmd); } } catch (Exception ex) { log.error("抓图异常:" + ex.getMessage()); @@ -388,8 +388,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); map = sdkStrategy.getPtz(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); map = cameraSDK.getPtz(cmd); } } catch (Exception ex) { log.error("获取ptz异常:" + ex.getMessage()); @@ -406,8 +406,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); map = sdkStrategy.getPtzScope(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); map = cameraSDK.getPtzScope(cmd); } } catch (Exception ex) { log.error("获取ptz范围异常:" + ex.getMessage()); @@ -425,8 +425,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); result = sdkStrategy.setPtz(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.setPtz(cmd); } } catch (Exception ex) { log.error("设置ptz异常:" + ex.getMessage()); @@ -444,8 +444,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); result = sdkStrategy.setZeroPtz(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.setZeroPtz(cmd); } } catch (Exception ex) { log.error("设置零方位角异常:" + ex.getMessage()); @@ -463,8 +463,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); result = sdkStrategy.guideTargetPosition(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.guideTargetPosition(cmd); } } catch (Exception ex) { log.error("引导指向目标异常:" + ex.getMessage()); @@ -527,8 +527,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); url = sdkStrategy.record(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); url = cameraSDK.record(cmd); } } catch (Exception ex) { log.error("录像异常:" + ex.getMessage()); @@ -545,8 +545,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); result = sdkStrategy.recordStart(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.recordStart(cmd); } } catch (Exception ex) { log.error("开始录像异常:" + ex.getMessage()); @@ -563,8 +563,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); url = sdkStrategy.recordStopToMinio(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); url = cameraSDK.recordStopToMinio(cmd); } } catch (Exception ex) { log.error("停止录像异常:" + ex.getMessage()); @@ -581,8 +581,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); result = sdkStrategy.recordStopNotToMinio(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.recordStopNotToMinio(cmd); } } catch (Exception ex) { log.error("停止录像异常:" + ex.getMessage()); @@ -599,8 +599,8 @@ ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory); map = sdkStrategy.getGisInfo(cmd); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); map = cameraSDK.getGisInfo(cmd); } } catch (Exception ex) { log.error("获取相机架设参数异常:" + ex.getMessage()); ard-work/src/main/java/com/ruoyi/device/camera/strategy/SdkStrategyFactory.java
File was deleted ard-work/src/main/java/com/ruoyi/device/radar/controller/ArdEquipRadarController.java
@@ -117,8 +117,11 @@ return toAjax(ardEquipRadarService.deleteArdEquipRadarByIds(ids)); } /** * 角度引导信息反馈 */ @ApiOperation(value = "角度引导信息反馈") @PostMapping("/guideInfo") @PostMapping("/guideInfoBack") public AjaxResult guideInfoBack(@RequestBody GuideInfo guideInfo) { return radarClient.guideInfoBack(guideInfo); 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/inspect/service/impl/InspectionTaskManager.java
@@ -2,11 +2,9 @@ import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.camera.service.ICameraSdkService; import com.ruoyi.device.camera.service.impl.CameraSdkServiceImpl; import com.ruoyi.utils.sdk.common.GlobalVariable; import com.ruoyi.inspect.domain.ArdVideoInspectTask; import com.ruoyi.inspect.mapper.ArdVideoInspectTaskMapper; import com.ruoyi.utils.sdk.hiksdk.service.impl.HikSdkStrategy; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; 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:"); ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/controller/DhSdkController.java
@@ -8,7 +8,7 @@ import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.utils.sdk.dhsdk.service.impl.DhSdkStrategy; import com.ruoyi.utils.sdk.dhsdk.service.impl.DahuaSDK; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.stereotype.Controller; @@ -36,7 +36,7 @@ public class DhSdkController extends BaseController { @Resource private DhSdkStrategy sdk; private DahuaSDK sdk; @ApiOperation(value = "云台控制", notes = "Code:1-左上 2-上 3-右上 4-左 5-巡航 6-右 7-左下 8-下 9-右下 10-焦距变大 11-焦距变小\n" + ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
File was renamed from ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DhSdkStrategy.java @@ -2,11 +2,10 @@ import com.ruoyi.alarm.global.domain.GuidePriorityQueue; import com.ruoyi.alarm.global.domain.GuideTask; import com.ruoyi.common.annotation.SdkOperate; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.common.utils.file.MimeTypeUtils; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.device.camera.strategy.SdkStrategy; import com.ruoyi.device.camera.factory.CameraSDK; import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.camera.service.IArdCamerasService; @@ -25,7 +24,6 @@ import com.ruoyi.utils.sdk.dhsdk.module.*; import com.sun.jna.Pointer; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @@ -54,7 +52,7 @@ **/ @Slf4j(topic = "dhSdk") @Service public class DhSdkStrategy implements SdkStrategy { public class DahuaSDK implements CameraSDK { @Resource private IArdCamerasService ardCamerasService; ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/controller/HikSdkController.java
@@ -10,7 +10,7 @@ import com.ruoyi.device.camera.service.IArdCamerasService; import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.utils.sdk.hiksdk.service.impl.HikSdkStrategy; import com.ruoyi.utils.sdk.hiksdk.service.impl.HikvisionSDK; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.stereotype.Controller; @@ -35,7 +35,7 @@ public class HikSdkController extends BaseController { @Resource private HikSdkStrategy sdk; private HikvisionSDK sdk; @Resource private IArdCamerasService ardCamerasService; ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/lib/LoginResultCallBack.java
@@ -11,7 +11,7 @@ import com.ruoyi.utils.sdk.common.GlobalVariable; import com.ruoyi.media.domain.Vtdu; import com.ruoyi.media.service.IVtduService; import com.ruoyi.utils.sdk.hiksdk.service.impl.HikSdkStrategy; import com.ruoyi.utils.sdk.hiksdk.service.impl.HikvisionSDK; import com.sun.jna.Pointer; import lombok.extern.slf4j.Slf4j; import java.util.Comparator; @@ -38,7 +38,7 @@ public int invoke(int lUserID, int dwResult, HCNetSDK.NET_DVR_DEVICEINFO_V30 lpDeviceinfo, Pointer pUser) { IVtduService vtduService = SpringUtils.getBean(IVtduService.class); IArdChannelService ardChannelService = SpringUtils.getBean(IArdChannelService.class); HikSdkStrategy hikClientService = SpringUtils.getBean(HikSdkStrategy.class); HikvisionSDK hikClientService = SpringUtils.getBean(HikvisionSDK.class); IArdCamerasService ardCamerasService = SpringUtils.getBean(IArdCamerasService.class); if (GlobalVariable.loginMap.containsKey(camera.getId())) { GlobalVariable.loginMap.remove(camera.getId()); ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
File was renamed from ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikSdkStrategy.java @@ -2,12 +2,11 @@ import com.ruoyi.alarm.global.domain.GuidePriorityQueue; import com.ruoyi.alarm.global.domain.GuideTask; import com.ruoyi.common.annotation.SdkOperate; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.common.utils.file.MimeTypeUtils; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.device.camera.service.IArdCamerasService; import com.ruoyi.device.camera.strategy.SdkStrategy; import com.ruoyi.device.camera.factory.CameraSDK; import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.channel.domain.ArdChannel; @@ -46,7 +45,7 @@ **/ @Service @Slf4j(topic = "hikSdk") public class HikSdkStrategy implements SdkStrategy { public class HikvisionSDK implements CameraSDK { @Resource private IArdCamerasService ardCamerasService; @Resource ard-work/src/main/resources/mapper/device/ArdEquipRadarMapper.xml
@@ -194,11 +194,10 @@ #{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 <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> ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java
@@ -1,7 +1,10 @@ package com.ruoyi.web.controller.system; import java.util.List; import com.ruoyi.common.utils.MessageUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; @@ -28,8 +31,7 @@ */ @RestController @RequestMapping("/system/menu") public class SysMenuController extends BaseController { public class SysMenuController extends BaseController { @Autowired private ISysMenuService menuService; @@ -38,8 +40,7 @@ */ @PreAuthorize("@ss.hasPermi('system:menu:list')") @GetMapping("/list") public AjaxResult list(SysMenu menu) { public AjaxResult list(SysMenu menu) { List<SysMenu> menus = menuService.selectMenuList(menu, getUserId()); return success(menus); } @@ -49,8 +50,7 @@ */ @PreAuthorize("@ss.hasPermi('system:menu:query')") @GetMapping(value = "/{menuId}") public AjaxResult getInfo(@PathVariable Long menuId) { public AjaxResult getInfo(@PathVariable Long menuId) { return success(menuService.selectMenuById(menuId)); } @@ -58,8 +58,7 @@ * 获取菜单下拉树列表 */ @GetMapping("/treeselect") public AjaxResult treeselect(SysMenu menu) { public AjaxResult treeselect(SysMenu menu) { List<SysMenu> menus = menuService.selectMenuList(menu, getUserId()); return success(menuService.buildMenuTreeSelect(menus)); } @@ -68,8 +67,7 @@ * 加载对应角色菜单列表树 */ @GetMapping(value = "/roleMenuTreeselect/{roleId}") public AjaxResult roleMenuTreeselect(@PathVariable("roleId") Long roleId) { public AjaxResult roleMenuTreeselect(@PathVariable("roleId") Long roleId) { List<SysMenu> menus = menuService.selectMenuList(getUserId()); AjaxResult ajax = AjaxResult.success(); ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId)); @@ -83,14 +81,10 @@ @PreAuthorize("@ss.hasPermi('system:menu:add')") @Log(title = "菜单管理", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@Validated @RequestBody SysMenu menu) { if (UserConstants.NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu))) { public AjaxResult add(@Validated @RequestBody SysMenu menu) { if (UserConstants.NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu))) { return error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); } else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) { } else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) { return error("新增菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头"); } menu.setCreateBy(getUsername()); @@ -103,18 +97,12 @@ @PreAuthorize("@ss.hasPermi('system:menu:edit')") @Log(title = "菜单管理", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@Validated @RequestBody SysMenu menu) { if (UserConstants.NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu))) { public AjaxResult edit(@Validated @RequestBody SysMenu menu) { if (UserConstants.NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu))) { return error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); } else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) { } else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) { return error("修改菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头"); } else if (menu.getMenuId().equals(menu.getParentId())) { } else if (menu.getMenuId().equals(menu.getParentId())) { return error("修改菜单'" + menu.getMenuName() + "'失败,上级菜单不能选择自己"); } menu.setUpdateBy(getUsername()); @@ -127,14 +115,11 @@ @PreAuthorize("@ss.hasPermi('system:menu:remove')") @Log(title = "菜单管理", businessType = BusinessType.DELETE) @DeleteMapping("/{menuId}") public AjaxResult remove(@PathVariable("menuId") Long menuId) { if (menuService.hasChildByMenuId(menuId)) { public AjaxResult remove(@PathVariable("menuId") Long menuId) { if (menuService.hasChildByMenuId(menuId)) { return warn("存在子菜单,不允许删除"); } if (menuService.checkMenuExistRole(menuId)) { if (menuService.checkMenuExistRole(menuId)) { return warn("菜单已分配,不允许删除"); } return toAjax(menuService.deleteMenuById(menuId)); ruoyi-admin/src/main/resources/i18n/messages_en_US.properties
@@ -39,3 +39,4 @@ ##\u7EDF\u4E00\u8FD4\u56DE operation.failed=Operation failed operation.success=Operation successful ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SyncTask.java
@@ -10,8 +10,8 @@ import com.ruoyi.media.service.IVtduService; import com.ruoyi.rongcloud.service.RongCloudService; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.utils.sdk.dhsdk.service.impl.DhSdkStrategy; import com.ruoyi.utils.sdk.hiksdk.service.impl.HikSdkStrategy; import com.ruoyi.utils.sdk.dhsdk.service.impl.DahuaSDK; import com.ruoyi.utils.sdk.hiksdk.service.impl.HikvisionSDK; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -33,9 +33,9 @@ @Resource IArdCamerasService iArdCamerasService; @Resource HikSdkStrategy hikClientService; HikvisionSDK hikClientService; @Resource DhSdkStrategy dhClientService; DahuaSDK dhClientService; @Resource IVtduService vtduService; @Resource