zhangnaisong
2024-08-06 4dbd2e0a473ef33ecf8a7200f62b61d4dbd87f25
ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
@@ -7,45 +7,38 @@
import com.ruoyi.common.config.ARDConfig;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.common.utils.file.MimeTypeUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.device.camera.factory.CameraSDK;
import com.ruoyi.device.camera.domain.ArdCameras;
import com.ruoyi.device.camera.domain.CameraCmd;
import com.ruoyi.device.camera.factory.CameraSDK;
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.channel.service.IArdChannelService;
import com.ruoyi.media.domain.Vtdu;
import com.ruoyi.media.service.IVtduService;
import com.ruoyi.utils.gis.GisUtil;
import com.ruoyi.utils.minio.MinioUtil;
import com.ruoyi.utils.sdk.common.GlobalVariable;
import com.ruoyi.utils.sdk.common.SdkErrorCodeEnum;
import com.ruoyi.utils.sdk.dhsdk.common.ErrorCode;
import com.ruoyi.utils.sdk.dhsdk.lib.NetSDKLib;
import com.ruoyi.utils.sdk.dhsdk.lib.ToolKits;
import com.ruoyi.utils.sdk.dhsdk.lib.enumeration.EM_NEW_CONFIG;
import com.ruoyi.utils.sdk.dhsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE;
import com.ruoyi.utils.sdk.dhsdk.lib.structure.CFG_INFRARED_INFO;
import com.ruoyi.utils.sdk.dhsdk.lib.structure.CFG_VIDEO_IN_FOCUS;
import com.ruoyi.utils.sdk.dhsdk.lib.structure.DH_OUT_PTZ_VIEW_RANGE_STATUS;
import com.ruoyi.utils.sdk.dhsdk.module.*;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.nio.ByteBuffer;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.text.DecimalFormat;
@@ -53,7 +46,6 @@
import java.util.concurrent.PriorityBlockingQueue;
import static com.ruoyi.utils.sdk.dhsdk.lib.NetSDKLib.*;
import static com.ruoyi.utils.sdk.dhsdk.lib.NetSDKLib.NET_DEVSTATE_PTZ_VIEW_RANGE;
import static com.ruoyi.utils.sdk.dhsdk.lib.NetSDKLib.NET_PTZ_ControlType.NET_PTZ_POINT_MOVE_CONTROL;
import static com.ruoyi.utils.sdk.dhsdk.lib.NetSDKLib.NET_PTZ_ControlType.NET_PTZ_POINT_SET_CONTROL;
import static com.ruoyi.utils.sdk.dhsdk.lib.ToolKits.getErrorCodePrint;
@@ -132,6 +124,8 @@
            ardCamerasService.updateArdCameras(camera);
            //创建引导队列
            createGuideQueue(camera);
            //加入已登录设备集合
            GlobalVariable.loginedSet.add(camera);
            return AjaxResult.success("设备登录成功");
        } catch (Exception ex) {
            log.error("设备登录异常:" + ex.getMessage());
@@ -140,7 +134,7 @@
    }
    @Override
    @Async("loginExecutor")
    @Async("globalExecutor")
    public AjaxResult asyncLogin(ArdCameras camera) {
        try {
            LoginModule.init(disConnect, haveReConnect);
@@ -160,7 +154,7 @@
            camera.setState("1");
            camera.setChanNum(m_stDeviceInfo.byChanNum);
            camera.setStartChan(1);
            camera.setLoginId((Long) loginId.longValue());
            camera.setLoginId(loginId.longValue());
            ardCamerasService.updateArdCameras(camera);
            GlobalVariable.loginMap.put(camera.getId(), loginId);
@@ -178,6 +172,8 @@
            ardCamerasService.updateArdCameras(camera);
            //创建引导队列
            createGuideQueue(camera);
            //加入已登录设备集合
            GlobalVariable.loginedSet.add(camera);
            return AjaxResult.success("登录成功");
        } catch (Exception ex) {
            log.error("登录异常:" + ex.getMessage());
@@ -208,7 +204,7 @@
    //获取通道
    public List<ArdChannel> getChannels(ArdCameras camera) {
        if (camera.getLoginId().equals(-1)) {
        if (camera.getLoginId() < 0) {
            return new ArrayList<>();
        }
        LLong loginId = new LLong(camera.getLoginId());