aijinhui
2023-12-14 aa0613a35f8d0fd1bd125470cfc7cec91e2a1e86
ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
@@ -57,6 +57,7 @@
    @Resource
    private QueueHandler queueHandler;
    public Object _lock=new Object();
    public static HCNetSDK hCNetSDK = HCNetSDK.hCNetSDK;
    private static HCNetSDK.FExceptionCallBack fExceptionCallBack;//异常回调
@@ -180,7 +181,6 @@
    @Async("loginExecutor")
    public void asyncLogin(ArdCameras camera) {
        try {
            Thread.sleep(100);
            // 初始化
            if (!hCNetSDK.NET_DVR_Init()) {
                log.error("SDK初始化失败");
@@ -230,17 +230,18 @@
            }
            log.debug("Login Success 【 " + camera.getIp() + ":" + camera.getPort() + " 】");
            if (fExceptionCallBack == null) {
                fExceptionCallBack = new ExceptionCallBack();//异常回调
                //设置异常回调函数(可在回调函数中获取设备上下线状态等)
                if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) {
                    log.debug("Set fExceptionCallBack function fail");
                    return;
                } else {
                    log.debug("Set fExceptionCallBack function successfully!");
            synchronized (_lock) {
                if (fExceptionCallBack == null) {
                    fExceptionCallBack = new ExceptionCallBack();//异常回调
                    //设置异常回调函数(可在回调函数中获取设备上下线状态等)
                    if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) {
                        log.debug("Set fExceptionCallBack function fail");
                        return;
                    } else {
                        log.debug("Set fExceptionCallBack function successfully!");
                    }
                }
            }
            if (GlobalVariable.loginMap.containsKey(camera.getId())) {
                GlobalVariable.loginMap.remove(camera.getId());
            }
@@ -269,6 +270,15 @@
            //添加到流媒体
            addVtdu(camera);
            //创建引导队列
            createGuideQueue(camera);
        } catch (Exception ex) {
            log.error("注册设备异常", ex);
        }
    }
    //创建引导队列
    private void createGuideQueue(ArdCameras camera) {
        if(camera.getCamAlarmGuideEnable()!=null) {
            if (camera.getCamAlarmGuideEnable() == 1) {
                if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) {
                    Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator();
@@ -278,11 +288,8 @@
                    queueHandler.process(camera.getId());
                }
            }
        } catch (Exception ex) {
            log.error("注册设备异常", ex);
        }
    }
    //添加到流媒体
    private void addVtdu(ArdCameras camera) {
        try {