‘liusuyi’
2023-06-01 113cf98d7d26460363d7ef13990623a775c636a2
ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
@@ -8,7 +8,7 @@
import com.ruoyi.constant.sdkPriority;
import com.ruoyi.device.camera.domain.CameraCmd;
import com.ruoyi.device.camera.mapper.ArdCamerasMapper;
import com.ruoyi.device.hiksdk.common.global.globalVariable;
import com.ruoyi.device.hiksdk.common.GlobalVariable;
import com.ruoyi.device.camera.domain.ArdCameras;
import com.ruoyi.device.hiksdk.config.MinioClientSingleton;
import com.ruoyi.device.hiksdk.domain.recordInfo;
@@ -54,7 +54,6 @@
    SysUserMapper sysUserMapper;
    private static HCNetSDK hCNetSDK;
    private static Map<Integer, recordInfo> user_real_Map = new HashMap<>();
    @Override
    public void loadHCNetSDKLib() {
@@ -133,10 +132,10 @@
            hCNetSDK.NET_DVR_Cleanup();
            camera.setLoginId(-1);
        }
        if (globalVariable.loginMap.containsKey(camera.getId())) {
            globalVariable.loginMap.remove(camera.getId());
        if (GlobalVariable.loginMap.containsKey(camera.getId())) {
            GlobalVariable.loginMap.remove(camera.getId());
        }
        globalVariable.loginMap.put(camera.getId(), lUserID);
        GlobalVariable.loginMap.put(camera.getId(), lUserID);
        camera.setLoginId(lUserID);
        camera.setChannel((int) m_strDeviceInfo.byStartChan);
@@ -194,13 +193,13 @@
     */
    @Override
    public boolean loginOut(String cameraId) {
        if (!globalVariable.loginMap.containsKey(cameraId)) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return false;
        }
        Integer userId = globalVariable.loginMap.get(cameraId);
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        boolean b = hCNetSDK.NET_DVR_Logout(userId);
        if (b) {
            globalVariable.loginMap.remove(cameraId);
            GlobalVariable.loginMap.remove(cameraId);
        }
        return b;
    }
@@ -213,10 +212,10 @@
    @Override
    public boolean isOnLine(CameraCmd cmd) {
        String cameraId = cmd.getCameraId();
        if (!globalVariable.loginMap.containsKey(cameraId)) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return false;
        }
        Integer userId = globalVariable.loginMap.get(cameraId);
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        boolean isOnLine = hCNetSDK.NET_DVR_RemoteControl(userId, HCNetSDK.NET_DVR_CHECK_USER_STATUS, null, 0);
        return isOnLine;
    }
@@ -239,10 +238,10 @@
        Integer channelNum = cmd.getChannelNum();
        Integer speed = cmd.getSpeed();
        Integer code = cmd.getCode();
        if (!globalVariable.loginMap.containsKey(cameraId)) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return false;
        }
        Integer userId = globalVariable.loginMap.get(cameraId);
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        Integer dwStop;
        if (enable) {
            dwStop = 0;//开启
@@ -324,10 +323,10 @@
        String cameraId = cmd.getCameraId();
        Integer channelNum = cmd.getChannelNum();
        Integer dwFocusPos = cmd.getDwFocusPos();
        if (!globalVariable.loginMap.containsKey(cameraId)) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return false;
        }
        Integer userId = globalVariable.loginMap.get(cameraId);
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        NET_DVR_FOCUSMODE_CFG focusmodeCfg = new NET_DVR_FOCUSMODE_CFG();
        Pointer point = focusmodeCfg.getPointer();
@@ -351,10 +350,10 @@
        String cameraId = cmd.getCameraId();
        Integer channelNum = cmd.getChannelNum();
        if (!globalVariable.loginMap.containsKey(cameraId)) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return new HashMap<>();
        }
        Integer userId = globalVariable.loginMap.get(cameraId);
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        NET_DVR_FOCUSMODE_CFG focusmodeCfg = new NET_DVR_FOCUSMODE_CFG();
        Pointer point = focusmodeCfg.getPointer();
@@ -385,10 +384,10 @@
        String cameraId = cmd.getCameraId();
        Integer channelNum = cmd.getChannelNum();
        Integer PresetIndex = cmd.getPresetIndex();
        if (!globalVariable.loginMap.containsKey(cameraId)) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return false;
        }
        Integer userId = globalVariable.loginMap.get(cameraId);
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        boolean bool = hCNetSDK.NET_DVR_PTZPreset_Other(userId, channelNum, SET_PRESET, PresetIndex);
        if (!bool) {
            int code = hCNetSDK.NET_DVR_GetLastError();
@@ -408,10 +407,10 @@
        String cameraId = cmd.getCameraId();
        Integer channelNum = cmd.getChannelNum();
        Integer PresetIndex = cmd.getPresetIndex();
        if (!globalVariable.loginMap.containsKey(cameraId)) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return false;
        }
        Integer userId = globalVariable.loginMap.get(cameraId);
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        boolean bool = hCNetSDK.NET_DVR_PTZPreset_Other(userId, channelNum, GOTO_PRESET, PresetIndex);
        if (!bool) {
            int code = hCNetSDK.NET_DVR_GetLastError();
@@ -432,10 +431,10 @@
    public String getVideoResolution(CameraCmd cmd) {
        String cameraId = cmd.getCameraId();
        Integer channelNum = cmd.getChannelNum();
        if (!globalVariable.loginMap.containsKey(cameraId)) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return " ";
        }
        Integer userId = globalVariable.loginMap.get(cameraId);
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        String ResResolution = "";
        NET_DVR_COMPRESSIONCFG_V30 resolution = new NET_DVR_COMPRESSIONCFG_V30();
@@ -538,10 +537,10 @@
    public Map<String, Object> getPtz(CameraCmd cmd) {
        String cameraId = cmd.getCameraId();
        Integer channelNum = cmd.getChannelNum();
        if (!globalVariable.loginMap.containsKey(cameraId)) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return null;
        }
        Integer userId = globalVariable.loginMap.get(cameraId);
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS();
        Pointer pioint = m_ptzPosCurrent.getPointer();
@@ -590,10 +589,10 @@
        String cameraId = cmd.getCameraId();
        Integer channelNum = cmd.getChannelNum();
        Map<String, Double> ptz = cmd.getPtzMap();
        if (!globalVariable.loginMap.containsKey(cameraId)) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return false;
        }
        Integer userId = globalVariable.loginMap.get(cameraId);
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS();
        m_ptzPosCurrent.wAction = 1;
        try {
@@ -622,10 +621,10 @@
    public boolean setTargetPosition(CameraCmd cmd) {
        String cameraId = cmd.getCameraId();
        Integer channelNum = cmd.getChannelNum();
        if (!globalVariable.loginMap.containsKey(cameraId)) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return false;
        }
        Integer userId = globalVariable.loginMap.get(cameraId);
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS();
        m_ptzPosCurrent.wAction = 1;
        try {
@@ -736,10 +735,10 @@
    public int getPTZLockInfo(CameraCmd cmd) {
        String cameraId = cmd.getCameraId();
        Integer channelNum = cmd.getChannelNum();
        if (!globalVariable.loginMap.containsKey(cameraId)) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return -1;
        }
        Integer userId = globalVariable.loginMap.get(cameraId);
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        NET_DVR_PTZ_LOCKCFG netDvrPtzLockcfg = new NET_DVR_PTZ_LOCKCFG();
        Pointer point = netDvrPtzLockcfg.getPointer();
        IntByReference ibrBytesReturned = new IntByReference(0);
@@ -769,10 +768,10 @@
    public boolean setZeroPtz(CameraCmd cmd) {
        String cameraId = cmd.getCameraId();
        Integer channelNum = cmd.getChannelNum();
        if (!globalVariable.loginMap.containsKey(cameraId)) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return false;
        }
        Integer userId = globalVariable.loginMap.get(cameraId);
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        NET_DVR_INITIALPOSITIONCTRL initialpositionctrl = new NET_DVR_INITIALPOSITIONCTRL();
        initialpositionctrl.dwSize = initialpositionctrl.size();
@@ -801,10 +800,10 @@
    public Map<String, Object> getPtzScope(CameraCmd cmd) {
        String cameraId = cmd.getCameraId();
        Integer channelNum = cmd.getChannelNum();
        if (!globalVariable.loginMap.containsKey(cameraId)) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return new HashMap<>();
        }
        Integer userId = globalVariable.loginMap.get(cameraId);
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        NET_DVR_PTZSCOPE m_ptzPosCurrent = new NET_DVR_PTZSCOPE();
        Pointer point = m_ptzPosCurrent.getPointer();
        IntByReference ibrBytesReturned = new IntByReference(0);
@@ -850,10 +849,10 @@
        String cameraId = cmd.getCameraId();
        boolean enable = cmd.isEnable();
        Integer channelNum = cmd.getChannelNum();
        if (!globalVariable.loginMap.containsKey(cameraId)) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return false;
        }
        Integer userId = globalVariable.loginMap.get(cameraId);
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        NET_DVR_CAMERAPARAMCFG_EX struCameraParam = new NET_DVR_CAMERAPARAMCFG_EX();
        Pointer point = struCameraParam.getPointer();
        IntByReference ibrBytesReturned = new IntByReference(0);
@@ -897,10 +896,10 @@
        String cameraId = cmd.getCameraId();
        boolean enable = cmd.isEnable();
        Integer channelNum = cmd.getChannelNum();
        if (!globalVariable.loginMap.containsKey(cameraId)) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return false;
        }
        Integer userId = globalVariable.loginMap.get(cameraId);
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        NET_DVR_CAMERAPARAMCFG_EX struDayNigh = new NET_DVR_CAMERAPARAMCFG_EX();
        Pointer point = struDayNigh.getPointer();
        IntByReference ibrBytesReturned = new IntByReference(0);
@@ -946,10 +945,10 @@
        String cameraId = cmd.getCameraId();
        boolean enable = cmd.isEnable();
        Integer channelNum = cmd.getChannelNum();
        if (!globalVariable.loginMap.containsKey(cameraId)) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return false;
        }
        Integer userId = globalVariable.loginMap.get(cameraId);
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        NET_DVR_FOCUSMODE_CFG struFocusMode = new NET_DVR_FOCUSMODE_CFG();
        Pointer point = struFocusMode.getPointer();
        IntByReference ibrBytesReturned = new IntByReference(0);
@@ -993,10 +992,10 @@
        String cameraId = cmd.getCameraId();
        boolean enable = cmd.isEnable();
        Integer channelNum = cmd.getChannelNum();
        if (!globalVariable.loginMap.containsKey(cameraId)) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return false;
        }
        Integer userId = globalVariable.loginMap.get(cameraId);
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        Integer dwStop;
        if (enable) {
            dwStop = 0;//开启
@@ -1027,10 +1026,10 @@
        String cameraId = cmd.getCameraId();
        boolean enable = cmd.isEnable();
        Integer channelNum = cmd.getChannelNum();
        if (!globalVariable.loginMap.containsKey(cameraId)) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return false;
        }
        Integer userId = globalVariable.loginMap.get(cameraId);
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        NET_DVR_DEVSERVER_CFG struDeicing = new NET_DVR_DEVSERVER_CFG();
        Pointer point = struDeicing.getPointer();
        IntByReference ibrBytesReturned = new IntByReference(0);
@@ -1065,10 +1064,10 @@
    public String captureJPEGPicture(CameraCmd cmd) {
        String cameraId = cmd.getCameraId();
        Integer channelNum = cmd.getChannelNum();
        if (!globalVariable.loginMap.containsKey(cameraId)) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return "";
        }
        Integer userId = globalVariable.loginMap.get(cameraId);
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        NET_DVR_WORKSTATE_V30 devwork = new NET_DVR_WORKSTATE_V30();
        if (!hCNetSDK.NET_DVR_GetDVRWorkState_V30(userId, devwork)) {
            // 返回Boolean值,判断是否获取设备能力
@@ -1137,10 +1136,10 @@
    public String picCutCate(CameraCmd cmd) {
        String cameraId = cmd.getCameraId();
        Integer channelNum = cmd.getChannelNum();
        if (!globalVariable.loginMap.containsKey(cameraId)) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return "";
        }
        Integer userId = globalVariable.loginMap.get(cameraId);
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        //图片信息
        NET_DVR_JPEGPARA jpeg = new NET_DVR_JPEGPARA();
        //设置图片分辨率
@@ -1203,10 +1202,10 @@
        String cameraId = cmd.getCameraId();
        Integer channelNum = cmd.getChannelNum();
        boolean enable = cmd.isEnable();
        if (!globalVariable.loginMap.containsKey(cameraId)) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return "";
        }
        Integer userId = globalVariable.loginMap.get(cameraId);
        Integer userId = GlobalVariable.loginMap.get(cameraId);
        String path = "";
        //预览参数
        NET_DVR_PREVIEWINFO previewinfo = new NET_DVR_PREVIEWINFO();
@@ -1220,7 +1219,7 @@
        previewinfo.write();
        int lRealHandle;
        if (enable) {
            if (!user_real_Map.containsKey(userId)) {
            if (!GlobalVariable.user_real_Map.containsKey(userId)) {
                lRealHandle = hCNetSDK.NET_DVR_RealPlay_V40(userId, previewinfo, null, null);
                if (lRealHandle == -1) {
                    int iErr = hCNetSDK.NET_DVR_GetLastError();
@@ -1249,9 +1248,9 @@
                recordInfo info = new recordInfo();
                info.setLRealHandle(lRealHandle);
                info.setRecordPath(path);
                user_real_Map.put(userId, info);
                GlobalVariable.user_real_Map.put(userId, info);
            }
            recordInfo info = user_real_Map.get(userId);
            recordInfo info = GlobalVariable.user_real_Map.get(userId);
            if (!hCNetSDK.NET_DVR_SaveRealData_V30(info.getLRealHandle(), 1, info.getRecordPath())) {
                log.error("保存视频文件到临时文件夹失败 错误码为:  " + hCNetSDK.NET_DVR_GetLastError());
                return "保存视频文件到临时文件夹失败 错误码为:" + hCNetSDK.NET_DVR_GetLastError();
@@ -1260,7 +1259,7 @@
            //return info.getRecordPath();
            return "";
        } else {
            recordInfo info = user_real_Map.get(userId);
            recordInfo info = GlobalVariable.user_real_Map.get(userId);
            if (StringUtils.isNull(info)) {
                return "";
            }
@@ -1288,7 +1287,7 @@
            } catch (IOException ex) {
                log.error("上传文件异常:" + ex.getMessage());
            }
            user_real_Map.remove(userId);
            GlobalVariable.user_real_Map.remove(userId);
            return url;
        }
    }
@@ -1299,10 +1298,10 @@
            String cameraId = cmd.getCameraId();
            Integer channelNum = cmd.getChannelNum();
            boolean enable = cmd.isEnable();
            if (!globalVariable.loginMap.containsKey(cameraId)) {
            if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                return;
            }
            Integer userId = globalVariable.loginMap.get(cameraId);
            Integer userId = GlobalVariable.loginMap.get(cameraId);
            String path = "";
            //强制I帧结构体对象
            HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME();   //新建结构体对象
@@ -1327,7 +1326,7 @@
            previewinfo.write();
            int lRealHandle;
            if (enable) {
                if (!user_real_Map.containsKey(userId)) {
                if (!GlobalVariable.user_real_Map.containsKey(userId)) {
                    lRealHandle = hCNetSDK.NET_DVR_RealPlay_V40(userId, previewinfo, null, null);
                    if (lRealHandle == -1) {
                        log.error("取流失败" + hCNetSDK.NET_DVR_GetLastError());
@@ -1346,16 +1345,16 @@
                    recordInfo info = new recordInfo();
                    info.setLRealHandle(lRealHandle);
                    info.setRecordPath(path);
                    user_real_Map.put(userId, info);
                    GlobalVariable.user_real_Map.put(userId, info);
                }
                recordInfo info = user_real_Map.get(userId);
                recordInfo info = GlobalVariable.user_real_Map.get(userId);
                if (!hCNetSDK.NET_DVR_SaveRealData_V30(info.getLRealHandle(), 2, info.getRecordPath())) {
                    log.error("保存视频文件到临时文件夹失败 错误码为:  " + hCNetSDK.NET_DVR_GetLastError());
                    return;
                }
                log.info("录像开始");
            } else {
                recordInfo info = user_real_Map.get(userId);
                recordInfo info = GlobalVariable.user_real_Map.get(userId);
                if (StringUtils.isNull(info)) {
                    return;
                }
@@ -1369,7 +1368,7 @@
                boolean b = MinioUtils.uploadObject(BucketName, ObjectName, stream, stream.available(), ContentType);
                if (b) {
                    log.info("上传文件成功!" + MinioClientSingleton.domainUrl + "/"+ BucketName + "/" + ObjectName);
                    user_real_Map.remove(userId);
                    GlobalVariable.user_real_Map.remove(userId);
                }
            }
        } catch (Exception ex) {