From 38f29e38fcc668171dc05c53d40a36b895c86102 Mon Sep 17 00:00:00 2001 From: liusuyi <1951119284@qq.com> Date: 星期四, 10 十月 2024 13:34:28 +0800 Subject: [PATCH] init --- ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java | 702 +++++++++++++++++++++++++++++++++------------------------ 1 files changed, 405 insertions(+), 297 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java index de23049..bb92799 100644 --- a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java +++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java @@ -4,44 +4,49 @@ import com.ruoyi.alarm.global.domain.GuideTask; import com.ruoyi.alarm.global.service.impl.QueueHandler; import com.ruoyi.common.annotation.SdkOperate; +import com.ruoyi.common.config.ARDConfig; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.core.domain.AjaxResult; 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.dhsdk.common.ErrorCode; import com.ruoyi.utils.sdk.dhsdk.lib.NetSDKLib; 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.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.PostConstruct; import javax.annotation.Resource; import java.io.*; +import java.nio.file.Files; +import java.nio.file.Paths; import java.text.DecimalFormat; -import java.util.Comparator; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; 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; @@ -63,6 +68,9 @@ private IArdChannelService ardChannelService; @Resource private IVtduService vtduService; + + @Resource + ICameraSdkService cameraSdkService; @Value("${minio.endpoint}") private String minioEndPoint; @Resource @@ -73,6 +81,11 @@ // 缃戠粶杩炴帴鎭㈠ private static HaveReConnect haveReConnect = new HaveReConnect(); + @PostConstruct + public void initSdk() { + log.info("鍒濆鍖栧ぇ鍗巗dk"); + LoginModule.init(disConnect, haveReConnect); + } /** * 鐧诲綍 @@ -82,190 +95,139 @@ * @return */ @Override - - public boolean login(ArdCameras camera) { - LoginModule.init(disConnect, haveReConnect); - NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex(); - NetSDKLib.LLong loginId = LoginModule.login(camera.getIp(), camera.getPort(), camera.getUsername(), camera.getPassword(), m_stDeviceInfo); - if (loginId.longValue() <= 0) { - camera.setChanNum(0); - camera.setLoginId(-1); - camera.setState("0"); + public AjaxResult login(ArdCameras camera) { + try { + NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex(); + NetSDKLib.LLong loginId = LoginModule.login(camera.getIp(), camera.getPort(), camera.getUsername(), camera.getPassword(), m_stDeviceInfo); + if (loginId.longValue() <= 0) { + camera.setChanNum(0); + camera.setLoginId(-1l); + camera.setState("0"); + ardCamerasService.updateArdCameras(camera); + //鍒犻櫎绠$悊閫氶亾 + ardChannelService.deleteArdChannelByDeviceId(camera.getId()); + log.warn("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍澶辫触:" + getErrorCodePrint()); + return AjaxResult.warn(ErrorCode.getErrorCode(LoginModule.netsdk.CLIENT_GetLastError())); + } + log.debug("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍鎴愬姛:" + (int) loginId.longValue()); + camera.setState("1"); + camera.setChanNum(m_stDeviceInfo.byChanNum); + camera.setStartChan(1); + camera.setLoginId(loginId.longValue()); + GlobalVariable.loginMap.put(camera.getId(), loginId); + //鑾峰彇鏈�鏂伴�氶亾 + List<ArdChannel> ardChannelList = getChannels(camera); + if (ardChannelList.size() > 0) { + ardChannelService.deleteArdChannelByDeviceId(camera.getId()); + ardChannelList.stream().forEach(channel -> { + ardChannelService.insertArdChannel(channel); + }); + camera.setChannelList(ardChannelList); + //閫氶亾鎵归噺娣诲姞鍒版祦濯掍綋 + batchAddVtdu(camera); + } ardCamerasService.updateArdCameras(camera); - //鍒犻櫎绠$悊閫氶亾 - ardChannelService.deleteArdChannelByDeviceId(camera.getId()); - return false; + //鍒涘缓寮曞闃熷垪 + createGuideQueue(camera); + //鍔犲叆宸茬櫥褰曡澶囬泦鍚� + GlobalVariable.loginedSet.add(camera); + return AjaxResult.success("璁惧鐧诲綍鎴愬姛"); + } catch (Exception ex) { + log.error("璁惧鐧诲綍寮傚父:" + ex.getMessage()); + return AjaxResult.error("璁惧鐧诲綍寮傚父:" + ex.getMessage()); } - if (GlobalVariable.loginMap.containsKey(camera.getId())) { - GlobalVariable.loginMap.remove(camera.getId()); - } - //鍒犻櫎绠$悊閫氶亾 - ardChannelService.deleteArdChannelByDeviceId(camera.getId()); - camera.setState("1"); - camera.setChanNum(m_stDeviceInfo.byChanNum); - camera.setStartDChan(1); - camera.setLoginId((int) loginId.longValue()); - ardCamerasService.updateArdCameras(camera); - GlobalVariable.loginMap.put(camera.getId(), loginId); + } - //鑾峰彇鏈�鏂伴�氶亾 - for (int i = 1; i < m_stDeviceInfo.byChanNum + 1; i++) { - ArdChannel channel = new ArdChannel(); - NetSDKLib.AV_CFG_ChannelName av_cfg_channelName = new NetSDKLib.AV_CFG_ChannelName(); - boolean b = ConfigModule.GetNewDevConfig(loginId, i - 1, CFG_CMD_CHANNELTITLE, av_cfg_channelName); - if (b) { - String chanName = null; - try { - chanName = new String(av_cfg_channelName.szName, "GBK").trim(); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - channel.setName(chanName); - } else { - channel.setName("閫氶亾" + i); + @Override + @Async("globalExecutor") + public AjaxResult asyncLogin(ArdCameras camera) { + try { + NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex(); + NetSDKLib.LLong loginId = LoginModule.login(camera.getIp(), camera.getPort(), camera.getUsername(), camera.getPassword(), m_stDeviceInfo); + if (loginId.longValue() <= 0) { + camera.setChanNum(0); + camera.setLoginId(-1l); + camera.setState("0"); + ardCamerasService.updateArdCameras(camera); + //鍒犻櫎绠$悊閫氶亾 + ardChannelService.deleteArdChannelByDeviceId(camera.getId()); + log.warn("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍澶辫触:" + getErrorCodePrint()); + return AjaxResult.warn(getErrorCodePrint()); } - channel.setDeviceId(camera.getId()); - channel.setChanNo(i); - ardChannelService.insertArdChannel(channel); - } - //閰嶇疆鍒版祦濯掍綋 - for (int i = 1; i < m_stDeviceInfo.byChanNum + 1; i++) { - String name = camera.getId() + "_" + i; - String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/cam/realmonitor?channel=" + i + "&subtype=0"; - Vtdu vtdu = vtduService.selectVtduByName(name); - if (vtdu != null) { - vtduService.deleteVtduByName(name); - } - //娣诲姞鍒版祦濯掍綋 - CameraCmd cmd = new CameraCmd(camera.getId(), i); - Map<String, Object> videoCompressionCfg = getVideoCompressionCfg(cmd); - vtdu = new Vtdu(); - if (videoCompressionCfg.get("videoEncType") != null) { - if (videoCompressionCfg.get("videoEncType").equals("鏍囧噯h264")) { - vtdu.setIsCode("0");//榛樿涓嶈浆鐮� - } else { - vtdu.setIsCode("1");//榛樿杞爜 - } - } else { - vtdu.setIsCode("0");//榛樿涓嶈浆鐮� - } - vtdu.setRtspSource(rtspSource); - vtdu.setName(camera.getId() + "_" + i); - vtdu.setMode("1");//榛樿CPU杞В鐮� - vtdu.setCameraId(camera.getId()); - vtduService.insertVtdu(vtdu); - } + log.debug("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍鎴愬姛:" + loginId); + camera.setState("1"); + camera.setChanNum(m_stDeviceInfo.byChanNum); + camera.setStartChan(1); + camera.setLoginId(loginId.longValue()); + ardCamerasService.updateArdCameras(camera); + GlobalVariable.loginMap.put(camera.getId(), loginId); - //鍒涘缓寮曞闃熷垪 - //鍒涘缓寮曞闃熷垪 - if (camera.getCamAlarmGuideEnable() == 1) { + //鑾峰彇鏈�鏂伴�氶亾 + List<ArdChannel> ardChannelList = getChannels(camera); + if (ardChannelList.size() > 0) { + ardChannelService.deleteArdChannelByDeviceId(camera.getId()); + ardChannelList.stream().forEach(channel -> { + ardChannelService.insertArdChannel(channel); + }); + camera.setChannelList(ardChannelList); + //閫氶亾鎵归噺娣诲姞鍒版祦濯掍綋 + batchAddVtdu(camera); + } + ardCamerasService.updateArdCameras(camera); + //鍒涘缓寮曞闃熷垪 + createGuideQueue(camera); + //鍔犲叆宸茬櫥褰曡澶囬泦鍚� + GlobalVariable.loginedSet.add(camera); + return AjaxResult.success("鐧诲綍鎴愬姛"); + } catch (Exception ex) { + log.error("鐧诲綍寮傚父:" + ex.getMessage()); + return AjaxResult.error("鐧诲綍寮傚父:" + ex.getMessage()); + } + } + + //閫氶亾鎵归噺娣诲姞鍒版祦濯掍綋 + public void batchAddVtdu(ArdCameras camera) { + camera.getChannelList().stream().forEach(channel -> { + vtduService.addChanToVtdu(camera, channel); + }); + } + + + //鍒涘缓寮曞闃熷垪 + private void createGuideQueue(ArdCameras camera) { + if (camera.getGdtype().equals("1")) { if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) { Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator(); PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator); GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue); + //鍚姩闃熷垪澶勭悊鍣� + queueHandler.process(camera.getId()); } - //鍚姩闃熷垪澶勭悊鍣� - queueHandler.process(camera.getId()); } - return true; } - @Override - @Async("loginExecutor") - public void asyncLogin(ArdCameras camera) { - LoginModule.init(disConnect, haveReConnect); - NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex(); - NetSDKLib.LLong loginId = LoginModule.login(camera.getIp(), camera.getPort(), camera.getUsername(), camera.getPassword(), m_stDeviceInfo); - if (loginId.longValue() <= 0) { - camera.setChanNum(0); - camera.setLoginId(-1); - camera.setState("0"); - ardCamerasService.updateArdCameras(camera); - //鍒犻櫎绠$悊閫氶亾 - ardChannelService.deleteArdChannelByDeviceId(camera.getId()); - return; + //鑾峰彇閫氶亾 + public List<ArdChannel> getChannels(ArdCameras camera) { + if (camera.getLoginId() < 0) { + return new ArrayList<>(); } - if (GlobalVariable.loginMap.containsKey(camera.getId())) { - GlobalVariable.loginMap.remove(camera.getId()); - } - //鍒犻櫎绠$悊閫氶亾 - ardChannelService.deleteArdChannelByDeviceId(camera.getId()); - camera.setState("1"); - camera.setChanNum(m_stDeviceInfo.byChanNum); - camera.setStartDChan(1); - camera.setLoginId((int) loginId.longValue()); - ardCamerasService.updateArdCameras(camera); - GlobalVariable.loginMap.put(camera.getId(), loginId); - - //鑾峰彇鏈�鏂伴�氶亾 - for (int i = 1; i < m_stDeviceInfo.byChanNum + 1; i++) { + LLong loginId = new LLong(camera.getLoginId()); + List<ArdChannel> ardChannelList = new ArrayList<>(); + for (int i = 1; i < camera.getChanNum() + 1; i++) { ArdChannel channel = new ArdChannel(); - NetSDKLib.AV_CFG_ChannelName av_cfg_channelName = new NetSDKLib.AV_CFG_ChannelName(); - boolean b = ConfigModule.GetNewDevConfig(loginId, i - 1, CFG_CMD_CHANNELTITLE, av_cfg_channelName); - if (b) { - String chanName = null; - try { - chanName = new String(av_cfg_channelName.szName, "GBK").trim(); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - channel.setName(chanName); - } else { - channel.setName("閫氶亾" + i); - } + String chanName = ConfigModule.getChannelName(loginId, i).trim(); + channel.setName(chanName.equals("") ? "閫氶亾" + i : chanName); channel.setDeviceId(camera.getId()); channel.setChanNo(i); - ardChannelService.insertArdChannel(channel); - } - //閰嶇疆鍒版祦濯掍綋 - addVtdu(camera); - //鍒涘缓寮曞闃熷垪 - createGuideQueue(camera); - } - - //娣诲姞鍒版祦濯掍綋 - private void addVtdu(ArdCameras camera) { - for (int i = 1; i < camera.getChanNum() + 1; i++) { - String name = camera.getId() + "_" + i; - String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/cam/realmonitor?channel=" + i + "&subtype=0"; - Vtdu vtdu = vtduService.selectVtduByName(name); - if (vtdu != null) { - vtduService.deleteVtduByName(name); - } - //娣诲姞鍒版祦濯掍綋 - CameraCmd cmd = new CameraCmd(camera.getId(), i); - Map<String, Object> videoCompressionCfg = getVideoCompressionCfg(cmd); - vtdu = new Vtdu(); - if (videoCompressionCfg.get("videoEncType") != null) { - if (videoCompressionCfg.get("videoEncType").equals("鏍囧噯h264")) { - vtdu.setIsCode("0");//榛樿涓嶈浆鐮� - } else { - vtdu.setIsCode("1");//榛樿杞爜 - } - } else { - vtdu.setIsCode("0");//榛樿涓嶈浆鐮� - } - vtdu.setRtspSource(rtspSource); - vtdu.setName(camera.getId() + "_" + i); - vtdu.setMode("1");//榛樿CPU杞В鐮� - vtdu.setCameraId(camera.getId()); - vtduService.insertVtdu(vtdu); - } - } - - //鍒涘缓寮曞闃熷垪 - private void createGuideQueue(ArdCameras camera) { - if (camera.getCamAlarmGuideEnable() != null) { - if (camera.getCamAlarmGuideEnable() == 1) { - if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) { - Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator(); - PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator); - GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue); - //鍚姩闃熷垪澶勭悊鍣� - queueHandler.process(camera.getId()); + if (camera.getGdtype().equals("2")) { + //NVR杩囨护涓嶅湪绾跨殑閫氶亾 + if (!ConfigModule.queryCameraState(loginId, camera.getChanNum(), i)) { + continue; } } + ardChannelList.add(channel); } + return ardChannelList; } /** @@ -317,14 +279,14 @@ */ @Override @SdkOperate - public boolean pTZControl(CameraCmd cmd) { + public AjaxResult pTZControl(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); Integer chanNo = cmd.getChanNo(); Integer speed = cmd.getSpeed(); Integer code = cmd.getCode(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + return AjaxResult.warn("璁惧鏈櫥褰�"); } NetSDKLib.LLong loginId = (NetSDKLib.LLong) GlobalVariable.loginMap.get(cameraId); int dwStop; @@ -391,8 +353,9 @@ boolean bool = PtzControlModule.ptzControl(loginId, chanNo - 1, dwPTZCommand, speed, speed, 0, dwStop); if (!bool) { log.error("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + getErrorCodePrint()); + return AjaxResult.warn(ErrorCode.getErrorCode(LoginModule.netsdk.CLIENT_GetLastError())); } - return bool; + return AjaxResult.success("浜戝彴鎺у埗鎴愬姛"); } /** @@ -401,36 +364,44 @@ * 2023/10/17 8:28:13 */ @Override - public Map<String, Object> getPtz(CameraCmd cmd) { + public AjaxResult getPtz(CameraCmd cmd) { Map<String, Object> ptzMap = new HashMap<>(); String cameraId = cmd.getCameraId(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return null; + return AjaxResult.warn("璁惧鏈櫥褰�"); } NetSDKLib.LLong loginId = (NetSDKLib.LLong) GlobalVariable.loginMap.get(cameraId); NetSDKLib.NET_PTZ_LOCATION_INFO dh_ptz_location_info = new NetSDKLib.NET_PTZ_LOCATION_INFO(); boolean b = ConfigModule.queryDevState(loginId, NET_DEVSTATE_PTZ_LOCATION, dh_ptz_location_info); - if (b) { - DecimalFormat df = new DecimalFormat("0.0");//璁剧疆淇濈暀浣嶆暟 - String nPTZPan = df.format((float) dh_ptz_location_info.nPTZPan / 10); - float t = (float) dh_ptz_location_info.nPTZTilt / 10 * -1; - String nPTZTilt = df.format(t < 0 ? t + 360 : t); - String nPTZZoom = df.format((float) dh_ptz_location_info.nPTZZoom); - ptzMap.put("p", nPTZPan); - ptzMap.put("t", nPTZTilt); - ptzMap.put("z", nPTZZoom); + if (!b) { + int code = netsdk.CLIENT_GetLastError(); + log.error("璁剧疆ptz澶辫触:" + getErrorCodePrint()); + return AjaxResult.warn("璁剧疆ptz澶辫触:" + getErrorCodePrint()); } - return ptzMap; + DecimalFormat df = new DecimalFormat("0.0");//璁剧疆淇濈暀浣嶆暟 + String nPTZPan = df.format((float) dh_ptz_location_info.nPTZPan / 10); + float t = (float) dh_ptz_location_info.nPTZTilt / 10 * -1; + String nPTZTilt = df.format(t < 0 ? t + 360 : t); + String nPTZZoom = df.format((float) dh_ptz_location_info.nPTZZoom); + ptzMap.put("p", nPTZPan); + ptzMap.put("t", nPTZTilt); + ptzMap.put("z", nPTZZoom); + return AjaxResult.success(ptzMap); } @Override - public Map<String, Object> getPtzScope(CameraCmd cmd) { - return null; + public AjaxResult getPtzHigh(CameraCmd cmd) { + return getPtz(cmd); } @Override - public boolean setPtz1(CameraCmd cmd) { - return setPtz(cmd) ; + public AjaxResult getPtzScope(CameraCmd cmd) { + return AjaxResult.success("鏈疄鐜拌鍔熻兘"); + } + + @Override + public AjaxResult setPtzHigh(CameraCmd cmd) { + return setPtz(cmd); } /** @@ -443,15 +414,18 @@ */ @Override @SdkOperate - public boolean setPtz(CameraCmd cmd) { + public AjaxResult setPtz(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); Map<String, Double> ptz = cmd.getPtzMap(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + return AjaxResult.warn("璁惧鏈櫥褰�"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); try { + if (ptz.get("p") == null || ptz.get("t") == null || ptz.get("z") == null) { + return AjaxResult.warn("ptz鍙傛暟涓嶈兘涓虹┖"); + } int p = (int) (ptz.get("p") * 10); int t = (int) (ptz.get("t") * 10); t = t > 900 ? 3600 - t : t * -1; @@ -459,12 +433,13 @@ int z = ptz.get("z").intValue() == 0 ? 1 : ptz.get("z").intValue(); boolean bool = netsdk.CLIENT_DHPTZControlEx(loginId, chanNo - 1, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_EXACTGOTO, p, t, z, 0); if (!bool) { - log.error("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + getErrorCodePrint()); + log.error("璁剧疆ptz澶辫触:" + getErrorCodePrint()); + return AjaxResult.warn("璁剧疆ptz澶辫触:" + getErrorCodePrint()); } - return bool; + return AjaxResult.success("璁剧疆ptz鎴愬姛"); } catch (Exception ex) { - log.error(ex.getMessage()); - return false; + log.error("璁剧疆ptz寮傚父:" + ex.getMessage()); + return AjaxResult.error("璁剧疆ptz寮傚父:" + ex.getMessage()); } } @@ -478,18 +453,19 @@ */ @Override @SdkOperate - public boolean setZeroPtz(CameraCmd cmd) { + public AjaxResult setZeroPtz(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + return AjaxResult.warn("璁惧鏈櫥褰�"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); boolean bool = NetSDKLib.NETSDK_INSTANCE.CLIENT_DHPTZControlEx(loginId, chanNo - 1, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RESETZERO, 0, 0, 0, 0); if (!bool) { - log.error("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + getErrorCodePrint()); + log.error("璁剧疆闆舵柟浣嶈澶辫触:" + getErrorCodePrint()); + return AjaxResult.warn("璁剧疆ptz澶辫触:" + getErrorCodePrint()); } - return bool; + return AjaxResult.success("璁剧疆闆舵柟浣嶈鎴愬姛"); } /** @@ -522,8 +498,99 @@ } @Override - public Map<String, Object> getPtz1(CameraCmd cmd) { - return null; + public AjaxResult localCapture(CameraCmd cmd) { + try { + String cameraId = cmd.getCameraId(); + Integer chanNo = cmd.getChanNo(); + if (!GlobalVariable.loginMap.containsKey(cameraId)) { + return AjaxResult.warn("璁惧鏈櫥褰�"); + } + LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); + // 鏈湴涓存椂褰曞儚鍦板潃 + String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX; + String imagePath = FileUtils.createFile(tempPath + "/" + cameraId + ".jpeg"); + fCaptureReceiveCB1 m_CaptureReceiveCB = new fCaptureReceiveCB1(imagePath); + CapturePictureModule.setSnapRevCallBack(m_CaptureReceiveCB); + boolean b = CapturePictureModule.remoteCapturePicture(loginId, chanNo - 1); + if (!b) { + return AjaxResult.warn("鏈湴鎶撳浘澶辫触"); + } + Thread.sleep(200); + byte[] imageBytes = Files.readAllBytes(Paths.get(imagePath)); + //OutputStream outputStream = response.getOutputStream(); + //outputStream.write(imageBytes); + // 鍒涘缓ByteBuffer骞跺皢瀛楄妭鏁扮粍鍐欏叆鍏朵腑 + //ByteBuffer jpegBuffer = ByteBuffer.wrap(imageBytes); + //Base64.Encoder decoder = Base64.getEncoder(); + //String png_base64 = decoder.encodeToString(jpegBuffer.array());//杞崲鎴恇ase64涓� + return AjaxResult.success(imageBytes); + } catch (Exception ex) { + return AjaxResult.error("鏈湴鎶撳浘寮傚父:" + ex); + } + } + + //鏈湴褰曞儚寮�濮� + @Override + public AjaxResult localRecordStart(CameraCmd cmd) { + try { + String operator = cmd.getOperator(); + String cameraId = cmd.getCameraId(); + Integer chanNo = cmd.getChanNo(); + + if (!GlobalVariable.loginMap.containsKey(cameraId)) { + return AjaxResult.warn("璁惧鏈櫥褰�"); + } + LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); + //if (GlobalVariable.previewMap.containsKey(cameraId)) { + // lRealHandle = new LLong(GlobalVariable.previewMap.get(cameraId)); + // RealPlayModule.stopRealPlay(lRealHandle); + // GlobalVariable.previewMap.remove(cameraId); + // log.debug("鍋滄褰撳墠褰曞儚"); + //} + + // 鏈湴涓存椂褰曞儚鍦板潃 + String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX; + String path = FileUtils.createFile(tempPath + "/" + operator + "/" + cameraId + ".mp4"); + LLong lRealHandle = RealPlayModule.startRealPlay(loginId, chanNo - 1, path); + if (lRealHandle.longValue() <= 0) { + log.error("鍙栨祦澶辫触" + getErrorCodePrint()); + } + log.debug("鏈湴褰曞儚寮�濮嬪彇娴佹垚鍔�"); + //GlobalVariable.previewMap.put(cameraId, lRealHandle.intValue()); + //GlobalVariable.threadMap.put(cameraId, Thread.currentThread().getName()); + //if (!netsdk.CLIENT_SaveRealData(lRealHandle, path)) { + // log.error("淇濆瓨瑙嗛鏂囦欢鍒颁复鏃舵枃浠跺す澶辫触 閿欒鐮佷负: " +getErrorCodePrint()); + // return false; + //} + log.debug("鏈湴褰曞儚寮�濮�"); + return AjaxResult.success("鏈湴褰曞儚寮�濮�", lRealHandle); + } catch (Exception ex) { + log.error("鏈湴褰曞儚寮�濮嬪紓甯�" + ex.getMessage()); + return AjaxResult.error("鏈湴褰曞儚寮�濮嬪紓甯�" + ex.getMessage()); + } + } + + //鏈湴褰曞儚鍋滄 + @Override + public AjaxResult localRecordStop(CameraCmd cmd) { + try { + String operator = cmd.getOperator(); + String cameraId = cmd.getCameraId(); + LLong lRealHandle = new LLong(cmd.getRecordId()); + if (!GlobalVariable.loginMap.containsKey(cameraId)) { + return AjaxResult.warn("璁惧鏈櫥褰�"); + } + RealPlayModule.stopRealPlay(lRealHandle); + log.debug("鏈湴褰曞儚鍋滄"); + // 鏈湴涓存椂褰曞儚鍦板潃 + String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX; + String recordPath = FileUtils.createFile(tempPath + "/" + operator + "/" + cameraId + ".mp4"); + byte[] imageBytes = Files.readAllBytes(Paths.get(recordPath)); + return AjaxResult.success(imageBytes); + } catch (Exception ex) { + log.error("鏈湴褰曞儚鍋滄寮傚父" + ex.getMessage()); + return AjaxResult.error("鏈湴褰曞儚鍋滄寮傚父" + ex.getMessage()); + } } /** @@ -540,7 +607,9 @@ String url = ""; String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); - String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4"); + // 鏈湴涓存椂褰曞儚鍦板潃 + String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX; + String path = FileUtils.createFile(tempPath + "/" + cameraId + ".mp4"); boolean enable = cmd.isEnable(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return ""; @@ -566,6 +635,15 @@ GlobalVariable.previewMap.remove(cameraId); } log.debug("褰曞儚鍋滄"); + //瀛樺叆minio + String BucketName = "record"; + String ObjectName = IdUtils.fastSimpleUUID() + ".mp4"; + FileInputStream stream = new FileInputStream(path); + boolean b = MinioUtil.uploadObject(BucketName, ObjectName, stream, stream.available(), "video/MP4"); + if (b) { + url = MinioUtil.getBucketObjectUrl(BucketName, ObjectName); + log.debug("涓婁紶鏂囦欢鎴愬姛!" + url); + } } return url; } catch (Exception ex) { @@ -579,7 +657,9 @@ try { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); - String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4"); + // 鏈湴涓存椂褰曞儚鍦板潃 + String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX; + String path = FileUtils.createFile(tempPath + "/" + cameraId + ".mp4"); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } @@ -615,7 +695,9 @@ String url = ""; try { String cameraId = cmd.getCameraId(); - String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4"); + // 鏈湴涓存椂褰曞儚鍦板潃 + String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX; + String path = FileUtils.createFile(tempPath + "/" + cameraId + ".mp4"); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return ""; } @@ -665,10 +747,6 @@ return result; } - @Override - public List<ArdChannel> getIPChannelInfo(ArdCameras camera) { - return null; - } /** * 寮曞鐩爣浣嶇疆 @@ -676,11 +754,11 @@ * 2023/10/17 8:27:48 */ @Override - public boolean guideTargetPosition(CameraCmd cmd) { + public AjaxResult guideTargetPosition(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + return AjaxResult.warn("璁惧鏈櫥褰�"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); try { @@ -688,74 +766,78 @@ double[] cameraPositon = new double[]{cameras.getLongitude(), cameras.getLatitude(), cameras.getAltitude()}; double[] targetPositions = cmd.getTargetPosition(); double[] cameraPTZ = GisUtil.getCameraPTZ(cameraPositon, targetPositions, 20, 150); + //淇淇话 + double correctPitch = cameraSdkService.correctPitch(cmd); + double newt = cameraPTZ[1] + correctPitch; int p = (int) (cameraPTZ[0] * 10); - int t = (int) (cameraPTZ[1] * 10); + int t = (int) (newt * 10); int z = (int) (cameraPTZ[2]); boolean bool = netsdk.CLIENT_DHPTZControlEx(loginId, chanNo - 1, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_EXACTGOTO, p, t, z, 0); if (!bool) { - log.error("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + getErrorCodePrint()); + log.error("璁剧疆ptz澶辫触:" + getErrorCodePrint()); + return AjaxResult.warn("璁剧疆ptz澶辫触:" + getErrorCodePrint()); } - return bool; + return AjaxResult.success("寮曞鐩爣浣嶇疆鎴愬姛", correctPitch); } catch (Exception ex) { - log.error("寮曞寮傚父:" + ex.getMessage()); - return false; + log.error("寮曞鐩爣浣嶇疆寮傚父:" + ex.getMessage()); + return AjaxResult.error("寮曞鐩爣浣嶇疆寮傚父:" + ex.getMessage()); } } //杞嚦棰勭疆鐐� @Override - public boolean gotoPreset(CameraCmd cmd) { + public AjaxResult gotoPreset(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); Integer PresetIndex = cmd.getPresetIndex(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + return AjaxResult.warn("璁惧鏈櫥褰�"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); try { - boolean bool = netsdk.CLIENT_DHPTZControlEx(loginId, chanNo - 1, NET_PTZ_POINT_MOVE_CONTROL, 0, PresetIndex, 0, 0); if (!bool) { - log.error("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + getErrorCodePrint()); + log.error("杞嚦棰勭疆鐐瑰け璐�:" + getErrorCodePrint()); + return AjaxResult.warn("杞嚦棰勭疆鐐瑰け璐�:" + getErrorCodePrint()); } - return bool; + return AjaxResult.success("杞嚦棰勭疆鐐规垚鍔�"); } catch (Exception ex) { log.error("杞嚦棰勭疆鐐瑰紓甯�:" + ex.getMessage()); - return false; + return AjaxResult.error("杞嚦棰勭疆鐐瑰紓甯�:" + ex.getMessage()); } } @Override //璁剧疆棰勭疆浣� - public boolean setPreset(CameraCmd cmd) { + public AjaxResult setPreset(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); Integer PresetIndex = cmd.getPresetIndex(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + return AjaxResult.warn("璁惧鏈櫥褰�"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); try { - boolean bool = netsdk.CLIENT_DHPTZControlEx(loginId, chanNo - 1, NET_PTZ_POINT_SET_CONTROL, 0, PresetIndex, 0, 0); if (!bool) { - log.error("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + getErrorCodePrint()); + log.error("璁剧疆棰勭疆鐐瑰け璐�:" + getErrorCodePrint()); + return AjaxResult.warn("璁剧疆棰勭疆鐐瑰け璐�:" + getErrorCodePrint()); } - return bool; + return AjaxResult.success("璁剧疆棰勭疆鐐规垚鍔�"); } catch (Exception ex) { log.error("璁剧疆棰勭疆鐐瑰紓甯�:" + ex.getMessage()); - return false; + return AjaxResult.error("璁剧疆棰勭疆鐐瑰紓甯�:" + ex.getMessage()); } } //鍒囨崲鑱氱劍妯″紡 @Override - public boolean controlFocusMode(CameraCmd cmd) { + public AjaxResult controlFocusMode(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); boolean enable = cmd.isEnable(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + return AjaxResult.warn("璁惧鏈櫥褰�"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); try { @@ -779,22 +861,24 @@ cfg_video_in_focus.nChannelIndex = chanNo - 1; boolean bool = ConfigModule.SetDevConfig(loginId, chanNo - 1, NetSDKLib.CFG_CMD_VIDEOIN_FOCUS, cfg_video_in_focus); if (!bool) { - log.error("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + getErrorCodePrint()); + log.error("鍒囨崲鑱氱劍妯″紡澶辫触:" + getErrorCodePrint()); + return AjaxResult.warn("鍒囨崲鑱氱劍妯″紡澶辫触:" + getErrorCodePrint()); } - return bool; + return AjaxResult.success("鍒囨崲鑱氱劍妯″紡鎴愬姛"); } catch (Exception ex) { log.error("鍒囨崲鑱氱劍妯″紡寮傚父:" + ex.getMessage()); - return false; + return AjaxResult.error("鍒囨崲鑱氱劍妯″紡寮傚父:" + ex.getMessage()); } } + //鑾峰彇鑱氱劍妯″紡 @Override - public String getFocusMode(CameraCmd cmd) { + public AjaxResult getFocusMode(CameraCmd cmd) { String mode = ""; String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return ""; + return AjaxResult.warn("璁惧鏈櫥褰�"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); try { @@ -802,10 +886,11 @@ int emCfgOpType = NET_EM_CFG_OPERATE_TYPE.NET_EM_CFG_VIDEOIN_FOCUSMODE; boolean bool = ConfigModule.GetConfig(loginId, chanNo - 1, emCfgOpType, focusModeInfo); if (!bool) { - log.error("鑾峰彇澶辫触,璇风◢鍚庨噸璇�" + getErrorCodePrint()); + log.error("鑾峰彇鑱氱劍妯″紡澶辫触:" + getErrorCodePrint()); + return AjaxResult.warn("鑾峰彇鑱氱劍妯″紡澶辫触:" + getErrorCodePrint()); } - System.out.println("閰嶇疆绫诲瀷:" + focusModeInfo.emCfgType); // 鍏蜂綋淇℃伅锛屽弬鑰冨簱閲岀殑鏋氫妇 - System.out.println("鑱氱劍妯″紡:" + focusModeInfo.emFocusMode); + //System.out.println("閰嶇疆绫诲瀷:" + focusModeInfo.emCfgType); // 鍏蜂綋淇℃伅锛屽弬鑰冨簱閲岀殑鏋氫妇 + //System.out.println("鑱氱劍妯″紡:" + focusModeInfo.emFocusMode); switch (focusModeInfo.emFocusMode) { case 0: mode = "鍏抽棴"; @@ -823,119 +908,110 @@ mode = "鎵嬪姩鑱氱劍"; break; } - + return AjaxResult.success(mode); } catch (Exception ex) { log.error("鑾峰彇鑱氱劍妯″紡寮傚父:" + ex.getMessage()); - + return AjaxResult.error("鑾峰彇鑱氱劍妯″紡寮傚父:" + ex.getMessage()); } - return mode; } @Override - public boolean controlPTHeateRpwron(CameraCmd cmd) { - return false; + public AjaxResult controlPTHeateRpwron(CameraCmd cmd) { + return AjaxResult.success("璇ュ姛鑳芥湭瀹炵幇"); } @Override - public boolean controlCameraDeicing(CameraCmd cmd) { - return false; + public AjaxResult controlCameraDeicing(CameraCmd cmd) { + return AjaxResult.success("璇ュ姛鑳芥湭瀹炵幇"); } @Override - public int getPTZLockInfo(CameraCmd cmd) { - return 0; + public AjaxResult getPTZLockInfo(CameraCmd cmd) { + return AjaxResult.success("璇ュ姛鑳芥湭瀹炵幇"); } - @Override - public String captureJPEGPicture(CameraCmd cmd) { - return null; - } - //閫忛浘 + //鍒囨崲閫忛浘 @Override - public boolean controlDefogcfg(CameraCmd cmd) { + public AjaxResult controlDefogcfg(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); boolean enable = cmd.isEnable(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + return AjaxResult.warn("璁惧鏈櫥褰�"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); try { String command = EM_NEW_CONFIG.CFG_CMD_VIDEOINDEFOG.getValue(); - //CFG_VIDEOINDEFOG_LIST cfg_videoindefog_list=new CFG_VIDEOINDEFOG_LIST(); - boolean bool = ConfigModule.SetDevConfig(loginId, chanNo - 1, command, null); + NET_VIDEOIN_DEFOG_INFO netVideoinDefogInfo = new NET_VIDEOIN_DEFOG_INFO(); + boolean bool = ConfigModule.SetDevConfig(loginId, chanNo - 1, command, netVideoinDefogInfo); if (!bool) { - log.error("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + getErrorCodePrint()); + log.error("鍒囨崲閫忛浘澶辫触:" + getErrorCodePrint()); + return AjaxResult.warn("鍒囨崲閫忛浘澶辫触:" + getErrorCodePrint()); } - return bool; + return AjaxResult.success("鍒囨崲閫忛浘鎴愬姛"); } catch (Exception ex) { - log.error("鍒囨崲閫忛浘寮傚父:" + ex.getMessage()); - return false; + return AjaxResult.error("鍒囨崲閫忛浘寮傚父:" + ex.getMessage()); } } - //绾㈠ + //鍒囨崲绾㈠ @Override - public boolean controlInfrarecfg(CameraCmd cmd) { + public AjaxResult controlInfrarecfg(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); - boolean enable = cmd.isEnable(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + return AjaxResult.warn("璁惧鏈櫥褰�"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); try { - CFG_LIGHTING_INFO cfg_lighting_info = new CFG_LIGHTING_INFO(); - cfg_lighting_info.nLightingDetailNum = 1; - if (enable) { - cfg_lighting_info.stuLightingDetail[0].emMode = EM_CFG_LIGHTING_MODE.EM_CFG_LIGHTING_MODE_MANUAL; - } else { - cfg_lighting_info.stuLightingDetail[0].emMode = EM_CFG_LIGHTING_MODE.EM_CFG_LIGHTING_MODE_OFF; - } - boolean bool = ConfigModule.SetDevConfig(loginId, chanNo - 1, CFG_CMD_LIGHTING, cfg_lighting_info); + CFG_INFRARED_INFO cfg_infrared_info = new CFG_INFRARED_INFO(); + boolean bool = ConfigModule.SetDevConfig(loginId, chanNo - 1, CFG_CMD_INFRARED_CONFIG, cfg_infrared_info); if (!bool) { - log.error("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + getErrorCodePrint()); + log.error("鍒囨崲绾㈠澶辫触:" + getErrorCodePrint()); + return AjaxResult.warn("鍒囨崲绾㈠澶辫触:" + getErrorCodePrint()); } - return bool; + return AjaxResult.success("鍒囨崲绾㈠鎴愬姛"); } catch (Exception ex) { - log.error("鍒囨崲绾㈠寮傚父:" + ex.getMessage()); - return false; + return AjaxResult.error("鍒囨崲绾㈠寮傚父:" + getErrorCodePrint()); } } //鑾峰彇鑱氱劍鍊� @Override - public int getFocusPos(CameraCmd cmd) { + public AjaxResult getFocusPos(CameraCmd cmd) { int result = 0; try { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return result; + return AjaxResult.warn("璁惧鏈櫥褰�"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); NET_PTZ_LOCATION_INFO net_ptz_location_info = new NET_PTZ_LOCATION_INFO(); net_ptz_location_info.nChannelID = chanNo - 1; boolean bool = ConfigModule.queryDevState(loginId, NET_DEVSTATE_PTZ_LOCATION, net_ptz_location_info); if (!bool) { - log.error("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + getErrorCodePrint()); + log.error("鑾峰彇鑱氱劍鍊煎け璐�:" + getErrorCodePrint()); + return AjaxResult.warn("鑾峰彇鑱氱劍鍊煎け璐�:" + getErrorCodePrint()); } result = net_ptz_location_info.nFocusMapValue; + return AjaxResult.success(result); } catch (Exception ex) { log.error("鑾峰彇鑱氱劍鍊煎紓甯�:" + ex.getMessage()); + return AjaxResult.error("鑾峰彇鑱氱劍鍊煎紓甯�:" + getErrorCodePrint()); } - return result; + } //璁剧疆鑱氱劍鍊� @Override - public boolean setFocusPos(CameraCmd cmd) { + public AjaxResult setFocusPos(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); boolean enable = cmd.isEnable(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + return AjaxResult.warn("璁惧鏈櫥褰�"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); try { @@ -948,12 +1024,13 @@ } boolean bool = ConfigModule.SetDevConfig(loginId, chanNo - 1, CFG_CMD_LIGHTING, cfg_lighting_info); if (!bool) { - log.error("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + getErrorCodePrint()); + log.error("璁剧疆鑱氱劍鍊煎け璐�:" + getErrorCodePrint()); + return AjaxResult.warn("璁剧疆鑱氱劍鍊煎け璐�:" + getErrorCodePrint()); } - return bool; + return AjaxResult.success("璁剧疆鑱氱劍鍊兼垚鍔�"); } catch (Exception ex) { log.error("璁剧疆鑱氱劍鍊煎紓甯�:" + ex.getMessage()); - return false; + return AjaxResult.error("璁剧疆鑱氱劍鍊煎け璐�:" + ex.getMessage()); } } @@ -1025,30 +1102,32 @@ return map; } - //鑾峰彇GIS淇℃伅鏁版嵁 + //鑾峰彇浜戝彴鍙鍩� @Override - public Map<String, Object> getGisInfo(CameraCmd cmd) { - Map<String, Object> map = new HashMap<>(); + public AjaxResult getGisInfo(CameraCmd cmd) { try { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return null; + return AjaxResult.warn("璁惧鏈櫥褰�"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); DH_OUT_PTZ_VIEW_RANGE_STATUS dh_out_ptz_view_range_status = new DH_OUT_PTZ_VIEW_RANGE_STATUS(); boolean b = ConfigModule.queryDevState(loginId, NET_DEVSTATE_PTZ_VIEW_RANGE, dh_out_ptz_view_range_status); - if (b) { - float nAngelH = (float) dh_out_ptz_view_range_status.nAngelH / 10; - float nAngelV = (float) dh_out_ptz_view_range_status.nAngelV / 10; - map = getPtz(cmd);//鑾峰彇ptz - map.put("fHorFieldAngle", nAngelH);// 姘村钩瑙嗗満瑙� - map.put("fVerFieldAngle", nAngelV);// 鍨傜洿瑙嗗満瑙� + if (!b) { + log.error("鑾峰彇浜戝彴鍙鍩熷け璐�:" + getErrorCodePrint()); + return AjaxResult.warn("鑾峰彇浜戝彴鍙鍩熷け璐�:" + getErrorCodePrint()); } + float nAngelH = (float) dh_out_ptz_view_range_status.nAngelH / 10; + float nAngelV = (float) dh_out_ptz_view_range_status.nAngelV / 10; + Map<String, Object> map = getPtz(cmd);//鑾峰彇ptz + map.put("fHorFieldAngle", nAngelH);// 姘村钩瑙嗗満瑙� + map.put("fVerFieldAngle", nAngelV);// 鍨傜洿瑙嗗満瑙� + return AjaxResult.success(map); } catch (Exception ex) { log.error("鑾峰彇浜戝彴鍙鍩熷紓甯�" + ex.getMessage()); + return AjaxResult.error("鑾峰彇浜戝彴鍙鍩熷紓甯�:" + getErrorCodePrint()); } - return map; } // 璁惧鏂嚎鍥炶皟: 褰撹澶囧嚭鐜版柇绾挎椂锛孲DK浼氳皟鐢ㄨ鍑芥暟 @@ -1097,4 +1176,33 @@ } } + // 鎶撳浘鎺ユ敹鍥炶皟:褰撴姄鍥炬垚鍔燂紝sdk浼氳皟鐢ㄨ鍑芥暟 + public static class fCaptureReceiveCB1 implements NetSDKLib.fSnapRev { + private String picPath; + + public fCaptureReceiveCB1(String picPath) { + this.picPath = picPath; + } + + public void invoke(LLong lLoginID, Pointer pBuf, int RevLen, int EncodeType, int CmdSerial, Pointer dwUser) { + if (pBuf != null && RevLen > 0) { + byte[] buf = pBuf.getByteArray(0, RevLen); + //瀛樺偍鍒版湰鍦� + InputStream input = new ByteArrayInputStream(buf); + OutputStream output = null; + try { + output = new FileOutputStream(picPath); + byte[] buffer = new byte[1024]; + int bytesRead; + while ((bytesRead = input.read(buffer)) != -1) { + output.write(buffer, 0, bytesRead); + } + input.close(); + output.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } } -- Gitblit v1.9.3