ard-work/src/main/java/com/ruoyi/alarm/config/AsyncConfiguration.java
@@ -28,6 +28,7 @@ Integer keepAliveSeconds; @Value("${ThreadPoolTask.queueCapacity}") Integer queueCapacity; @Bean("alarmExecutor") public Executor alarmExecutor(){ ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java
@@ -64,11 +64,11 @@ private IArdCamerasService ardCamerasService; //初始登录所有相机 @PostConstruct public void initLoginAll() { cameraSdkService.loginAll(); } // //初始登录所有相机 // @PostConstruct // public void initLoginAll() { // cameraSdkService.loginAll(); // } @RequestMapping("/preview") private String preview() { ard-work/src/main/java/com/ruoyi/device/camera/service/impl/AsyncLogin.java
对比新文件 @@ -0,0 +1,36 @@ package com.ruoyi.device.camera.service.impl; import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.dhsdk.service.IDhClientService; import com.ruoyi.device.hiksdk.service.IHikClientService; import org.hibernate.validator.internal.util.stereotypes.Lazy; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import javax.annotation.Resource; /** * @ClassName test * @Description: * @Author 刘苏义 * @Date 2023/10/23 21:39 * @Version 1.0 */ @Service public class AsyncLogin { @Resource IHikClientService hikClientService; @Resource IDhClientService dhClientService; @Async public void hikLogin(ArdCameras ardCameras) { hikClientService.login(ardCameras); } @Async public void dhLogin(ArdCameras ardCameras) { dhClientService.login(ardCameras); } } ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java
@@ -3,29 +3,22 @@ import com.ruoyi.common.annotation.SdkOperate; import com.ruoyi.common.constant.CacheConstants; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.device.camera.domain.ArdCameras; 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.channel.domain.ArdChannel; import com.ruoyi.device.dhsdk.lib.NetSDKLib; import com.ruoyi.device.dhsdk.module.RealPlayModule; import com.ruoyi.device.dhsdk.service.IDhClientService; import com.ruoyi.device.hiksdk.common.GlobalVariable; import com.ruoyi.device.hiksdk.service.IHikClientService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.SmartInitializingSingleton; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import static com.ruoyi.device.dhsdk.lib.ToolKits.getErrorCodePrint; import static com.ruoyi.device.dhsdk.module.LoginModule.netsdk; import static com.ruoyi.device.hiksdk.sdk.HCNetSDK.NET_DVR_CHECK_USER_STATUS; /** @@ -45,12 +38,27 @@ IDhClientService dhClientService; @Resource RedisCache redisCache; @Resource AsyncLogin asyncLogin; //初始化SDK @PostConstruct @Override public void loginAll() { hikClientService.loginAll();//登录全部海康相机 dhClientService.loginAll();//登录全部大华相机 try { List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(new ArdCameras()); for (ArdCameras camera : ardCameras) { if ("1".equals(camera.getFactory())) { asyncLogin.hikLogin(camera); } else if ("2".equals(camera.getFactory())) { asyncLogin.dhLogin(camera); } } } catch (Exception ex) { log.error("初始化登录相机异常:" + ex.getMessage()); } } //登录 @@ -683,4 +691,6 @@ } return map; } } ard-work/src/main/java/com/ruoyi/device/dhsdk/service/IDhClientService.java
@@ -13,12 +13,8 @@ */ public interface IDhClientService { //登录 Boolean login(ArdCameras ardCamera); //登录所有相机 void loginAll(); //注销 Boolean logout(String cameraId); ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java
@@ -18,6 +18,7 @@ import com.ruoyi.device.dhsdk.module.*; import com.ruoyi.device.dhsdk.service.IDhClientService; import com.ruoyi.device.hiksdk.common.GlobalVariable; import com.ruoyi.device.camera.service.impl.AsyncLogin; import com.ruoyi.media.domain.Vtdu; import com.ruoyi.media.service.IVtduService; import com.ruoyi.utils.gis.GisUtil; @@ -25,7 +26,6 @@ import com.sun.jna.Pointer; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -59,31 +59,11 @@ @Value("${minio.endpoint}") private String minioEndPoint; // 设备断线通知回调 private static DisConnect disConnect = new DisConnect(); // 网络连接恢复 private static HaveReConnect haveReConnect = new HaveReConnect(); /** * 登录所有相机 * 刘苏义 * 2023/10/17 8:28:13 */ @Override public void loginAll() { try { ArdCameras ardCamera = new ArdCameras(); ardCamera.setFactory("2");//获取大华相机 List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(ardCamera); for (ArdCameras camera : ardCameras) { Thread.sleep(500); //登录 login(camera); } } catch (Exception ex) { log.error("初始化登录相机异常:" + ex.getMessage()); } } /** @@ -207,6 +187,7 @@ * 2023/10/17 8:28:13 */ @Override @SdkOperate public boolean pTZControl(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); @@ -358,7 +339,6 @@ * @修改人和其它信息 注意俯仰角度负值需要加上360得到的正值进行设置 */ @Override @SdkOperate public boolean setZeroPtz(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); @@ -382,7 +362,6 @@ * @修改人和其它信息 */ @Override @SdkOperate public String picCutCate(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java
@@ -22,9 +22,6 @@ //异步登录 void asyncLogin(ArdCameras cameras); //登录所有相机 void loginAll(); //注销 boolean logout(String cameraId); ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
@@ -10,11 +10,10 @@ import com.ruoyi.device.camera.service.IArdCamerasService; import com.ruoyi.device.channel.domain.ArdChannel; import com.ruoyi.device.channel.service.IArdChannelService; import com.ruoyi.device.dhsdk.lib.LibraryLoad; import com.ruoyi.device.dhsdk.lib.NetSDKLib; import com.ruoyi.device.hiksdk.common.GlobalVariable; import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.hiksdk.sdk.ExceptionCallBack; import com.ruoyi.device.camera.service.impl.AsyncLogin; import com.ruoyi.media.domain.Vtdu; import com.ruoyi.media.service.IVtduService; import com.ruoyi.utils.gis.GisUtil; @@ -22,13 +21,11 @@ import com.ruoyi.device.hiksdk.service.IHikClientService; import com.ruoyi.device.hiksdk.sdk.LoginResultCallBack; import com.ruoyi.utils.minio.MinioUtil; import com.sun.jna.Native; import com.sun.jna.NativeLong; import com.sun.jna.Platform; import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import java.util.Base64; @@ -40,7 +37,6 @@ import java.util.*; import java.util.concurrent.PriorityBlockingQueue; import static com.ruoyi.device.hiksdk.common.GlobalVariable.loginCameraMap; import static com.ruoyi.device.hiksdk.sdk.HCNetSDK.*; /** @@ -243,28 +239,6 @@ } /** * @描述 登录所有相机 * @参数 [] * @返回值 void * @创建人 刘苏义 * @创建时间 2023/2/3 10:10 * @修改人和其它信息 */ @Override public void loginAll() { try { ArdCameras ardCamera = new ArdCameras(); ardCamera.setFactory("1"); List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(ardCamera); for (ArdCameras camera : ardCameras) { //登录 login(camera); } } catch (Exception ex) { log.error("初始化登录相机异常:" + ex.getMessage()); } } /** * @描述 注销登录 @@ -318,6 +292,7 @@ * @修改人和其它信息 */ @Override @SdkOperate public boolean pTZControlWithSpeed(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); @@ -1068,7 +1043,6 @@ * @修改人和其它信息 */ @Override @SdkOperate public boolean controlDefogcfg(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); @@ -1114,7 +1088,6 @@ * @修改人和其它信息 */ @Override @SdkOperate public boolean controlInfrarecfg(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); @@ -1162,7 +1135,6 @@ * @修改人和其它信息 */ @Override @SdkOperate public boolean controlFocusMode(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); @@ -1235,7 +1207,6 @@ * @修改人和其它信息 */ @Override @SdkOperate public boolean controlPTHeateRpwron(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); @@ -1268,7 +1239,6 @@ * @修改人和其它信息 */ @Override @SdkOperate public boolean controlCameraDeicing(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); @@ -1349,7 +1319,6 @@ * @修改人和其它信息 */ @Override @SdkOperate public String picCutCate(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo();