liusuyi
2023-10-23 3591fc47eaa3e301252dc06d257d46bd3a45e120
相机sdk异步登录
已添加1个文件
已修改7个文件
148 ■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/alarm/config/AsyncConfiguration.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/device/camera/service/impl/AsyncLogin.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/device/dhsdk/service/IDhClientService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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();