liusuyi
2025-11-21 e4aeeaf6fc665faa0f1e9e71c60609d62a9b093f
ard-device/src/main/java/com/ard/device/component/sdk/hik/service/impl/HikVisionSDK.java
@@ -1,13 +1,10 @@
package com.ard.device.component.sdk.hik.service.impl;
import com.ard.common.core.domain.AjaxResult;
import com.ard.common.utils.StringUtils;
import com.ard.device.camera.domain.ArdCamera;
import com.ard.device.camera.service.IArdCameraService;
import com.ard.device.channel.domain.ArdChannel;
import com.ard.device.camera.domain.CameraCmd;
import com.ard.device.channel.domain.VideoCompressionCfg;
import com.ard.device.channel.service.IArdChannelService;
import com.ard.device.component.sdk.common.GlobalVariable;
import com.ard.device.component.sdk.common.ResolutionEnum;
import com.ard.device.component.sdk.common.SdkErrorCodeEnum;
@@ -76,7 +73,7 @@
     * 登录
     */
    @Override
    public AjaxResult login(ArdCamera camera) {
    public void login(ArdCamera camera) {
        try {
            String m_sDeviceIP = camera.getIp();
            String m_sUsername = camera.getUsername();
@@ -109,7 +106,7 @@
                eventPublisher.publishEvent(loginEvent);
                log.warn("设备[{}:{}]登录失败: {}({})", camera.getIp(), camera.getPort(),
                        SdkErrorCodeEnum.getDescByCode(errorCode), errorCode);
                return AjaxResult.warn("设备[" + camera.getIp() + ":" + camera.getPort() + "]登录失败: " + SdkErrorCodeEnum.getDescByCode(errorCode) + "(" + errorCode + ")");
                return;
            }
            log.info("Login Success 【 {}:{} 】", camera.getIp(), camera.getPort());
@@ -119,7 +116,7 @@
            camera.setState("1");
            int chanNum = m_strDeviceInfo.struDeviceV30.byChanNum;
            int startChan = m_strDeviceInfo.struDeviceV30.byStartDChan + 1;
            if (camera.getType().equals("2")) {
            if ("2".equals(camera.getType())) {
                chanNum = m_strDeviceInfo.struDeviceV30.byIPChanNum;
                startChan = m_strDeviceInfo.struDeviceV30.byStartDChan;
            }
@@ -132,10 +129,8 @@
            }
            LoginEvent loginEvent = new LoginEvent(camera);
            eventPublisher.publishEvent(loginEvent);
            return AjaxResult.success("设备登录成功");
        } catch (Exception ex) {
            log.error("注册设备异常", ex);
            return AjaxResult.error("注册设备异常" + ex.getMessage());
        }
    }
@@ -143,16 +138,15 @@
     * 注销
     */
    @Override
    public boolean logout(String cameraId) {
    public void logout(String cameraId) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return false;
            return;
        }
        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
        boolean b = hCNetSDK.NET_DVR_Logout(userId);
        if (b) {
            GlobalVariable.loginMap.remove(cameraId);
        }
        return b;
    }
    @Override
@@ -314,7 +308,7 @@
            }
            //分辨率
            String resolution =
                    ResolutionEnum.fromCode(compressionCfg.struNormHighRecordPara.byResolution).getResolution();
                    Objects.requireNonNull(ResolutionEnum.fromCode(compressionCfg.struNormHighRecordPara.byResolution)).getResolution();
            //帧率
            String nFrameRate;
            switch (compressionCfg.struNormHighRecordPara.dwVideoFrameRate) {
@@ -401,6 +395,7 @@
    /**
     * 获取通道
     */
    @Override
    public List<ArdChannel> getChannels(ArdCamera camera) {
        //获取通道
        List<ArdChannel> channelList = new ArrayList<>();
@@ -443,7 +438,7 @@
                        channel.setVideoCode(videoCompressionCfg.getVideoEncType());
                    }
                    //NVR过滤离线通道
                    if (camera.getType().equals("3") || camera.getType().equals("2")) {
                    if ("3".equals(camera.getType()) || "2".equals(camera.getType())) {
                        if (ipParaCfg.struStreamMode[iChanNo].uGetStream.struChanInfo.byEnable != 1) {
                            continue;
                        }
@@ -488,12 +483,11 @@
                        return false;
                    }
                    System.out.println("✅ 尝试加载动态库: " + strDllPath);
                    System.out.println("⏳ 正在加载 HCNetSDK: " + strDllPath);
                    hCNetSDK = Native.loadLibrary(strDllPath, HCNetSDK.class);
                    System.out.println("✅ SDK 加载成功!");
                } catch (Exception ex) {
                    System.err.println("❌ SDK 加载失败: " + strDllPath + "\n异常信息: " + ex.getMessage());
                    ex.printStackTrace();
                    return false;
                }
            }