‘liusuyi’
2023-08-10 ad89fdba09b8f0596ed41c5b31de6f34fe1ce620
src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java
@@ -3,7 +3,8 @@
import com.ard.alarm.camera.domain.ArdCameras;
import com.ard.alarm.camera.domain.CameraCmd;
import com.ard.alarm.external.domain.ArdEquipExternal;
import com.ard.utils.ByteUtils;
import com.ard.config.MinioClientSingleton;
import com.ard.utils.other.ByteUtils;
import com.ard.utils.hiksdk.common.GlobalVariable;
import com.ard.utils.hiksdk.domain.DeviceInfo;
import com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK;
@@ -13,13 +14,10 @@
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import java.io.*;
import java.nio.ByteBuffer;
import java.util.*;
/**
@@ -173,6 +171,7 @@
            log.info("登录异常:" + errorCode);
        }
    }
    /**
     * @描述 登录所有相机
     * @参数 []
@@ -185,7 +184,7 @@
        try {
            for (ArdCameras camera : ardCameras) {
                Thread.sleep(100);
                DeviceInfo info=new DeviceInfo();
                DeviceInfo info = new DeviceInfo();
                info.setDeviceId(camera.getId());
                info.setIp(camera.getIp());
                info.setPort(camera.getPort());
@@ -199,6 +198,7 @@
            log.error("初始化登录相机异常:" + ex.getMessage());
        }
    }
    /**
     * @描述 登录所有报警主机
     * @参数 []
@@ -211,7 +211,7 @@
        try {
            for (ArdEquipExternal alarmHost : ardEquipExternals) {
                Thread.sleep(100);
                DeviceInfo info=new DeviceInfo();
                DeviceInfo info = new DeviceInfo();
                info.setDeviceId(alarmHost.getId());
                info.setIp(alarmHost.getIp());
                info.setPort(alarmHost.getPort());
@@ -227,6 +227,33 @@
    }
    /**
     * @描述 登录所有门禁主机
     * @参数 []
     * @返回值 void
     * @创建人 刘苏义
     * @创建时间 2023/2/3 10:10
     * @修改人和其它信息
     */
    public static void loginAllAccessControlHost(List<ArdEquipExternal> ardEquipExternals) {
        try {
            for (ArdEquipExternal accessControlHost : ardEquipExternals) {
                Thread.sleep(100);
                DeviceInfo info = new DeviceInfo();
                info.setDeviceId(accessControlHost.getId());
                info.setIp(accessControlHost.getIp());
                info.setPort(accessControlHost.getPort());
                info.setUsername(accessControlHost.getUsername());
                info.setPassword(accessControlHost.getPassword());
                login(info);
                String ip = accessControlHost.getIp();
                GlobalVariable.alarmHostMap.put(ip, accessControlHost);
            }
        } catch (Exception ex) {
            log.error("初始化报警主机异常:" + ex.getMessage());
        }
    }
    /**
     * @描述 注销登录
     * @参数 [dvrLogin]
     * @返回值 java.lang.Integer
@@ -234,7 +261,6 @@
     * @创建时间 2023/1/17 16:12
     * @修改人和其它信息
     */
    public static boolean loginOut(String cameraId) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return false;
@@ -252,7 +278,6 @@
     *
     * @param cmd
     */
    public static boolean isOnLine(CameraCmd cmd) {
        String cameraId = cmd.getCameraId();
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
@@ -269,10 +294,10 @@
     * @param lUserID      唯一标识符
     * @param lAlarmHandle 报警处理器
     */
    public static int setupAlarmChan(int lUserID, int lAlarmHandle) {
    public static int setupAlarmChan(String deviceIpPort, int lUserID, int lAlarmHandle) {
        // 根据设备注册生成的lUserID建立布防的上传通道,即数据的上传通道
        if (lUserID == -1) {
            log.info("请先注册");
            log.error("请先注册");
            return lUserID;
        }
        if (lAlarmHandle < 0) {
@@ -280,7 +305,7 @@
            if (fMSFCallBack_V31 == null) {
                fMSFCallBack_V31 = new FMSGCallBack();
                if (!hCNetSDK.NET_DVR_SetDVRMessageCallBack_V50(0, fMSFCallBack_V31, null)) {
                    log.info("设置回调函数失败!错误码==========》" + hCNetSDK.NET_DVR_GetLastError());
                    log.error("设置回调函数失败!错误码==========》" + hCNetSDK.NET_DVR_GetLastError());
                }
            }
            // 这里需要对设备进行相应的参数设置,不设置或设置错误都会导致设备注册失败
@@ -296,12 +321,12 @@
            // 布防成功,返回布防成功的数据传输通道号
            lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo);
            if (lAlarmHandle == -1) {
                log.error("设备布防失败,错误码==========》" + hCNetSDK.NET_DVR_GetLastError());
                log.error("设备【" + deviceIpPort + "】布防失败,错误码==========》" + hCNetSDK.NET_DVR_GetLastError());
                // 注销 释放sdk资源
                logout(lUserID);
                return lAlarmHandle;
            } else {
                log.info("设备布防成功");
                log.debug("设备【" + deviceIpPort + "】布防成功");
                return lAlarmHandle;
            }
        }
@@ -361,13 +386,14 @@
            InputStream input = new ByteArrayInputStream(array);
            String url = "";
            try {
                boolean b = MinioUtils.uploadObject(cmd.getBucketName(), cmd.getObjectName(), input, input.available(), ContentType);
                boolean b = MinioUtils.uploadObject(cmd.getBucketName(), cmd.getObjectName(), input, ContentType);
                if (b) {
                    url = MinioUtils.getBucketObjectUrl(cmd.getBucketName(), cmd.getObjectName());
                    url = url.indexOf('?') != -1 ? url.substring(0, url.indexOf('?')) : url;
                    // url = MinioUtils.getBucketObjectUrl(cmd.getBucketName(), cmd.getObjectName());
                    // url = url.indexOf('?') != -1 ? url.substring(0, url.indexOf('?')) : url;
                    url = MinioClientSingleton.domainUrl + "/" + cmd.getBucketName() + "/" + cmd.getObjectName();
                    log.debug("上传文件成功!" + url);
                }
            } catch (IOException ex) {
            } catch (Exception ex) {
                log.error("上传文件异常:" + ex.getMessage());
            }
            return url;
@@ -385,7 +411,7 @@
     * 2023/7/6 10:48
     */
    public static String getDefenseZoneName(CameraCmd cmd) {
        String name="";
        String name = "";
        try {
            String cameraId = cmd.getCameraId();
            Integer channelNum = cmd.getWZoneIndex();//通道号==防区号
@@ -411,6 +437,5 @@
        }
        return name;
    }
}