From 74c08a504d55ae137004cb44e0145010f62f9585 Mon Sep 17 00:00:00 2001 From: Administrator <1144154118@qq.com> Date: 星期五, 25 八月 2023 14:47:35 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java | 150 +++++++++++++++++++++++++++++++------------------ 1 files changed, 95 insertions(+), 55 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java index cfc76bf..4ed6415 100644 --- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java @@ -2,22 +2,27 @@ import com.ruoyi.common.annotation.SdkOperate; import com.ruoyi.common.utils.file.FileUtils; +import com.ruoyi.common.utils.file.MimeTypeUtils; +import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.camera.service.IArdCamerasService; +import com.ruoyi.device.channel.domain.ArdChannel; 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.util.hikSdkUtil.GisUtil; import com.ruoyi.device.hiksdk.util.hikSdkUtil.HCNetSDK; import com.ruoyi.device.hiksdk.service.IHikClientService; import com.ruoyi.device.hiksdk.util.hikSdkUtil.LoginResultCallBack; import com.ruoyi.storage.minio.utils.MinioUtils; import com.sun.jna.Native; +import com.sun.jna.NativeLong; import com.sun.jna.Platform; import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; + import java.util.Base64; import javax.annotation.Resource; import java.io.*; @@ -40,8 +45,12 @@ @Service public class HikClientServiceImpl implements IHikClientService { + @Value("${minio.endpoint}") + private static String endpoint; @Resource - IArdCamerasService ardCamerasService; + private IArdCamerasService ardCamerasService; + @Resource + private MinioUtils minioUtil; private static HCNetSDK hCNetSDK; @@ -125,7 +134,7 @@ GlobalVariable.loginMap.remove(camera.getId()); GlobalVariable.loginMap.put(camera.getId(), lUserID); camera.setLoginId(lUserID); - camera.setChannel((int) m_strDeviceInfo.byStartChan); + camera.setStartDChan((int) m_strDeviceInfo.byStartChan); return camera; } @@ -179,7 +188,7 @@ int i = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo); if (i < 0) { int errorCode = hCNetSDK.NET_DVR_GetLastError(); - log.info("鐧诲綍寮傚父锛�" + errorCode); + log.error("鐧诲綍寮傚父锛�" + errorCode); } } @@ -328,7 +337,7 @@ boolean bool = hCNetSDK.NET_DVR_PTZControlWithSpeed_Other(userId, channelNum, dwPTZCommand, dwStop, speed); if (!bool) { int errorCode = hCNetSDK.NET_DVR_GetLastError(); - log.info("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + errorCode); + log.error("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + errorCode); } return bool; } @@ -356,7 +365,7 @@ boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_FOCUSMODECFG, channelNum, point, focusmodeCfg.size(), ibrBytesReturned); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.info("璁剧疆鑱氱劍鍊煎け璐�,璇风◢鍚庨噸璇�" + code); + log.error("璁剧疆鑱氱劍鍊煎け璐�,璇风◢鍚庨噸璇�" + code); } return bool; } @@ -389,7 +398,7 @@ return map; } else { int code = hCNetSDK.NET_DVR_GetLastError(); - log.info("鑾峰彇鑱氱劍鍊煎け璐�,璇风◢鍚庨噸璇�" + code); + log.debug("鑾峰彇鑱氱劍鍊煎け璐�,璇风◢鍚庨噸璇�" + code); return new HashMap<>(); } } @@ -412,7 +421,7 @@ boolean bool = hCNetSDK.NET_DVR_PTZPreset_Other(userId, channelNum, SET_PRESET, PresetIndex); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.info("棰勭疆鐐硅缃け璐�,璇风◢鍚庨噸璇�" + code); + log.error("棰勭疆鐐硅缃け璐�,璇风◢鍚庨噸璇�" + code); } return bool; } @@ -435,7 +444,7 @@ boolean bool = hCNetSDK.NET_DVR_PTZPreset_Other(userId, channelNum, GOTO_PRESET, PresetIndex); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.info("棰勭疆鐐硅缃け璐�,璇风◢鍚庨噸璇�" + code); + log.error("棰勭疆鐐硅缃け璐�,璇风◢鍚庨噸璇�" + code); } return bool; } @@ -537,7 +546,7 @@ } } else { int code = hCNetSDK.NET_DVR_GetLastError(); - System.out.println("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + code); + log.error("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + code); } } catch (Exception ex) { log.error(ex.getMessage()); @@ -589,7 +598,7 @@ return ptzMap; } else { int code = hCNetSDK.NET_DVR_GetLastError(); - log.info("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + code); + log.error("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + code); return new HashMap<>(); } @@ -627,7 +636,7 @@ boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_PTZPOS, channelNum, point, m_ptzPosCurrent.size()); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.info("璁剧疆ptz澶辫触,璇风◢鍚庨噸璇�" + code); + log.error("璁剧疆ptz澶辫触,璇风◢鍚庨噸璇�" + code); } return bool; } catch (Exception ex) { @@ -663,7 +672,7 @@ boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_PTZPOS, channelNum, point, m_ptzPosCurrent.size()); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.info("璁剧疆ptz澶辫触,璇风◢鍚庨噸璇�" + code); + log.error("璁剧疆ptz澶辫触,璇风◢鍚庨噸璇�" + code); } return bool; } catch (Exception ex) { @@ -739,7 +748,7 @@ boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_PTZLOCKCFG, channelNum, point, netDvrPtzLockcfg.size(), ibrBytesReturned); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.info("鑾峰彇ptz閿佸畾淇℃伅澶辫触,璇风◢鍚庨噸璇�" + code); + log.error("鑾峰彇ptz閿佸畾淇℃伅澶辫触,璇风◢鍚庨噸璇�" + code); return -1; } else { netDvrPtzLockcfg.read(); @@ -803,7 +812,7 @@ boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_PTZSCOPE, channelNum, point, m_ptzPosCurrent.size(), ibrBytesReturned); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.info("璁剧疆ptz澶辫触,璇风◢鍚庨噸璇�" + code); + log.error("璁剧疆ptz澶辫触,璇风◢鍚庨噸璇�" + code); return new HashMap<>(); } else { m_ptzPosCurrent.read(); @@ -853,7 +862,7 @@ log.error("鑾峰彇鍓嶇鍙傛暟澶辫触锛岄敊璇爜锛�" + hCNetSDK.NET_DVR_GetLastError()); } struCameraParam.read(); - log.info("鏄惁寮�鍚�忛浘锛�" + struCameraParam.struDefogCfg.byMode); + log.debug("鏄惁寮�鍚�忛浘锛�" + struCameraParam.struDefogCfg.byMode); NET_DVR_DEFOGCFG defogcfg = new NET_DVR_DEFOGCFG(); if (enable) { @@ -867,9 +876,9 @@ boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_CCDPARAMCFG_EX, channelNum, point, struCameraParam.size()); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.info("璁剧疆閫忛浘澶辫触,璇风◢鍚庨噸璇�" + code); + log.error("璁剧疆閫忛浘澶辫触,璇风◢鍚庨噸璇�" + code); } - log.info("璁剧疆閫忛浘鎴愬姛"); + log.debug("璁剧疆閫忛浘鎴愬姛"); return bool; } @@ -899,7 +908,7 @@ log.error("鑾峰彇鍓嶇鍙傛暟澶辫触锛岄敊璇爜锛�" + hCNetSDK.NET_DVR_GetLastError()); } struDayNigh.read(); - log.info("鏄惁寮�鍚瑙嗭細" + struDayNigh.struDayNight.byDayNightFilterType); + log.debug("鏄惁寮�鍚瑙嗭細" + struDayNigh.struDayNight.byDayNightFilterType); NET_DVR_DAYNIGHT daynight = new NET_DVR_DAYNIGHT(); if (enable) { @@ -915,9 +924,9 @@ boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_CCDPARAMCFG_EX, channelNum, point, struDayNigh.size()); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.info("璁剧疆澶滆澶辫触,璇风◢鍚庨噸璇�" + code); + log.error("璁剧疆澶滆澶辫触,璇风◢鍚庨噸璇�" + code); } - log.info("璁剧疆澶滆鎴愬姛"); + log.debug("璁剧疆澶滆鎴愬姛"); return bool; } @@ -944,10 +953,10 @@ IntByReference ibrBytesReturned = new IntByReference(0); boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_FOCUSMODECFG, channelNum, point, struFocusMode.size(), ibrBytesReturned); if (!b_GetCameraParam) { - System.out.println("鑾峰彇鍓嶇鍙傛暟澶辫触锛岄敊璇爜锛�" + hCNetSDK.NET_DVR_GetLastError()); + log.error("鑾峰彇鍓嶇鍙傛暟澶辫触锛岄敊璇爜锛�" + hCNetSDK.NET_DVR_GetLastError()); } struFocusMode.read(); - log.info("褰撳墠鑱氱劍妯″紡锛�" + struFocusMode.byFocusMode); + log.debug("褰撳墠鑱氱劍妯″紡锛�" + struFocusMode.byFocusMode); if (enable) { struFocusMode.byFocusMode = 1;//鎵嬪姩鑱氱劍 @@ -961,9 +970,9 @@ boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_FOCUSMODECFG, channelNum, point, struFocusMode.size()); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.info("璁剧疆鑱氱劍妯″紡澶辫触,璇风◢鍚庨噸璇�" + code); + log.error("璁剧疆鑱氱劍妯″紡澶辫触,璇风◢鍚庨噸璇�" + code); } - log.info("璁剧疆鑱氱劍妯″紡鎴愬姛"); + log.debug("璁剧疆鑱氱劍妯″紡鎴愬姛"); return bool; } @@ -979,10 +988,10 @@ IntByReference ibrBytesReturned = new IntByReference(0); boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_FOCUSMODECFG, channelNum, point, struFocusMode.size(), ibrBytesReturned); if (!b_GetCameraParam) { - System.out.println("鑾峰彇鍓嶇鍙傛暟澶辫触锛岄敊璇爜锛�" + hCNetSDK.NET_DVR_GetLastError()); + log.error("鑾峰彇鍓嶇鍙傛暟澶辫触锛岄敊璇爜锛�" + hCNetSDK.NET_DVR_GetLastError()); } struFocusMode.read(); - log.info("褰撳墠鑱氱劍妯″紡锛�" + struFocusMode.byFocusMode); + log.debug("褰撳墠鑱氱劍妯″紡锛�" + struFocusMode.byFocusMode); return String.valueOf(struFocusMode.byFocusMode); } @@ -1013,9 +1022,9 @@ boolean bool = hCNetSDK.NET_DVR_PTZControl_Other(userId, channelNum, HEATER_PWRON, dwStop); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.info("璁剧疆浜戝彴鍔犵儹澶辫触,璇风◢鍚庨噸璇�" + code); + log.error("璁剧疆浜戝彴鍔犵儹澶辫触,璇风◢鍚庨噸璇�" + code); } - log.info("璁剧疆浜戝彴鍔犵儹鎴愬姛"); + log.debug("璁剧疆浜戝彴鍔犵儹鎴愬姛"); return bool; } @@ -1045,7 +1054,7 @@ log.error("鑾峰彇鍓嶇鍙傛暟澶辫触锛岄敊璇爜锛�" + hCNetSDK.NET_DVR_GetLastError()); } struDeicing.read(); - log.info("鏄惁寮�鍚櫎鍐帮細" + struDeicing.byEnableDeicing); + log.debug("鏄惁寮�鍚櫎鍐帮細" + struDeicing.byEnableDeicing); if (enable) { struDeicing.byEnableDeicing = 1;//寮�鍚� @@ -1056,9 +1065,9 @@ boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_DEVSERVER_CFG, channelNum, point, struDeicing.size()); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.info("璁剧疆闀滃ご闄ゅ啺澶辫触,璇风◢鍚庨噸璇�" + code); + log.error("璁剧疆闀滃ご闄ゅ啺澶辫触,璇风◢鍚庨噸璇�" + code); } - log.info("璁剧疆闀滃ご闄ゅ啺鎴愬姛"); + log.debug("璁剧疆闀滃ご闄ゅ啺鎴愬姛"); return bool; } @@ -1090,13 +1099,13 @@ ByteBuffer jpegBuffer = ByteBuffer.allocate(1024 * 1024); // 鎶撳浘鍒板唴瀛橈紝鍗曞抚鏁版嵁鎹曡幏骞朵繚瀛樻垚JPEG瀛樻斁鍦ㄦ寚瀹氱殑鍐呭瓨绌洪棿涓� boolean is = hCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(userId, channelNum, jpeg, jpegBuffer, 1024 * 1024, a); - log.info("-----------杩欓噷寮�濮嬪浘鐗囧瓨鍏ュ唴瀛�----------" + is); + log.debug("-----------杩欓噷寮�濮嬪浘鐗囧瓨鍏ュ唴瀛�----------" + is); Base64.Encoder decoder = Base64.getEncoder(); - // BASE64Encoder encoder = new BASE64Encoder(); + // BASE64Encoder encoder = new BASE64Encoder(); String png_base64 = decoder.encodeToString(jpegBuffer.array());//杞崲鎴恇ase64涓� png_base64 = png_base64.replaceAll("\n", "").replaceAll("\r", "");//鍒犻櫎 \r\n - log.info("-----------澶勭悊瀹屾垚鎴浘鏁版嵁----------"); + log.debug("-----------澶勭悊瀹屾垚鎴浘鏁版嵁----------"); return png_base64; } @@ -1134,25 +1143,22 @@ //璁剧疆鍥剧墖澶у皬 ByteBuffer jpegBuffer = ByteBuffer.allocate(1024 * 1024); // 鎶撳浘鍒板唴瀛橈紝鍗曞抚鏁版嵁鎹曡幏骞朵繚瀛樻垚JPEG瀛樻斁鍦ㄦ寚瀹氱殑鍐呭瓨绌洪棿涓� - log.info("-----------杩欓噷寮�濮嬪皝瑁� NET_DVR_CaptureJPEGPicture_NEW---------"); + log.debug("-----------杩欓噷寮�濮嬪皝瑁� NET_DVR_CaptureJPEGPicture_NEW---------"); boolean is = hCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(userId, channelNum, jpeg, jpegBuffer, 1024 * 1024, a); - log.info("-----------杩欓噷寮�濮嬪浘鐗囧瓨鍏ュ唴瀛�----------" + is); + log.debug("-----------杩欓噷寮�濮嬪浘鐗囧瓨鍏ュ唴瀛�----------" + is); if (is) { - log.info("hksdk(鎶撳浘)-缁撴灉鐘舵�佸��(0琛ㄧず鎴愬姛):" + hCNetSDK.NET_DVR_GetLastError()); + log.debug("hksdk(鎶撳浘)-缁撴灉鐘舵�佸��(0琛ㄧず鎴愬姛):" + hCNetSDK.NET_DVR_GetLastError()); byte[] array = jpegBuffer.array(); //瀛樺偍鍒癿inio String BucketName = "pic"; - String uuid = UUID.randomUUID().toString().replace("-", ""); - String time = new SimpleDateFormat("yyyyMMdd").format(new Date()); - String ObjectName = time + "/" + uuid + ".jpeg"; - String ContentType = "image/JPEG"; + String ObjectName = "capture/" + IdUtils.simpleUUID() + ".jpeg"; InputStream input = new ByteArrayInputStream(array); String url = ""; try { - boolean b = MinioUtils.uploadObject(BucketName, ObjectName, input, input.available(), ContentType); + boolean b = minioUtil.uploadObject(BucketName, ObjectName, input, input.available(), MimeTypeUtils.IMAGE_JPEG); if (b) { - url = MinioUtils.getBucketObjectUrl(BucketName, ObjectName); - log.info("涓婁紶鏂囦欢鎴愬姛!" + url); + url = minioUtil.getBucketObjectUrl(BucketName, ObjectName); + log.debug("涓婁紶鏂囦欢鎴愬姛!" + url); } } catch (IOException ex) { log.error("涓婁紶鏂囦欢寮傚父锛�" + ex.getMessage()); @@ -1160,7 +1166,7 @@ return url; } else { int code = hCNetSDK.NET_DVR_GetLastError(); - log.info("鎶撳浘澶辫触,璇风◢鍚庨噸璇�" + code); + log.error("鎶撳浘澶辫触,璇风◢鍚庨噸璇�" + code); return ""; } } @@ -1212,21 +1218,21 @@ log.error("鍙栨祦澶辫触" + hCNetSDK.NET_DVR_GetLastError()); return ""; } - log.info("鍙栨祦鎴愬姛"); + log.debug("鍙栨祦鎴愬姛"); GlobalVariable.previewMap.put(cameraId, lRealHandle); } if (!hCNetSDK.NET_DVR_SaveRealData_V30(GlobalVariable.previewMap.get(cameraId), 2, path)) { log.error("淇濆瓨瑙嗛鏂囦欢鍒颁复鏃舵枃浠跺す澶辫触 閿欒鐮佷负: " + hCNetSDK.NET_DVR_GetLastError()); return ""; } - log.info("褰曞儚寮�濮�"); + log.debug("褰曞儚寮�濮�"); } else { if (GlobalVariable.previewMap.containsKey(cameraId)) { Integer lRealHandle = GlobalVariable.previewMap.get(cameraId); hCNetSDK.NET_DVR_StopRealPlay(lRealHandle); GlobalVariable.previewMap.remove(cameraId); } - log.info("褰曞儚鍋滄"); + log.debug("褰曞儚鍋滄"); } return url; } catch (Exception ex) { @@ -1330,14 +1336,11 @@ log.debug("褰曞儚鍋滄"); //瀛樺叆minio String BucketName = cmd.getRecordBucketName(); - String ObjectName = cmd.getRecordObjectName(); - String ContentType = "video/MP4"; + String ObjectName = cmd.getRecordObjectName()+".mp4"; FileInputStream stream = new FileInputStream(path); - String time = new SimpleDateFormat("yyyyMMdd").format(new Date()); - String recordName = cameraId + "/" + time + "/" + ObjectName + ".mp4"; - boolean b = MinioUtils.uploadObject(BucketName, recordName, stream, stream.available(), ContentType); + boolean b = minioUtil.uploadObject(BucketName, ObjectName, stream, stream.available(), "video/MP4"); if (b) { - url = MinioClientSingleton.domainUrl + "/" + BucketName + "/" + recordName; + url = minioUtil.getBucketObjectUrl(BucketName, ObjectName); log.debug("涓婁紶鏂囦欢鎴愬姛!" + url); } return url; @@ -1386,4 +1389,41 @@ log.error("褰曞儚鍋滄寮傚父" + ex.getMessage()); } } + + //鑾峰彇IP閫氶亾 + @Override + public List<ArdChannel> getCameraChannelList(ArdCameras camera) { + /*鑾峰彇閫氶亾*/ + List<ArdChannel> channelList = new ArrayList<>(); + try { + Integer chanNum = camera.getChanNum(); + Integer startDChan = camera.getStartDChan(); + if (chanNum > 0) { + // 鑾峰彇閫氶亾鍙� + for (int iChannum = 0; iChannum < chanNum; iChannum++) { + ArdChannel ardChannel = new ArdChannel(); + int channum = iChannum + startDChan+1; + HCNetSDK.NET_DVR_PICCFG_V40 strPicCfg = new HCNetSDK.NET_DVR_PICCFG_V40(); + strPicCfg.dwSize = strPicCfg.size(); + strPicCfg.write(); + Pointer pStrPicCfg = strPicCfg.getPointer(); + NativeLong lChannel = new NativeLong(channum); + IntByReference pInt = new IntByReference(0); + boolean b_GetPicCfg = hCNetSDK.NET_DVR_GetDVRConfig(camera.getLoginId(), HCNetSDK.NET_DVR_GET_PICCFG_V40, lChannel.intValue(), + pStrPicCfg, strPicCfg.size(), pInt); + if (b_GetPicCfg) { + strPicCfg.read(); + String channelName = new String(strPicCfg.sChanName, "GBK").trim(); + ardChannel.setName(channelName); + } + ardChannel.setDeviceId(camera.getId()); + ardChannel.setChanNo(iChannum + 1); + channelList.add(ardChannel); + } + } + } catch (Exception ex) { + log.error("鑾峰彇鐩告満閫氶亾寮傚父:" + ex.getMessage()); + } + return channelList; + } } \ No newline at end of file -- Gitblit v1.9.3