aijinhui
2023-10-24 8a87e4226aa802d6a0e3566c66824fedf68e77da
ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java
@@ -3,29 +3,23 @@
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.common.utils.Threads;
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,19 +39,29 @@
    IDhClientService dhClientService;
    @Resource
    RedisCache redisCache;
    @Resource
    AsyncLogin asyncLogin;
    //初始化SDK
    @PostConstruct
    @Override
    public void initSDK() {
        //初始化加载sdk库文件
        boolean initHIK = hikClientService.init();
        if (initHIK) {
            hikClientService.loginAll();//登录全部海康相机
        }
        Boolean initDH = dhClientService.init();
        if (initDH) {
            dhClientService.loginAll();//登录全部大华相机
    public void 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());
        }
    }
    //登录
    @Override
    public Boolean login(ArdCameras ardCamera) {
@@ -66,10 +70,11 @@
            if (ardCamera != null) {
                String factory = ardCamera.getFactory();
                if (factory.equals("1")) {
                    hikClientService.syncLogin(ardCamera);
                    asyncLogin.hikLogin(ardCamera);
                    result=true;
                } else if (factory.equals("2")) {
                    result = dhClientService.login(ardCamera);
                    asyncLogin.dhLogin(ardCamera);
                    result = true;
                }
            }
        } catch (Exception ex) {
@@ -78,6 +83,7 @@
        }
        return result;
    }
    //注销
    @Override
    public boolean logout(String cameraId) {
@@ -120,6 +126,7 @@
            return false;
        }
    }
    //云台控制
    @SdkOperate
    @Override
@@ -142,6 +149,7 @@
            return false;
        }
    }
    //设置聚焦值
    @Override
    public boolean setFocusPos(CameraCmd cmd) {
@@ -163,6 +171,7 @@
        }
        return result;
    }
    //获取聚焦值
    @Override
    public int getFocusPos(CameraCmd cmd) {
@@ -183,6 +192,7 @@
        }
        return result;
    }
    //设置预置位
    @Override
    public boolean setPreset(CameraCmd cmd) {
@@ -203,6 +213,7 @@
        }
        return result;
    }
    //调用预置位
    @Override
    public boolean gotoPreset(CameraCmd cmd) {
@@ -223,6 +234,7 @@
        }
        return result;
    }
    //获取码流压缩参数
    @Override
    public Map<String, Object> getVideoCompressionCfg(CameraCmd cmd) {
@@ -243,6 +255,7 @@
        }
        return map;
    }
    //透雾开关
    @Override
    public boolean controlDefogcfg(CameraCmd cmd) {
@@ -263,6 +276,7 @@
        }
        return result;
    }
    //红外开关
    @Override
    public boolean controlInfrarecfg(CameraCmd cmd) {
@@ -283,6 +297,7 @@
        }
        return result;
    }
    //手动/自动聚焦
    @Override
    public boolean controlFocusMode(CameraCmd cmd) {
@@ -303,6 +318,7 @@
        }
        return result;
    }
    //获取聚焦模式
    @Override
    public String getFocusMode(CameraCmd cmd) {
@@ -323,6 +339,7 @@
        }
        return result;
    }
    //云台加热
    @Override
    public boolean controlPTHeateRpwron(CameraCmd cmd) {
@@ -343,6 +360,7 @@
        }
        return result;
    }
    //镜头加热
    @Override
    public boolean controlCameraDeicing(CameraCmd cmd) {
@@ -389,6 +407,7 @@
    public String captureJPEGPicture(CameraCmd cmd) {
        return null;
    }
    //抓图
    @SdkOperate
    @Override
@@ -415,6 +434,7 @@
        }
        return url;
    }
    //获取ptz
    @Override
    public Map<String, Object> getPtz(CameraCmd cmd) {
@@ -435,6 +455,7 @@
        }
        return map;
    }
    //获取ptz范围
    @Override
    public Map<String, Object> getPtzScope(CameraCmd cmd) {
@@ -455,6 +476,7 @@
        }
        return map;
    }
    //设置ptz
    @SdkOperate
    @Override
@@ -476,6 +498,7 @@
        }
        return result;
    }
    //设置零方位角
    @SdkOperate
    @Override
@@ -497,6 +520,7 @@
        }
        return result;
    }
    //引导指向目标
    @SdkOperate
    @Override
@@ -606,6 +630,7 @@
        }
        return result;
    }
    //停止录像并存入minio
    @Override
    public String recordStopToMinio(CameraCmd cmd) {
@@ -626,6 +651,7 @@
        }
        return url;
    }
    //停止录像并不存入minio
    @Override
    public boolean recordStopNotToMinio(CameraCmd cmd) {
@@ -667,4 +693,6 @@
        }
        return map;
    }
}