From 7c1e2217d0e4aad7498a5c136710c33cb55d00d0 Mon Sep 17 00:00:00 2001 From: zhangnaisong <2434969829@qq.com> Date: 星期三, 17 七月 2024 15:11:00 +0800 Subject: [PATCH] 三一车辆模型bug修改提交 --- ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java | 105 ++++++++++++++++++++++++---------------------------- 1 files changed, 48 insertions(+), 57 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java index 802d315..92a3833 100644 --- a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java +++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java @@ -15,8 +15,11 @@ 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.service.ICameraSdkService; import com.ruoyi.device.channel.domain.ArdChannel; import com.ruoyi.device.channel.service.IArdChannelService; +import com.ruoyi.device.terrain.domain.ArdTerrainMark; +import com.ruoyi.device.terrain.service.IArdTerrainMarkService; import com.ruoyi.media.domain.Vtdu; import com.ruoyi.media.service.IVtduService; import com.ruoyi.utils.gis.GisUtil; @@ -43,6 +46,7 @@ import java.text.DecimalFormat; import java.util.*; import java.util.concurrent.PriorityBlockingQueue; +import java.util.stream.Collectors; import static com.ruoyi.utils.sdk.hiksdk.lib.HCNetSDK.*; import static com.ruoyi.utils.sdk.hiksdk.lib.HCNetSDK.NET_DVR_GET_GISINFO; @@ -64,7 +68,8 @@ private IVtduService vtduService; @Resource private QueueHandler queueHandler; - + @Resource + ICameraSdkService cameraSdkService; public Object _lock = new Object(); public static HCNetSDK hCNetSDK = HCNetSDK.hCNetSDK; private static HCNetSDK.FExceptionCallBack fExceptionCallBack;//寮傚父鍥炶皟 @@ -120,7 +125,7 @@ if (lUserID < 0) { int errorCode = hCNetSDK.NET_DVR_GetLastError(); camera.setChanNum(0); - camera.setLoginId(-1); + camera.setLoginId(-1l); camera.setState("0"); //鍒犻櫎绠$悊閫氶亾 ardChannelService.deleteArdChannelByDeviceId(camera.getId()); @@ -139,13 +144,9 @@ log.debug("Set fExceptionCallBack function successfully!"); } } - -// if (GlobalVariable.loginMap.containsKey(camera.getId())) { -// GlobalVariable.loginMap.remove(camera.getId()); -// } GlobalVariable.loginMap.put(camera.getId(), lUserID); GlobalVariable.loginCameraMap.put(lUserID, camera); - camera.setLoginId(lUserID); + camera.setLoginId((long)lUserID); camera.setState("1"); int chanNum = m_strDeviceInfo.struDeviceV30.byChanNum; int startDchan = m_strDeviceInfo.struDeviceV30.byStartDChan + 1; @@ -154,16 +155,20 @@ startDchan = m_strDeviceInfo.struDeviceV30.byStartDChan; } camera.setChanNum(chanNum); - camera.setStartDChan(startDchan); + camera.setStartChan(startDchan); //鑾峰彇鏈�鏂伴�氶亾 List<ArdChannel> cameraChannelList = getChannels(camera); if (cameraChannelList.size() > 0) { + ardChannelService.deleteArdChannelByDeviceId(camera.getId()); + cameraChannelList.stream().forEach(channel -> { + ardChannelService.insertArdChannel(channel); + }); camera.setChannelList(cameraChannelList); - camera.setChanNum(cameraChannelList.size()); - ardCamerasService.updateArdCameras(camera); - //娣诲姞鍒版祦濯掍綋 - addVtdu(camera); + //camera.setChanNum(cameraChannelList.size()); + //閫氶亾鎵归噺娣诲姞鍒版祦濯掍綋 + batchAddVtdu(camera); } + ardCamerasService.updateArdCameras(camera); //鍒涘缓寮曞闃熷垪 createGuideQueue(camera); return AjaxResult.success("璁惧鐧诲綍鎴愬姛"); @@ -226,7 +231,7 @@ if (lUserID < 0) { int errorCode = hCNetSDK.NET_DVR_GetLastError(); camera.setChanNum(0); - camera.setLoginId(-1); + camera.setLoginId(-1l); camera.setState("0"); //鍒犻櫎绠$悊閫氶亾 ardChannelService.deleteArdChannelByDeviceId(camera.getId()); @@ -246,12 +251,10 @@ } } } -// if (GlobalVariable.loginMap.containsKey(camera.getId())) { -// GlobalVariable.loginMap.remove(camera.getId()); -// } + GlobalVariable.loginMap.put(camera.getId(), lUserID); GlobalVariable.loginCameraMap.put(lUserID, camera); - camera.setLoginId(lUserID); + camera.setLoginId((long)lUserID); camera.setState("1"); int chanNum = m_strDeviceInfo.struDeviceV30.byChanNum; int startDchan = m_strDeviceInfo.struDeviceV30.byStartDChan + 1; @@ -260,16 +263,20 @@ startDchan = m_strDeviceInfo.struDeviceV30.byStartDChan; } camera.setChanNum(chanNum); - camera.setStartDChan(startDchan); + camera.setStartChan(startDchan); //鑾峰彇鏈�鏂伴�氶亾 List<ArdChannel> cameraChannelList = getChannels(camera); if (cameraChannelList.size() > 0) { + ardChannelService.deleteArdChannelByDeviceId(camera.getId()); + cameraChannelList.stream().forEach(channel -> { + ardChannelService.insertArdChannel(channel); + }); camera.setChannelList(cameraChannelList); - camera.setChanNum(cameraChannelList.size()); - ardCamerasService.updateArdCameras(camera); - //娣诲姞鍒版祦濯掍綋 - addVtdu(camera); + //camera.setChanNum(cameraChannelList.size()); + //閫氶亾鎵归噺娣诲姞鍒版祦濯掍綋 + batchAddVtdu(camera); } + ardCamerasService.updateArdCameras(camera); //鍒涘缓寮曞闃熷垪 createGuideQueue(camera); return AjaxResult.success("璁惧鐧诲綍鎴愬姛"); @@ -292,36 +299,19 @@ } } - //娣诲姞鍒版祦濯掍綋 - private void addVtdu(ArdCameras camera) { + //閫氶亾鎵归噺娣诲姞鍒版祦濯掍綋 + public void batchAddVtdu(ArdCameras camera) { try { - for (ArdChannel channel : camera.getChannelList()) { - String name = camera.getId() + "_" + channel.getChanNo(); - String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/h264/ch" + channel.getChanNo() + "/main/av_stream"; - Vtdu vtdu = vtduService.selectVtduByName(name); - if (vtdu != null) { - vtduService.deleteVtduByName(name); - } - //娣诲姞鍒版祦濯掍綋 - vtdu = new Vtdu(); - vtdu.setRtspSource(rtspSource); - vtdu.setName(camera.getId() + "_" + channel.getChanNo()); - CameraCmd cmd = new CameraCmd(camera.getId(), channel.getChanNo()); - Map<String, Object> videoCompressionCfg = getVideoCompressionCfg(cmd); - if (videoCompressionCfg.get("videoEncType").equals("鏍囧噯h264")) { - vtdu.setIsCode("0");//榛樿涓嶈浆鐮� - } else { - vtdu.setIsCode("1");//榛樿杞爜 - } - vtdu.setMode("1");//榛樿CPU杞В鐮� - vtdu.setCameraId(camera.getId()); - vtduService.insertVtdu(vtdu); - } + camera.getChannelList().stream().forEach(channel -> { + vtduService.addChanToVtdu(camera, channel); + }); } catch (Exception ex) { log.error("閫氶亾娣诲姞鍒版祦濯掍綋寮傚父锛�" + ex.getMessage()); } } + + /** * @鎻忚堪 娉ㄩ攢鐧诲綍 @@ -1102,7 +1092,10 @@ double[] targetPositions = cmd.getTargetPosition(); double[] cameraPTZ = GisUtil.getCameraPTZ(cameraPositon, targetPositions, 20, 150); String p = String.valueOf((int) (cameraPTZ[0] * 10)); - String t = String.valueOf((int) (cameraPTZ[1] * 10)); + //淇淇话 + double correctPitch = cameraSdkService.correctPitch(cmd); + double newt = cameraPTZ[1] + correctPitch; + String t = String.valueOf((int) (newt * 10)); String z = String.valueOf((int) (cameraPTZ[2] * 10)); m_ptzPosCurrent.wPanPos = (short) (Integer.parseInt(p, 16)); m_ptzPosCurrent.wTiltPos = (short) (Integer.parseInt(t, 16)); @@ -1115,7 +1108,7 @@ log.error("璁剧疆ptz澶辫触,璇风◢鍚庨噸璇�" + code); return AjaxResult.warn("璁剧疆ptz澶辫触:" + SdkErrorCodeEnum.getDescByCode(code) + "(" + code + ")"); } - return AjaxResult.success("寮曞鍧愭爣鎴愬姛"); + return AjaxResult.success("寮曞鍧愭爣鎴愬姛", correctPitch); } catch (Exception ex) { log.error("寮曞鍧愭爣寮傚父:" + ex.getMessage()); return AjaxResult.error("寮曞鍧愭爣寮傚父:" + ex.getMessage()); @@ -1841,27 +1834,24 @@ //鑾峰彇閫氶亾 List<ArdChannel> channelList = new ArrayList<>(); try { - //鍒犻櫎绠$悊閫氶亾 - ardChannelService.deleteArdChannelByDeviceId(camera.getId()); IntByReference ibrBytesReturned = new IntByReference(0);//鑾峰彇IP鎺ュ叆閰嶇疆鍙傛暟 HCNetSDK.NET_DVR_IPPARACFG_V40 m_strIpparaCfg = new HCNetSDK.NET_DVR_IPPARACFG_V40(); m_strIpparaCfg.write(); //lpIpParaConfig 鎺ユ敹鏁版嵁鐨勭紦鍐叉寚閽� Pointer lpIpParaConfig = m_strIpparaCfg.getPointer(); - boolean bRet = hCNetSDK.NET_DVR_GetDVRConfig(camera.getLoginId(), HCNetSDK.NET_DVR_GET_IPPARACFG_V40, 0, lpIpParaConfig, m_strIpparaCfg.size(), ibrBytesReturned); + boolean bRet = hCNetSDK.NET_DVR_GetDVRConfig(camera.getLoginId().intValue(), HCNetSDK.NET_DVR_GET_IPPARACFG_V40, 0, lpIpParaConfig, m_strIpparaCfg.size(), ibrBytesReturned); m_strIpparaCfg.read(); //log.debug("璧峰鏁板瓧閫氶亾鍙凤細" + m_strIpparaCfg.dwStartDChan);//m_strIpparaCfg.dwDChanNum for (int iChannum = 0; iChannum < camera.getChanNum(); iChannum++) { ArdChannel channel = new ArdChannel(); - int chanNo = iChannum + camera.getStartDChan(); + int chanNo = iChannum + camera.getStartChan(); 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(chanNo); 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); + boolean b_GetPicCfg = hCNetSDK.NET_DVR_GetDVRConfig(camera.getLoginId().intValue(), HCNetSDK.NET_DVR_GET_PICCFG_V40, lChannel.intValue(), pStrPicCfg, strPicCfg.size(), pInt); if (!b_GetPicCfg) { // log.error("鑾峰彇鍥惧儚鍙傛暟澶辫触锛岄敊璇爜锛�" + hCNetSDK.NET_DVR_GetLastError()); } @@ -1884,7 +1874,6 @@ } channelList.add(channel); } - ardChannelService.insertArdChannel(channel); } } catch (Exception ex) { log.error("鑾峰彇IP閫氶亾寮傚父:" + ex.getMessage()); @@ -1939,11 +1928,12 @@ @Override public AjaxResult localRecordStart(CameraCmd cmd) { try { + String operator = cmd.getOperator(); String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); // 鏈湴涓存椂褰曞儚鍦板潃 String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX; - String path = FileUtils.createFile(tempPath + "/" + cameraId + ".mp4"); + String path = FileUtils.createFile(tempPath + "/" + operator + "/" + cameraId + ".mp4"); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return AjaxResult.warn("璁惧鏈櫥褰�"); } @@ -2000,6 +1990,7 @@ @Override public AjaxResult localRecordStop(CameraCmd cmd) { try { + String operator = cmd.getOperator(); String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); Integer lRealHandle = cmd.getRecordId().intValue(); @@ -2034,7 +2025,7 @@ log.debug("鏈湴褰曞儚鍋滄"); // 鏈湴涓存椂褰曞儚鍦板潃 String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX; - String recordPath = FileUtils.createFile(tempPath + "/" + cameraId + ".mp4"); + String recordPath = FileUtils.createFile(tempPath + "/" + operator + "/" + cameraId + ".mp4"); byte[] recordBytes = Files.readAllBytes(Paths.get(recordPath)); return AjaxResult.success(recordBytes); } catch (Exception ex) { -- Gitblit v1.9.3