From 7265b3d4b666f3a59f69c6dbc556098475041a27 Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期一, 16 十月 2023 17:25:18 +0800 Subject: [PATCH] 1. 增加获取和设置PTZ接口 2. 增加相机抓图和录像接口 3. 增加设置零方位角接口 4. 增加在线状态检测接口 5. 增加云台控制接口 --- ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java | 610 ++++++++++++++++++ ard-work/src/main/java/com/ruoyi/device/dhsdk/service/IDhClientService.java | 12 ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/HikSdkController.java | 659 +++++++++---------- ard-work/src/main/java/com/ruoyi/device/dhsdk/module/RealPlayModule.java | 44 + ard-work/src/main/java/com/ruoyi/device/dhsdk/module/CapturePictureModule.java | 104 +++ ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java | 31 ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java | 109 +++ ard-work/src/main/java/com/ruoyi/device/dhsdk/controller/DhSdkController.java | 47 ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java | 239 ++++++ ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java | 105 +- ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java | 7 11 files changed, 1,535 insertions(+), 432 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java b/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java index b7e6aef..7bb9070 100644 --- a/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java +++ b/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java @@ -10,6 +10,7 @@ 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.dhsdk.service.IDhClientService; import com.ruoyi.device.hiksdk.service.IHikClientService; import io.swagger.annotations.Api; @@ -58,26 +59,20 @@ public class CameraSdkController extends BaseController { @Resource - private IHikClientService hikClientService; - @Resource - private IDhClientService dhClientService; + private ICameraSdkService cameraSdkService; @Resource private IArdCamerasService ardCamerasService; /** - * @鎻忚堪 鍒濆鍔犺浇娴峰悍搴撴枃浠� - * @鍙傛暟 [] + * @鎻忚堪 鍒濆鍔犺浇SDK搴撴枃浠� * @杩斿洖鍊� void * @鍒涘缓浜� 鍒樿嫃涔� * @鍒涘缓鏃堕棿 2023/1/17 16:13 * @淇敼浜哄拰鍏跺畠淇℃伅 if (Platform.isLinux()) */ @PostConstruct - public void initHCNetSDK() { - //鍒濆鍖栧姞杞絪dk搴撴枃浠� - hikClientService.loadHCNetSDKLib(); - //鐧诲綍鎵�鏈夌浉鏈� - hikClientService.loginAll(); + public void initSDK() { + cameraSdkService.initSDK(); } @RequestMapping("/preview") @@ -103,7 +98,7 @@ @Log(title = "鑾峰彇鐮佹祦鍘嬬缉鍙傛暟", businessType = BusinessType.CONTROL) public @ResponseBody AjaxResult getVideoCompressionCfg(@RequestBody CameraCmd cmd) { - return AjaxResult.success(hikClientService.getVideoCompressionCfg(cmd)); + return AjaxResult.success(cameraSdkService.getVideoCompressionCfg(cmd)); } @ApiOperation("鍦ㄧ嚎鐘舵��") @@ -113,7 +108,7 @@ public @ResponseBody AjaxResult getOnlineState(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); - boolean onLine = hikClientService.isOnLine(cmd); + boolean onLine = cameraSdkService.isOnLine(cmd); return AjaxResult.success(onLine); } @@ -125,7 +120,7 @@ public @ResponseBody AjaxResult PTZControlWithSpeed(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(hikClientService.pTZControlWithSpeed(cmd)); + return toAjax(cameraSdkService.pTZControl(cmd)); } @ApiOperation("璋冪敤棰勭疆鐐�") @@ -135,7 +130,7 @@ public @ResponseBody AjaxResult gotoPreset(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(hikClientService.gotoPreset(cmd)); + return toAjax(cameraSdkService.gotoPreset(cmd)); } @ApiOperation("璁剧疆棰勭疆鐐�") @@ -145,7 +140,7 @@ public @ResponseBody AjaxResult setPreset(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(hikClientService.setPreset(cmd)); + return toAjax(cameraSdkService.setPreset(cmd)); } @ApiOperation("鑾峰彇鑱氱劍鍊�") @@ -155,7 +150,7 @@ public @ResponseBody AjaxResult getFocusPos(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); - Map<String, Object> Map = hikClientService.getFocusPos(cmd); + Map<String, Object> Map = cameraSdkService.getFocusPos(cmd); return AjaxResult.success("鑾峰彇鑱氱劍鍊�", Map); } @@ -166,7 +161,7 @@ public @ResponseBody AjaxResult setFocusPos(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(hikClientService.setFocusPos(cmd)); + return toAjax(cameraSdkService.setFocusPos(cmd)); } @ApiOperation("鑾峰彇PTZ") @@ -176,7 +171,7 @@ public @ResponseBody AjaxResult getPTZ(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); - Map<String, Object> ptzMap = hikClientService.getPtz(cmd); + Map<String, Object> ptzMap = cameraSdkService.getPtz(cmd); return AjaxResult.success("鑾峰彇ptz", ptzMap); } @@ -187,7 +182,7 @@ public @ResponseBody AjaxResult getPTZScope(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); - Map<String, Object> ptzMap = hikClientService.getPtzScope(cmd); + Map<String, Object> ptzMap = cameraSdkService.getPtzScope(cmd); return AjaxResult.success("鑾峰彇ptz鑼冨洿", ptzMap); } @@ -198,7 +193,7 @@ public @ResponseBody AjaxResult setPTZ(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(hikClientService.setPtz(cmd)); + return toAjax(cameraSdkService.setPtz(cmd)); } @ApiOperation("鎸囧悜鐩爣") @@ -208,7 +203,7 @@ public @ResponseBody AjaxResult setTargetPosition(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(hikClientService.guideTargetPosition(cmd)); + return toAjax(cameraSdkService.guideTargetPosition(cmd)); } @@ -219,7 +214,7 @@ public @ResponseBody AjaxResult setZeroPTZ(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(hikClientService.setZeroPtz(cmd)); + return toAjax(cameraSdkService.setZeroPtz(cmd)); } @ApiOperation("璁剧疆閿佸畾") @@ -229,7 +224,7 @@ public @ResponseBody AjaxResult setPTZLock(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); - return AjaxResult.success(hikClientService.controlLock(cmd)); + return AjaxResult.success(cameraSdkService.controlLock(cmd)); } @ApiOperation("璁剧疆瑙i攣") @@ -239,7 +234,7 @@ public @ResponseBody AjaxResult setPTZUnLock(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); - return AjaxResult.success(hikClientService.controlUnLock(cmd)); + return AjaxResult.success(cameraSdkService.controlUnLock(cmd)); } @ApiOperation("鑾峰彇浜戝彴閿佸畾淇℃伅") @@ -249,7 +244,7 @@ public @ResponseBody AjaxResult getPTZLockInfo(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); - int byWorkMode = hikClientService.getPTZLockInfo(cmd); + int byWorkMode = cameraSdkService.getPTZLockInfo(cmd); if (byWorkMode == 0) { return AjaxResult.success("浜戝彴閿佸畾鐘舵�侊細瑙i攣"); } else if (byWorkMode == 1) { @@ -266,7 +261,7 @@ public @ResponseBody AjaxResult defogcfg(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(hikClientService.controlDefogcfg(cmd)); + return toAjax(cameraSdkService.controlDefogcfg(cmd)); } @ApiOperation("绾㈠寮�鍏�") @@ -276,7 +271,7 @@ public @ResponseBody AjaxResult infrarecfg(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(hikClientService.controlInfrarecfg(cmd)); + return toAjax(cameraSdkService.controlInfrarecfg(cmd)); } @ApiOperation(value = "鎵嬪姩/鑷姩鑱氱劍", notes = "true鎵嬪姩flase鑷姩") @@ -286,7 +281,7 @@ public @ResponseBody AjaxResult enableFocusMode(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(hikClientService.controlFocusMode(cmd)); + return toAjax(cameraSdkService.controlFocusMode(cmd)); } @ApiOperation(value = "鑾峰彇鑱氱劍妯″紡", notes = "1鎵嬪姩2鑷姩") @@ -294,7 +289,7 @@ public @ResponseBody AjaxResult getFocusMode(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); - String focusMode = hikClientService.getFocusMode(cmd); + String focusMode = cameraSdkService.getFocusMode(cmd); return AjaxResult.success(focusMode); } @@ -305,7 +300,7 @@ public @ResponseBody AjaxResult heateRpwron(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(hikClientService.controlPTHeateRpwron(cmd)); + return toAjax(cameraSdkService.controlPTHeateRpwron(cmd)); } @@ -316,15 +311,7 @@ public @ResponseBody AjaxResult cameraDeicing(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(hikClientService.controlCameraDeicing(cmd)); - } - - @PostMapping("/captureJPEGPicture") - public @ResponseBody - AjaxResult captureJPEGPicture(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - String base64Str = hikClientService.captureJPEGPicture(cmd); - return toAjaxString(base64Str, "鐩告満鎶撳浘"); + return toAjax(cameraSdkService.controlCameraDeicing(cmd)); } @ApiOperation("鐩告満鎶撳浘") @@ -334,28 +321,38 @@ public @ResponseBody AjaxResult picCutCate(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); - String path = hikClientService.picCutCate(cmd); + String path = cameraSdkService.picCutCate(cmd); return toAjaxString(path, "鐩告満鎶撳浘"); } - @ApiOperation("鎵嬪姩褰曞儚") - @PostMapping("/record") - @Log(title = "鎵嬪姩褰曞儚", businessType = BusinessType.CONTROL) - @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"}) - public @ResponseBody - AjaxResult record(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - String path = hikClientService.record(cmd); - return toAjaxString(path, "鎵嬪姩褰曞儚"); - } - @ApiOperation("鑾峰彇鐩告満鏋惰鍙傛暟") - @PostMapping("/getCameraSetupCFG") + @PostMapping("/getGisInfo") @Log(title = "鑾峰彇鐩告満鏋惰鍙傛暟", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"}) public @ResponseBody - AjaxResult getCameraSetupCFG(@RequestBody CameraCmd cmd) { + AjaxResult getGisInfo(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); - return AjaxResult.success(hikClientService.getGisInfo(cmd)); + return AjaxResult.success(cameraSdkService.getGisInfo(cmd)); + } + + @ApiOperation("鎵嬪姩褰曞儚寮�濮�") + @PostMapping("/recordStart") + @Log(title = "鎵嬪姩褰曞儚寮�濮�", businessType = BusinessType.CONTROL) + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) + public @ResponseBody + AjaxResult recordStart(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + boolean b = cameraSdkService.recordStart(cmd); + return toAjax(b); + } + @ApiOperation("鎵嬪姩褰曞儚鍋滄") + @PostMapping("/recordStop") + @Log(title = "鎵嬪姩褰曞儚鍋滄", businessType = BusinessType.CONTROL) + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.recordBucketName", "cmd.recordObjectName"}) + public @ResponseBody + AjaxResult recordStop(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + String url = cameraSdkService.recordStopToMinio(cmd); + return AjaxResult.success(url); } } diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java new file mode 100644 index 0000000..c39fe05 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java @@ -0,0 +1,109 @@ +package com.ruoyi.device.camera.service; + +import com.ruoyi.device.camera.domain.ArdCameras; +import com.ruoyi.device.camera.domain.CameraCmd; +import com.ruoyi.device.channel.domain.ArdChannel; + +import java.util.List; +import java.util.Map; + +public interface ICameraSdkService { + //sdk鍒濆鍖� + void initSDK(); + + //鍚屾鐧诲綍 + void syncLogin(ArdCameras cameras); + + //寮傛鐧诲綍 + void asyncLogin(ArdCameras cameras); + + //鐧诲綍鎵�鏈夌浉鏈� + void loginAll(); + + //娉ㄩ攢 + boolean logout(String cameraId); + + //鍦ㄧ嚎鐘舵�� + boolean isOnLine(CameraCmd cmd); + + //浜戝彴鎺у埗 + boolean pTZControl(CameraCmd cmd); + + //璁剧疆鑱氱劍鍊� + boolean setFocusPos(CameraCmd cmd); + + //鑾峰彇鑱氱劍鍊� + Map<String, Object> getFocusPos(CameraCmd cmd); + + //璁剧疆棰勭疆浣� + boolean setPreset(CameraCmd cmd); + + //璋冪敤棰勭疆浣� + boolean gotoPreset(CameraCmd cmd); + + //鑾峰彇鐮佹祦鍘嬬缉鍙傛暟 + Map<String, String> getVideoCompressionCfg(CameraCmd cmd); + + //閫忛浘 + boolean controlDefogcfg(CameraCmd cmd); + + //绾㈠? + boolean controlInfrarecfg(CameraCmd cmd); + + //鑱氱劍妯″紡 + boolean controlFocusMode(CameraCmd cmd); + + //鑾峰彇鑱氱劍妯″紡 + String getFocusMode(CameraCmd cmd); + + //浜戝彴鍔犵儹 + boolean controlPTHeateRpwron(CameraCmd cmd); + + //闀滃ご闄ゅ啺 + boolean controlCameraDeicing(CameraCmd cmd); + + //閰嶇疆閿佸畾 + boolean controlLock(CameraCmd cmd); + + //閰嶇疆瑙i攣 + boolean controlUnLock(CameraCmd cmd); + + //鑾峰彇浜戝彴閿佸畾淇℃伅 + int getPTZLockInfo(CameraCmd cmd); + + //鎶撳浘-杩旂粰鍓嶇浜岃繘鍒舵祦 + String captureJPEGPicture(CameraCmd cmd); + + //鎶撳浘 + String picCutCate(CameraCmd cmd); + + //ptz 涓夊潗鏍� + Map<String, Object> getPtz(CameraCmd cmd); + + //鑾峰彇ptz鑼冨洿 + Map<String, Object> getPtzScope(CameraCmd cmd); + + boolean setPtz(CameraCmd cmd); + + //璁剧疆闆舵柟浣嶈 + boolean setZeroPtz(CameraCmd cmd); + + + //寮曞鐩爣浣嶇疆 + boolean guideTargetPosition(CameraCmd cmd); + + //鎵嬪姩寮�濮嬪綍鍍� + boolean recordStart(CameraCmd cmd); + + //鎵嬪姩鍋滄褰曞儚-涓婁紶minio-杩斿洖褰曞儚url + String recordStopToMinio(CameraCmd cmd); + + //鍋滄褰曞儚-涓嶄笂浼爉inio + void recordStopNotToMinio(CameraCmd cmd); + + //鑾峰彇鐩告満閫氶亾淇℃伅 + public List<ArdChannel> getCameraChannelList(ArdCameras camera); + + //鑾峰彇GIS淇℃伅鏁版嵁 + public Map<String, Object> getGisInfo(CameraCmd cmd); +} diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java new file mode 100644 index 0000000..bc888e1 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java @@ -0,0 +1,610 @@ +package com.ruoyi.device.camera.service.impl; + +import com.ruoyi.common.constant.CacheConstants; +import com.ruoyi.common.core.redis.RedisCache; +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.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.stereotype.Service; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.ruoyi.device.hiksdk.sdk.HCNetSDK.NET_DVR_CHECK_USER_STATUS; + + +/** + * @Description: 鐩告満sdk涓氬姟 + * @ClassName: CameraSdkServiceImpl + * @Author: 鍒樿嫃涔� + * @Date: 2023骞�10鏈�16鏃�15:21:01 + **/ +@Service +@Slf4j(topic = "SDK") +public class CameraSdkServiceImpl implements ICameraSdkService { + @Resource + IHikClientService hikClientService; + @Resource + IDhClientService dhClientService; + @Resource + RedisCache redisCache; + + @Override + public void initSDK() { + //鍒濆鍖栧姞杞絪dk搴撴枃浠� + boolean initHIK = hikClientService.init(); + if (initHIK) { + hikClientService.loginAll();//鐧诲綍鍏ㄩ儴娴峰悍鐩告満 + } + Boolean initDH = dhClientService.init(); + if (initDH) { + dhClientService.loginAll();//鐧诲綍鍏ㄩ儴澶у崕鐩告満 + } + } + + @Override + public void syncLogin(ArdCameras cameras) { + + } + + @Override + public void asyncLogin(ArdCameras cameras) { + + } + + @Override + public void loginAll() { + + } + + @Override + public boolean logout(String cameraId) { + return false; + } + + @Override + public boolean isOnLine(CameraCmd cmd) { + try { + boolean onLine = false; + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + onLine = hikClientService.isOnLine(cmd); + } else if (factory.equals("2")) { + onLine = dhClientService.isOnLine(cmd); + } + } + return onLine; + } catch (Exception ex) { + log.error("妫�娴嬪湪绾垮紓甯革細" + ex.getMessage()); + return false; + } + } + + @Override + public boolean pTZControl(CameraCmd cmd) { + try { + boolean result = false; + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + result = hikClientService.pTZControlWithSpeed(cmd); + } else if (factory.equals("2")) { + result = dhClientService.pTZControl(cmd); + } + } + return result; + } catch (Exception ex) { + log.error("ptz鎺у埗寮傚父锛�" + ex.getMessage()); + return false; + } + } + + //璁剧疆鑱氱劍鍊� + @Override + public boolean setFocusPos(CameraCmd cmd) { + boolean result = false; + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + result = hikClientService.setFocusPos(cmd); + } else if (factory.equals("2")) { + + } + } + } catch (Exception ex) { + log.error("璁剧疆鑱氱劍鍊煎紓甯革細" + ex.getMessage()); + + } + return result; + } + + + //鑾峰彇鑱氱劍鍊� + @Override + public Map<String, Object> getFocusPos(CameraCmd cmd) { + Map<String, Object> map = new HashMap<>(); + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + map = hikClientService.getFocusPos(cmd); + } else if (factory.equals("2")) { + + } + } + } catch (Exception ex) { + log.error("鑾峰彇鑱氱劍鍊煎紓甯革細" + ex.getMessage()); + } + return map; + } + + //璁剧疆棰勭疆浣� + @Override + public boolean setPreset(CameraCmd cmd) { + boolean result = false; + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + result = hikClientService.setPreset(cmd); + } else if (factory.equals("2")) { + + } + } + } catch (Exception ex) { + log.error("璁剧疆棰勭疆浣嶅紓甯革細" + ex.getMessage()); + } + return result; + } + + //璋冪敤棰勭疆浣� + @Override + public boolean gotoPreset(CameraCmd cmd) { + boolean result = false; + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + result = hikClientService.gotoPreset(cmd); + } else if (factory.equals("2")) { + + } + } + } catch (Exception ex) { + log.error("璋冪敤棰勭疆浣嶅紓甯革細" + ex.getMessage()); + } + return result; + } + + //鑾峰彇鐮佹祦鍘嬬缉鍙傛暟 + @Override + public Map<String, String> getVideoCompressionCfg(CameraCmd cmd) { + Map<String, String> map = new HashMap<>(); + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + map = hikClientService.getVideoCompressionCfg(cmd); + } else if (factory.equals("2")) { + + } + } + } catch (Exception ex) { + log.error("鑾峰彇鐮佹祦鍘嬬缉鍙傛暟寮傚父锛�" + ex.getMessage()); + } + return map; + } + + //閫忛浘寮�鍏� + @Override + public boolean controlDefogcfg(CameraCmd cmd) { + boolean result = false; + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + result = hikClientService.controlDefogcfg(cmd); + } else if (factory.equals("2")) { + + } + } + } catch (Exception ex) { + log.error("鎿嶆帶閫忛浘寮傚父锛�" + ex.getMessage()); + } + return result; + } + + //绾㈠寮�鍏� + @Override + public boolean controlInfrarecfg(CameraCmd cmd) { + boolean result = false; + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + result = hikClientService.controlInfrarecfg(cmd); + } else if (factory.equals("2")) { + + } + } + } catch (Exception ex) { + log.error("鎿嶆帶绾㈠寮傚父锛�" + ex.getMessage()); + } + return result; + } + + + //鎵嬪姩/鑷姩鑱氱劍 + @Override + public boolean controlFocusMode(CameraCmd cmd) { + boolean result = false; + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + result = hikClientService.controlFocusMode(cmd); + } else if (factory.equals("2")) { + + } + } + } catch (Exception ex) { + log.error("鎿嶆帶鑱氱劍妯″紡寮傚父锛�" + ex.getMessage()); + } + return result; + } + + //鑾峰彇鑱氱劍妯″紡 + @Override + public String getFocusMode(CameraCmd cmd) { + String result = ""; + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + result = hikClientService.getFocusMode(cmd); + } else if (factory.equals("2")) { + + } + } + } catch (Exception ex) { + log.error("鑾峰彇鑱氱劍妯″紡寮傚父锛�" + ex.getMessage()); + } + return result; + } + + //浜戝彴鍔犵儹 + @Override + public boolean controlPTHeateRpwron(CameraCmd cmd) { + boolean result = false; + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + result = hikClientService.controlPTHeateRpwron(cmd); + } else if (factory.equals("2")) { + + } + } + } catch (Exception ex) { + log.error("鎿嶆帶浜戝彴鍔犵儹寮傚父锛�" + ex.getMessage()); + } + return result; + } + + //闀滃ご鍔犵儹 + @Override + public boolean controlCameraDeicing(CameraCmd cmd) { + boolean result = false; + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + result = hikClientService.controlCameraDeicing(cmd); + } else if (factory.equals("2")) { + + } + } + } catch (Exception ex) { + log.error("鎿嶆帶浜戝彴鍔犵儹寮傚父锛�" + ex.getMessage()); + } + return result; + } + + //鎿嶆帶閿佸畾 + @Override + public boolean controlLock(CameraCmd cmd) { + boolean result = false; + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + result = hikClientService.controlLock(cmd); + } else if (factory.equals("2")) { + + } + } + } catch (Exception ex) { + log.error("鎿嶆帶閿佸畾寮傚父锛�" + ex.getMessage()); + } + return result; + } + + + //璁剧疆瑙i攣 + @Override + public boolean controlUnLock(CameraCmd cmd) { + boolean result = false; + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + result = hikClientService.controlUnLock(cmd); + } else if (factory.equals("2")) { + + } + } + } catch (Exception ex) { + log.error("璁剧疆瑙i攣寮傚父锛�" + ex.getMessage()); + } + return result; + } + + //鑾峰彇浜戝彴閿佸畾淇℃伅 + @Override + public int getPTZLockInfo(CameraCmd cmd) { + int result = 99; + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + result = hikClientService.getPTZLockInfo(cmd); + } else if (factory.equals("2")) { + + } + } + } catch (Exception ex) { + log.error("鑾峰彇浜戝彴閿佸畾淇℃伅寮傚父锛�" + ex.getMessage()); + } + return result; + } + + @Override + public String captureJPEGPicture(CameraCmd cmd) { + return null; + } + + @Override + public String picCutCate(CameraCmd cmd) { + String url = ""; + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + url = hikClientService.picCutCate(cmd); + } else if (factory.equals("2")) { + url = dhClientService.picCutCate(cmd); + } + } + } catch (Exception ex) { + log.error("鎶撳浘寮傚父锛�" + ex.getMessage()); + } + return url; + } + //鑾峰彇ptz + @Override + public Map<String, Object> getPtz(CameraCmd cmd) { + Map<String, Object> map = new HashMap<>(); + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + map = hikClientService.getPtz(cmd); + } else if (factory.equals("2")) { + map = dhClientService.getPtz(cmd); + } + } + } catch (Exception ex) { + log.error("鑾峰彇ptz寮傚父锛�" + ex.getMessage()); + } + return map; + } + + //鑾峰彇ptz鑼冨洿 + @Override + public Map<String, Object> getPtzScope(CameraCmd cmd) { + Map<String, Object> map = new HashMap<>(); + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + map = hikClientService.getPtzScope(cmd); + } else if (factory.equals("2")) { + + } + } + } catch (Exception ex) { + log.error("鑾峰彇ptz鑼冨洿寮傚父锛�" + ex.getMessage()); + } + return map; + } + + @Override + public boolean setPtz(CameraCmd cmd) { + boolean result = false; + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + result = hikClientService.setPtz(cmd); + } else if (factory.equals("2")) { + result = dhClientService.setPtz(cmd); + } + } + } catch (Exception ex) { + log.error("璁剧疆ptz寮傚父锛�" + ex.getMessage()); + } + return result; + } + + @Override + public boolean setZeroPtz(CameraCmd cmd) { + boolean result = false; + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + result = hikClientService.setZeroPtz(cmd); + } else if (factory.equals("2")) { + result = dhClientService.setZeroPtz(cmd); + } + } + } catch (Exception ex) { + log.error("璁剧疆闆舵柟浣嶈寮傚父锛�" + ex.getMessage()); + } + return result; + } + + + //寮曞鎸囧悜鐩爣 + @Override + public boolean guideTargetPosition(CameraCmd cmd) { + boolean result = false; + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + result = hikClientService.guideTargetPosition(cmd); + } else if (factory.equals("2")) { + result = dhClientService.guideTargetPosition(cmd); + } + } + } catch (Exception ex) { + log.error("寮曞鎸囧悜鐩爣寮傚父锛�" + ex.getMessage()); + } + return result; + } + + @Override + public boolean recordStart(CameraCmd cmd) { + boolean result = false; + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + result = hikClientService.recordStart(cmd); + } else if (factory.equals("2")) { + result = dhClientService.recordStart(cmd); + } + } + } catch (Exception ex) { + log.error("寮�濮嬪綍鍍忓紓甯革細" + ex.getMessage()); + } + return result; + } + + @Override + public String recordStopToMinio(CameraCmd cmd) { + String url = ""; + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + url = hikClientService.recordStopToMinio(cmd); + } else if (factory.equals("2")) { + url = dhClientService.recordStopToMinio(cmd); + } + } + } catch (Exception ex) { + log.error("鍋滄褰曞儚寮傚父锛�" + ex.getMessage()); + } + return url; + } + + @Override + public void recordStopNotToMinio(CameraCmd cmd) { + + } + + @Override + public List<ArdChannel> getCameraChannelList(ArdCameras camera) { + return null; + } + + //鑾峰彇鐩告満鏋惰鍙傛暟 + @Override + public Map<String, Object> getGisInfo(CameraCmd cmd) { + Map<String, Object> map = new HashMap<>(); + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + map = hikClientService.getGisInfo(cmd); + } else if (factory.equals("2")) { + + } + } + } catch (Exception ex) { + log.error("鑾峰彇鐩告満鏋惰鍙傛暟寮傚父锛�" + ex.getMessage()); + } + return map; + } +} diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/controller/DhSdkController.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/controller/DhSdkController.java index a2ac3b8..c0039e5 100644 --- a/ard-work/src/main/java/com/ruoyi/device/dhsdk/controller/DhSdkController.java +++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/controller/DhSdkController.java @@ -37,23 +37,6 @@ @Resource private IDhClientService sdk; - /** - * @鎻忚堪 鍒濆鍔犺浇澶у崕搴撴枃浠� - * @鍙傛暟 [] - * @杩斿洖鍊� void - * @鍒涘缓浜� 鍒樿嫃涔� - * @鍒涘缓鏃堕棿 2023/1/17 16:13 - * @淇敼浜哄拰鍏跺畠淇℃伅 if (Platform.isLinux()) - */ - @PostConstruct - public void initDHSDK() { - //鍒濆鍖栧姞杞絪dk搴撴枃浠� - if (sdk.init()) - { - //鐧诲綍鎵�鏈夌浉鏈� - sdk.loginAll(); - } - } @ApiOperation(value = "浜戝彴鎺у埗", notes = "Code:1-宸︿笂 2-涓� 3-鍙充笂 4-宸� 5-宸¤埅 6-鍙� 7-宸︿笅 8-涓� 9-鍙充笅 10-鐒﹁窛鍙樺ぇ 11-鐒﹁窛鍙樺皬\n" + "12-鐒︾偣鍓嶈皟 13-鐒︾偣鍚庤皟 14-鍏夊湀鎵╁ぇ 15-鍏夊湀缂╁皬 ") @@ -104,4 +87,34 @@ cmd.setOperator(SecurityUtils.getUserId()); return toAjax(sdk.setZeroPtz(cmd)); } + @ApiOperation("鐩告満鎶撳浘") + @PostMapping("/picCutCate") + @Log(title = "鐩告満鎶撳浘", businessType = BusinessType.CONTROL) + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) + public @ResponseBody + AjaxResult picCutCate(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + String url = sdk.picCutCate(cmd); + return toAjaxString(url, "鐩告満鎶撳浘"); + } + @ApiOperation("鎵嬪姩褰曞儚寮�濮�") + @PostMapping("/recordStart") + @Log(title = "鎵嬪姩褰曞儚寮�濮�", businessType = BusinessType.CONTROL) + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) + public @ResponseBody + AjaxResult recordStart(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + boolean b = sdk.recordStart(cmd); + return toAjax(b); + } + @ApiOperation("鎵嬪姩褰曞儚鍋滄") + @PostMapping("/recordStop") + @Log(title = "鎵嬪姩褰曞儚鍋滄", businessType = BusinessType.CONTROL) + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.recordBucketName", "cmd.recordObjectName"}) + public @ResponseBody + AjaxResult recordStop(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + String url = sdk.recordStopToMinio(cmd); + return AjaxResult.success(url); + } } \ No newline at end of file diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/module/CapturePictureModule.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/module/CapturePictureModule.java new file mode 100644 index 0000000..8c15c38 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/module/CapturePictureModule.java @@ -0,0 +1,104 @@ +package com.ruoyi.device.dhsdk.module; +import com.ruoyi.device.dhsdk.lib.NetSDKLib; +import com.ruoyi.device.dhsdk.lib.ToolKits; +import com.sun.jna.ptr.IntByReference; + +/** + * \if ENGLISH_LANG + * Capture Picture Interface + * contains:local銆乺emote銆乼imer and stop capture picture + * \else + * 鎶撳浘鎺ュ彛瀹炵幇 + * 鍖呭惈: 鏈湴銆佽繙绋嬨�佸畾鏃跺拰鍋滄鎶撳浘 + * \endif + */ +public class CapturePictureModule { + + /** + * \if ENGLISH_LANG + * Local Capture Picture + * \else + * 鏈湴鎶撳浘 + * \endif + */ + public static boolean localCapturePicture(NetSDKLib.LLong hPlayHandle, String picFileName) { + + if (!LoginModule.netsdk.CLIENT_CapturePictureEx(hPlayHandle, picFileName, NetSDKLib.NET_CAPTURE_FORMATS.NET_CAPTURE_JPEG)) { + System.err.printf("CLIENT_CapturePicture Failed!" + ToolKits.getErrorCodePrint()); + return false; + } else { + System.out.println("CLIENT_CapturePicture success"); + } + return true; + } + + /** + * \if ENGLISH_LANG + * Remote Capture Picture + * \else + * 杩滅▼鎶撳浘 + * \endif + */ + public static boolean remoteCapturePicture(NetSDKLib.LLong m_hLoginHandle,int chn) { + return snapPicture(m_hLoginHandle,chn, 0, 0); + } + + /** + * \if ENGLISH_LANG + * Timer Capture Picture + * \else + * 瀹氭椂鎶撳浘 + * \endif + */ + public static boolean timerCapturePicture(NetSDKLib.LLong m_hLoginHandle,int chn) { + return snapPicture(m_hLoginHandle,chn, 1, 2); + } + + /** + * \if ENGLISH_LANG + * Stop Timer Capture Picture + * \else + * 鍋滄瀹氭椂鎶撳浘 + * \endif + */ + public static boolean stopCapturePicture(NetSDKLib.LLong m_hLoginHandle,int chn) { + return snapPicture(m_hLoginHandle,chn, -1, 0); + } + + /** + * \if ENGLISH_LANG + * Capture Picture (except local capture picture, others all call this interface) + * \else + * 鎶撳浘 (闄ゆ湰鍦版姄鍥惧, 鍏朵粬鍏ㄩ儴璋冪敤姝ゆ帴鍙�) + * \endif + */ + private static boolean snapPicture(NetSDKLib.LLong m_hLoginHandle,int chn, int mode, int interval) { + // send caputre picture command to device + NetSDKLib.SNAP_PARAMS stuSnapParams = new NetSDKLib.SNAP_PARAMS(); + stuSnapParams.Channel = chn; // channel + stuSnapParams.mode = mode; // capture picture mode + stuSnapParams.Quality = 3; // picture quality + stuSnapParams.InterSnap = interval; // timer capture picture time interval + stuSnapParams.CmdSerial = 0; // request serial + + IntByReference reserved = new IntByReference(0); + if (!LoginModule.netsdk.CLIENT_SnapPictureEx(m_hLoginHandle, stuSnapParams, reserved)) { + System.err.printf("CLIENT_SnapPictureEx Failed!" + ToolKits.getErrorCodePrint()); + return false; + } else { + System.out.println("CLIENT_SnapPictureEx success"); + } + return true; + } + + /** + * \if ENGLISH_LANG + * Set Capture Picture Callback + * \else + * 璁剧疆鎶撳浘鍥炶皟鍑芥暟 + * \endif + */ + public static void setSnapRevCallBack(NetSDKLib.fSnapRev cbSnapReceive){ + LoginModule.netsdk.CLIENT_SetSnapRevCallBack(cbSnapReceive, null); + } +} diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/module/RealPlayModule.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/module/RealPlayModule.java new file mode 100644 index 0000000..46e6fc7 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/module/RealPlayModule.java @@ -0,0 +1,44 @@ +package com.ruoyi.device.dhsdk.module; + +import com.ruoyi.device.dhsdk.lib.NetSDKLib; +import com.ruoyi.device.dhsdk.lib.ToolKits; +/** + * 瀹炴椂棰勮鎺ュ彛瀹炵幇 + * 涓昏鏈� 锛氬紑濮嬫媺娴併�佸仠姝㈡媺娴佸姛鑳� + */ +public class RealPlayModule { + /** + * \if ENGLISH_LANG + * Start RealPlay + * \else + * 寮�濮嬮瑙� + * \endif + */ + public static NetSDKLib.LLong startRealPlay(NetSDKLib.LLong m_hLoginHandle, int channel, int stream) { + NetSDKLib.LLong m_hPlayHandle = LoginModule.netsdk.CLIENT_RealPlayEx(m_hLoginHandle, channel, null, stream); + if (m_hPlayHandle.longValue() == 0) { + System.err.println("寮�濮嬪疄鏃堕瑙堝け璐ワ紝閿欒鐮�" + ToolKits.getErrorCodePrint()); + } else { + System.out.println("Success to start realplay"); + } + return m_hPlayHandle; + } + + /** + * \if ENGLISH_LANG + * Start RealPlay + * \else + * 鍋滄棰勮 + * \endif + */ + public static void stopRealPlay(NetSDKLib.LLong m_hPlayHandle) { + if (m_hPlayHandle.longValue() == 0) { + return; + } + + boolean bRet = LoginModule.netsdk.CLIENT_StopRealPlayEx(m_hPlayHandle); + if (bRet) { + m_hPlayHandle.setValue(0); + } + } +} diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/IDhClientService.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/IDhClientService.java index 7a1a435..538a049 100644 --- a/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/IDhClientService.java +++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/IDhClientService.java @@ -40,6 +40,18 @@ //璁剧疆PTZ boolean setPtz(CameraCmd cmd); + //璁剧疆闆舵柟浣嶈 boolean setZeroPtz(CameraCmd cmd); + + //鎶撳浘 + String picCutCate(CameraCmd cmd); + + //鐭椂褰曞儚 + String record(CameraCmd cmd); + boolean recordStart(CameraCmd cmd); + String recordStopToMinio(CameraCmd cmd); + + //寮曞鐩爣浣嶇疆 + boolean guideTargetPosition(CameraCmd cmd); } diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java index b984262..5e66b18 100644 --- a/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java @@ -1,6 +1,9 @@ package com.ruoyi.device.dhsdk.service.impl; 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.spring.SpringUtils; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.camera.domain.CameraCmd; @@ -10,27 +13,35 @@ import com.ruoyi.device.dhsdk.common.Res; import com.ruoyi.device.dhsdk.lib.NetSDKLib; import com.ruoyi.device.dhsdk.lib.NetSDKLib.LLong; -import com.ruoyi.device.dhsdk.lib.ToolKits; -import com.ruoyi.device.dhsdk.lib.enumeration.EM_NEW_QUERY_SYSTEM_INFO; +import com.ruoyi.device.dhsdk.module.CapturePictureModule; import com.ruoyi.device.dhsdk.module.ConfigModule; import com.ruoyi.device.dhsdk.module.LoginModule; -import com.ruoyi.device.dhsdk.module.PtzControlModule; +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.sdk.HCNetSDK; +import com.ruoyi.utils.gis.GisUtil; +import com.ruoyi.utils.minio.MinioUtil; import com.sun.jna.Pointer; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.io.ByteArrayInputStream; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; import java.text.DecimalFormat; import java.util.*; import static com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_DEVSTATE_ONLINE; import static com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_DEVSTATE_PTZ_LOCATION; import static com.ruoyi.device.dhsdk.lib.ToolKits.getErrorCodePrint; -import static com.ruoyi.device.hiksdk.sdk.HCNetSDK.*; +import static com.ruoyi.device.dhsdk.module.LoginModule.netsdk; +import static com.ruoyi.device.hiksdk.sdk.HCNetSDK.NET_DVR_SET_PTZPOS; + /** * @ClassName DhSdkServiceImpl @@ -46,6 +57,8 @@ private IArdCamerasService ardCamerasService; @Resource private IArdChannelService ardChannelService; + @Value("${minio.endpoint}") + private String minioEndPoint; private Vector<String> chnlist = new Vector<String>(); // 璁惧鏂嚎閫氱煡鍥炶皟 @@ -212,7 +225,7 @@ dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_DEC_CONTROL; break; } - boolean bool = LoginModule.netsdk.CLIENT_DHPTZControlEx(loginId, chanNo - 1, dwPTZCommand, speed, speed, 0, dwStop); + boolean bool = netsdk.CLIENT_DHPTZControlEx(loginId, chanNo - 1, dwPTZCommand, speed, speed, 0, dwStop); if (!bool) { log.error("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + getErrorCodePrint()); } @@ -240,6 +253,7 @@ } return ptzMap; } + /** * @鎻忚堪 璁剧疆ptz淇℃伅 * @鍙傛暟 [userId, channelNum] @@ -257,12 +271,12 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } - LLong loginId = (LLong)GlobalVariable.loginMap.get(cameraId); + LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); try { - int p = (int)(ptz.get("p") * 10); - int t = (int)(ptz.get("t") * 10); + int p = (int) (ptz.get("p") * 10); + int t = (int) (ptz.get("t") * 10); int z = ptz.get("z").intValue(); - boolean bool = LoginModule.netsdk.CLIENT_DHPTZControlEx(loginId, chanNo - 1, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_EXACTGOTO, p, t, z, 0 ); + boolean bool = netsdk.CLIENT_DHPTZControlEx(loginId, chanNo - 1, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_EXACTGOTO, p, t, z, 0); if (!bool) { log.error("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + getErrorCodePrint()); } @@ -289,15 +303,188 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } - 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); + 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, 1, 0); if (!bool) { log.error("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + getErrorCodePrint()); } return bool; } + /** + * @鎻忚堪 鎴浘 瀛樻湇鍔″櫒 + * @鍙傛暟 [cameraId, channelNum] + * @杩斿洖鍊� java.lang.String + * @鍒涘缓浜� 鍒樿嫃涔� + * @鍒涘缓鏃堕棿 2023/2/2 14:59 + * @淇敼浜哄拰鍏跺畠淇℃伅 + */ + @Override + @SdkOperate + public String picCutCate(CameraCmd cmd) { + String cameraId = cmd.getCameraId(); + Integer chanNo = cmd.getChanNo(); + if (!GlobalVariable.loginMap.containsKey(cameraId)) { + return ""; + } + LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); + String bucketName = "pic"; + String picUrl = ""; + String bucketObject = "/capture/" + IdUtils.simpleUUID() + ".jpeg"; + fCaptureReceiveCB m_CaptureReceiveCB = new fCaptureReceiveCB(minioEndPoint, bucketName, bucketObject); + CapturePictureModule.setSnapRevCallBack(m_CaptureReceiveCB); + boolean b = CapturePictureModule.remoteCapturePicture(loginId, chanNo - 1); + if (b) { + picUrl = minioEndPoint + "/" + bucketName + bucketObject; + } + return picUrl; + } + + /** + * @鎻忚堪 鐭椂褰曞儚 + * @鍙傛暟 [userId, channelNum, enable] + * @杩斿洖鍊� void + * @鍒涘缓浜� 鍒樿嫃涔� + * @鍒涘缓鏃堕棿 2023/1/20 11:18 + * @淇敼浜哄拰鍏跺畠淇℃伅 + */ + @Override + public String record(CameraCmd cmd) { + try { + String url=""; + String cameraId = cmd.getCameraId(); + Integer chanNo = cmd.getChanNo(); + String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4"); + boolean enable = cmd.isEnable(); + if (!GlobalVariable.loginMap.containsKey(cameraId)) { + return ""; + } + LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); + + if (enable) { + LLong lRealHandle = new LLong(0); + if (!GlobalVariable.previewMap.containsKey(cameraId)) { + lRealHandle = RealPlayModule.startRealPlay(loginId, chanNo, 0); + if (lRealHandle.longValue() <= 0) { + log.error("鍙栨祦澶辫触" + getErrorCodePrint()); + return ""; + } + log.debug("鍙栨祦鎴愬姛"); + GlobalVariable.previewMap.put(cameraId, lRealHandle.intValue()); + } + if (!netsdk.CLIENT_SaveRealData(lRealHandle, path)) { + log.error("淇濆瓨瑙嗛鏂囦欢鍒颁复鏃舵枃浠跺す澶辫触 閿欒鐮佷负: " + getErrorCodePrint()); + return ""; + } + log.debug("褰曞儚寮�濮�"); + } else { + if (GlobalVariable.previewMap.containsKey(cameraId)) { + LLong lRealHandle = new LLong(GlobalVariable.previewMap.get(cameraId)); + boolean b = netsdk.CLIENT_StopSaveRealData(lRealHandle); + GlobalVariable.previewMap.remove(cameraId); + } + log.debug("褰曞儚鍋滄"); + } + return url; + } catch (Exception ex) { + log.error("褰曞儚寮傚父" + ex.getMessage()); + return ""; + } + } + @Override + public boolean recordStart(CameraCmd cmd) { + try { + String cameraId = cmd.getCameraId(); + Integer chanNo = cmd.getChanNo(); + String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4"); + if (!GlobalVariable.loginMap.containsKey(cameraId)) { + return false; + } + LLong loginId = (LLong)GlobalVariable.loginMap.get(cameraId); + LLong lRealHandle; + if (GlobalVariable.previewMap.containsKey(cameraId)) { + lRealHandle = new LLong(GlobalVariable.previewMap.get(cameraId)); + netsdk.CLIENT_StopSaveRealData(lRealHandle); + GlobalVariable.previewMap.remove(cameraId); + log.debug("鍋滄褰撳墠褰曞儚"); + } + lRealHandle = RealPlayModule.startRealPlay(loginId, chanNo-1, 0); + 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 true; + } catch (Exception ex) { + log.error("寮�濮嬪綍鍍忓紓甯�" + ex.getMessage()); + return false; + } + } + @Override + public String recordStopToMinio(CameraCmd cmd) { + String url = ""; + try { + String cameraId = cmd.getCameraId(); + String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4"); + if (!GlobalVariable.loginMap.containsKey(cameraId)) { + return ""; + } + LLong lRealHandle; + if (GlobalVariable.previewMap.containsKey(cameraId)) { + lRealHandle = new LLong(GlobalVariable.previewMap.get(cameraId)); + netsdk.CLIENT_StopSaveRealData(lRealHandle); + GlobalVariable.previewMap.remove(cameraId); + log.debug("鍋滄褰撳墠褰曞儚"); + } + //瀛樺叆minio + String BucketName = cmd.getRecordBucketName(); + String ObjectName = cmd.getRecordObjectName() + ".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) { + log.error("褰曞儚寮傚父" + ex.getMessage()); + return ""; + } + } + + @Override + public boolean guideTargetPosition(CameraCmd cmd) { + String cameraId = cmd.getCameraId(); + Integer chanNo = cmd.getChanNo(); + if (!GlobalVariable.loginMap.containsKey(cameraId)) { + return false; + } + LLong loginId = (LLong)GlobalVariable.loginMap.get(cameraId); + try { + ArdCameras cameras = ardCamerasService.selectArdCamerasById(cameraId); + double[] cameraPositon = new double[]{cameras.getLongitude(), cameras.getLatitude(), cameras.getAltitude()}; + double[] targetPositions = cmd.getTargetPosition(); + double[] cameraPTZ = GisUtil.getCameraPTZ(cameraPositon, targetPositions, 20, 150); + int p = (int) (cameraPTZ[0] * 10); + int t = (int) (cameraPTZ[1] * 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()); + } + return bool; + } catch (Exception ex) { + log.error("寮曞寮傚父:" + ex.getMessage()); + return false; + } + } // 璁惧鏂嚎鍥炶皟: 閫氳繃 CLIENT_Init 璁剧疆璇ュ洖璋冨嚱鏁帮紝褰撹澶囧嚭鐜版柇绾挎椂锛孲DK浼氳皟鐢ㄨ鍑芥暟 private static class DisConnect implements NetSDKLib.fDisConnect { @@ -314,4 +501,34 @@ System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort); } } + // 鎶撳浘鎺ユ敹鍥炶皟 + public static class fCaptureReceiveCB implements NetSDKLib.fSnapRev { + private String minioEndPoint; + private String ObjectName; + private String bucketName; + + public fCaptureReceiveCB(String minioEndPoint, String bucketName, String ObjectName) { + this.minioEndPoint = minioEndPoint; + this.bucketName = bucketName; + this.ObjectName = ObjectName; + } + + 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); + //瀛樺偍鍒癿inio + InputStream input = new ByteArrayInputStream(buf); + + try { + boolean b = MinioUtil.uploadObject(bucketName, ObjectName, input, input.available(), MimeTypeUtils.IMAGE_JPEG); + if (b) { + String url = minioEndPoint + "/" + bucketName + ObjectName; + log.debug("涓婁紶鏂囦欢鎴愬姛!" + url); + } + } catch (IOException ex) { + log.error("涓婁紶鏂囦欢寮傚父锛�" + ex.getMessage()); + } + } + } + } } \ No newline at end of file diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/HikSdkController.java similarity index 96% rename from ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java rename to ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/HikSdkController.java index ea46ace..6f9fbcb 100644 --- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java +++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/HikSdkController.java @@ -1,338 +1,321 @@ -package com.ruoyi.device.hiksdk.controller; - -import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; -import com.ruoyi.common.annotation.Log; -import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.enums.BusinessType; -import com.ruoyi.common.utils.SecurityUtils; -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.dhsdk.service.IDhClientService; -import com.ruoyi.device.hiksdk.service.IHikClientService; -import com.ruoyi.common.annotation.Anonymous; -import com.ruoyi.common.core.domain.AjaxResult; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.PostConstruct; -import javax.annotation.Resource; -import java.util.List; -import java.util.Map; - -/** - * @ClassName: sdkController - * @Description: - * @Author: Administrator - * @Date: 2023骞�01鏈�17鏃� 12:04 - * @Version: 1.0 - **/ -@Api(tags = "娴峰悍SDK鎺ュ彛") -@Controller -@RequestMapping("/hik") -@Anonymous -public class SdkController extends BaseController { - - @Resource - private IHikClientService sdk; - @Resource - private IDhClientService ClientService; - @Resource - private IArdCamerasService ardCamerasService; - - /** - * @鎻忚堪 鍒濆鍔犺浇娴峰悍搴撴枃浠� - * @鍙傛暟 [] - * @杩斿洖鍊� void - * @鍒涘缓浜� 鍒樿嫃涔� - * @鍒涘缓鏃堕棿 2023/1/17 16:13 - * @淇敼浜哄拰鍏跺畠淇℃伅 if (Platform.isLinux()) - */ - @PostConstruct - public void initHCNetSDK() { - //鍒濆鍖栧姞杞絪dk搴撴枃浠� - sdk.loadHCNetSDKLib(); - //鐧诲綍鎵�鏈夌浉鏈� - sdk.loginAll(); - } - - @RequestMapping("/preview") - private String preview() { - return "preview"; - } - @RequestMapping("/index") - private String index() { - return "test"; - } - - @GetMapping("/list") - public @ResponseBody - AjaxResult list(ArdCameras ardCamera) { - List<ArdCameras> list = ardCamerasService.selectArdCamerasListNoDataScope(ardCamera); - return AjaxResult.success("鐩告満鍒楄〃锛�", list); - } - - @ApiOperation("鑾峰彇鐮佹祦鍘嬬缉鍙傛暟") - @PostMapping("/getVideoCompressionCfg") - @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) - @Log(title = "鑾峰彇鐮佹祦鍘嬬缉鍙傛暟", businessType = BusinessType.CONTROL) - public @ResponseBody - AjaxResult getVideoCompressionCfg(@RequestBody CameraCmd cmd) { - return AjaxResult.success(sdk.getVideoCompressionCfg(cmd)); - } - - @ApiOperation("鍦ㄧ嚎鐘舵��") - @PostMapping("/state") - @ApiOperationSupport(includeParameters = {"cmd.cameraId"}) - @Log(title = "鍦ㄧ嚎鐘舵��", businessType = BusinessType.CONTROL) - public @ResponseBody - AjaxResult getOnlineState(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - boolean onLine = sdk.isOnLine(cmd); - return AjaxResult.success(onLine); - } - - @ApiOperation(value = "浜戝彴鎺у埗", notes = "Code:1-宸︿笂 2-涓� 3-鍙充笂 4-宸� 5-宸¤埅 6-鍙� 7-宸︿笅 8-涓� 9-鍙充笅 10-鐒﹁窛鍙樺ぇ 11-鐒﹁窛鍙樺皬\n" + - "12-鐒︾偣鍓嶈皟 13-鐒︾偣鍚庤皟 14-鍏夊湀鎵╁ぇ 15-鍏夊湀缂╁皬 16-闆ㄥ埛寮�鍚�") - @PostMapping("/PTZControlWithSpeed") - @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.speed", "cmd.enable", "cmd.code"}) - @Log(title = "浜戝彴鎺у埗", businessType = BusinessType.CONTROL) - public @ResponseBody - AjaxResult PTZControlWithSpeed(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(sdk.pTZControlWithSpeed(cmd)); - } - - @ApiOperation("璋冪敤棰勭疆鐐�") - @PostMapping("/gotoPreset") - @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.presetIndex"}) - @Log(title = "璋冪敤棰勭疆鐐�", businessType = BusinessType.CONTROL) - public @ResponseBody - AjaxResult gotoPreset(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(sdk.gotoPreset(cmd)); - } - - @ApiOperation("璁剧疆棰勭疆鐐�") - @PostMapping("/setPreset") - @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.presetIndex"}) - @Log(title = "璁剧疆棰勭疆鐐�", businessType = BusinessType.CONTROL) - public @ResponseBody - AjaxResult setPreset(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(sdk.setPreset(cmd)); - } - - @ApiOperation("鑾峰彇鑱氱劍鍊�") - @PostMapping("/getFocusPos") - @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) - @Log(title = "鑾峰彇鑱氱劍鍊�", businessType = BusinessType.CONTROL) - public @ResponseBody - AjaxResult getFocusPos(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - Map<String, Object> Map = sdk.getFocusPos(cmd); - return AjaxResult.success("鑾峰彇鑱氱劍鍊�", Map); - } - - @ApiOperation("璁剧疆鑱氱劍鍊�") - @PostMapping("/setFocusPos") - @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.dwFocusPos"}) - @Log(title = "璁剧疆鑱氱劍鍊�", businessType = BusinessType.CONTROL) - public @ResponseBody - AjaxResult setFocusPos(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(sdk.setFocusPos(cmd)); - } - - @ApiOperation("鑾峰彇PTZ") - @PostMapping("/getPTZ") - @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) - @Log(title = "鑾峰彇PTZ", businessType = BusinessType.CONTROL) - public @ResponseBody - AjaxResult getPTZ(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - Map<String, Object> ptzMap = sdk.getPtz(cmd); - return AjaxResult.success("鑾峰彇ptz", ptzMap); - } - - @ApiOperation("鑾峰彇PTZ鑼冨洿") - @PostMapping("/getPTZScope") - @Log(title = "鑾峰彇PTZ鑼冨洿", businessType = BusinessType.CONTROL) - @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) - public @ResponseBody - AjaxResult getPTZScope(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - Map<String, Object> ptzMap = sdk.getPtzScope(cmd); - return AjaxResult.success("鑾峰彇ptz鑼冨洿", ptzMap); - } - - @ApiOperation("璁剧疆PTZ") - @PostMapping("/setPTZ") - @Log(title = "璁剧疆PTZ", businessType = BusinessType.CONTROL) - @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.ptzMap"}) - public @ResponseBody - AjaxResult setPTZ(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(sdk.setPtz(cmd)); - } - - @ApiOperation("鎸囧悜鐩爣") - @PostMapping("/setTargetPosition") - @Log(title = "鎸囧悜鐩爣", businessType = BusinessType.CONTROL) - @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.targetPosition"}) - public @ResponseBody - AjaxResult setTargetPosition(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(sdk.guideTargetPosition(cmd)); - } - - - @ApiOperation("璁剧疆闆舵柟浣嶈") - @PostMapping("/setZeroPTZ") - @Log(title = "璁剧疆闆舵柟浣嶈", businessType = BusinessType.CONTROL) - @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) - public @ResponseBody - AjaxResult setZeroPTZ(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(sdk.setZeroPtz(cmd)); - } - - @ApiOperation("璁剧疆閿佸畾") - @PostMapping("/setPTZLock") - @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.expired"}) - @Log(title = "璁剧疆閿佸畾", businessType = BusinessType.CONTROL) - public @ResponseBody - AjaxResult setPTZLock(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - return AjaxResult.success(sdk.controlLock(cmd)); - } - - @ApiOperation("璁剧疆瑙i攣") - @PostMapping("/setPTZUnLock") - @ApiOperationSupport(includeParameters = {"cmd.cameraId"}) - @Log(title = "璁剧疆瑙i攣", businessType = BusinessType.CONTROL) - public @ResponseBody - AjaxResult setPTZUnLock(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - return AjaxResult.success(sdk.controlUnLock(cmd)); - } - - @ApiOperation("鑾峰彇浜戝彴閿佸畾淇℃伅") - @PostMapping("/getPTZLockInfo") - @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) - @Log(title = "鑾峰彇浜戝彴閿佸畾淇℃伅", businessType = BusinessType.CONTROL) - public @ResponseBody - AjaxResult getPTZLockInfo(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - int byWorkMode = sdk.getPTZLockInfo(cmd); - if (byWorkMode == 0) { - return AjaxResult.success("浜戝彴閿佸畾鐘舵�侊細瑙i攣"); - } else if (byWorkMode == 1) { - return AjaxResult.success("浜戝彴閿佸畾鐘舵�侊細閿佸畾"); - } else { - return AjaxResult.error("浜戝彴閿佸畾鐘舵�侊細澶辫触"); - } - } - - @ApiOperation("閫忛浘寮�鍏�") - @PostMapping("/defogcfg") - @Log(title = "閫忛浘寮�鍏�", businessType = BusinessType.CONTROL) - @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"}) - public @ResponseBody - AjaxResult defogcfg(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(sdk.controlDefogcfg(cmd)); - } - - @ApiOperation("绾㈠寮�鍏�") - @PostMapping("/infrarecfg") - @Log(title = "绾㈠寮�鍏�", businessType = BusinessType.CONTROL) - @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"}) - public @ResponseBody - AjaxResult infrarecfg(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(sdk.controlInfrarecfg(cmd)); - } - - @ApiOperation(value = "鎵嬪姩/鑷姩鑱氱劍", notes = "true鎵嬪姩flase鑷姩") - @PostMapping("/focusMode") - @Log(title = "鎵嬪姩/鑷姩鑱氱劍", businessType = BusinessType.CONTROL) - @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"}) - public @ResponseBody - AjaxResult enableFocusMode(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(sdk.controlFocusMode(cmd)); - } - - @ApiOperation(value = "鑾峰彇鑱氱劍妯″紡", notes = "1鎵嬪姩2鑷姩") - @PostMapping("/getFocusMode") - public @ResponseBody - AjaxResult getFocusMode(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - String focusMode = sdk.getFocusMode(cmd); - return AjaxResult.success(focusMode); - } - - @ApiOperation("浜戝彴鍔犵儹") - @PostMapping("/heateRpwron") - @Log(title = "浜戝彴鍔犵儹", businessType = BusinessType.CONTROL) - @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"}) - public @ResponseBody - AjaxResult heateRpwron(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(sdk.controlPTHeateRpwron(cmd)); - } - - - @ApiOperation("闀滃ご鍔犵儹") - @PostMapping("/cameraDeicing") - @Log(title = "闀滃ご鍔犵儹", businessType = BusinessType.CONTROL) - @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"}) - public @ResponseBody - AjaxResult cameraDeicing(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - return toAjax(sdk.controlCameraDeicing(cmd)); - } - - @PostMapping("/captureJPEGPicture") - public @ResponseBody - AjaxResult captureJPEGPicture(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - String base64Str = sdk.captureJPEGPicture(cmd); - return toAjaxString(base64Str, "鐩告満鎶撳浘"); - } - - @ApiOperation("鐩告満鎶撳浘") - @PostMapping("/picCutCate") - @Log(title = "鐩告満鎶撳浘", businessType = BusinessType.CONTROL) - @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) - public @ResponseBody - AjaxResult picCutCate(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - String path = sdk.picCutCate(cmd); - return toAjaxString(path, "鐩告満鎶撳浘"); - } - - @ApiOperation("鎵嬪姩褰曞儚") - @PostMapping("/record") - @Log(title = "鎵嬪姩褰曞儚", businessType = BusinessType.CONTROL) - @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"}) - public @ResponseBody - AjaxResult record(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - String path = sdk.record(cmd); - return toAjaxString(path, "鎵嬪姩褰曞儚"); - } - - @ApiOperation("鑾峰彇鐩告満鏋惰鍙傛暟") - @PostMapping("/getCameraSetupCFG") - @Log(title = "鑾峰彇鐩告満鏋惰鍙傛暟", businessType = BusinessType.CONTROL) - @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"}) - public @ResponseBody - AjaxResult getCameraSetupCFG(@RequestBody CameraCmd cmd) { - cmd.setOperator(SecurityUtils.getUserId()); - return AjaxResult.success(sdk.getGisInfo(cmd)); - } -} +package com.ruoyi.device.hiksdk.controller; + +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.SecurityUtils; +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.dhsdk.service.IDhClientService; +import com.ruoyi.device.hiksdk.service.IHikClientService; +import com.ruoyi.common.annotation.Anonymous; +import com.ruoyi.common.core.domain.AjaxResult; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + +/** + * @ClassName: sdkController + * @Description: + * @Author: Administrator + * @Date: 2023骞�01鏈�17鏃� 12:04 + * @Version: 1.0 + **/ +@Api(tags = "娴峰悍SDK鎺ュ彛") +@Controller +@RequestMapping("/hik") +@Anonymous +public class HikSdkController extends BaseController { + + @Resource + private IHikClientService sdk; + @Resource + private IArdCamerasService ardCamerasService; + + + @RequestMapping("/preview") + private String preview() { + return "preview"; + } + @RequestMapping("/index") + private String index() { + return "test"; + } + + @GetMapping("/list") + public @ResponseBody + AjaxResult list(ArdCameras ardCamera) { + List<ArdCameras> list = ardCamerasService.selectArdCamerasListNoDataScope(ardCamera); + return AjaxResult.success("鐩告満鍒楄〃锛�", list); + } + + @ApiOperation("鑾峰彇鐮佹祦鍘嬬缉鍙傛暟") + @PostMapping("/getVideoCompressionCfg") + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) + @Log(title = "鑾峰彇鐮佹祦鍘嬬缉鍙傛暟", businessType = BusinessType.CONTROL) + public @ResponseBody + AjaxResult getVideoCompressionCfg(@RequestBody CameraCmd cmd) { + return AjaxResult.success(sdk.getVideoCompressionCfg(cmd)); + } + + @ApiOperation("鍦ㄧ嚎鐘舵��") + @PostMapping("/state") + @ApiOperationSupport(includeParameters = {"cmd.cameraId"}) + @Log(title = "鍦ㄧ嚎鐘舵��", businessType = BusinessType.CONTROL) + public @ResponseBody + AjaxResult getOnlineState(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + boolean onLine = sdk.isOnLine(cmd); + return AjaxResult.success(onLine); + } + + @ApiOperation(value = "浜戝彴鎺у埗", notes = "Code:1-宸︿笂 2-涓� 3-鍙充笂 4-宸� 5-宸¤埅 6-鍙� 7-宸︿笅 8-涓� 9-鍙充笅 10-鐒﹁窛鍙樺ぇ 11-鐒﹁窛鍙樺皬\n" + + "12-鐒︾偣鍓嶈皟 13-鐒︾偣鍚庤皟 14-鍏夊湀鎵╁ぇ 15-鍏夊湀缂╁皬 16-闆ㄥ埛寮�鍚�") + @PostMapping("/PTZControlWithSpeed") + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.speed", "cmd.enable", "cmd.code"}) + @Log(title = "浜戝彴鎺у埗", businessType = BusinessType.CONTROL) + public @ResponseBody + AjaxResult PTZControlWithSpeed(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + return toAjax(sdk.pTZControlWithSpeed(cmd)); + } + + @ApiOperation("璋冪敤棰勭疆鐐�") + @PostMapping("/gotoPreset") + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.presetIndex"}) + @Log(title = "璋冪敤棰勭疆鐐�", businessType = BusinessType.CONTROL) + public @ResponseBody + AjaxResult gotoPreset(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + return toAjax(sdk.gotoPreset(cmd)); + } + + @ApiOperation("璁剧疆棰勭疆鐐�") + @PostMapping("/setPreset") + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.presetIndex"}) + @Log(title = "璁剧疆棰勭疆鐐�", businessType = BusinessType.CONTROL) + public @ResponseBody + AjaxResult setPreset(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + return toAjax(sdk.setPreset(cmd)); + } + + @ApiOperation("鑾峰彇鑱氱劍鍊�") + @PostMapping("/getFocusPos") + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) + @Log(title = "鑾峰彇鑱氱劍鍊�", businessType = BusinessType.CONTROL) + public @ResponseBody + AjaxResult getFocusPos(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + Map<String, Object> Map = sdk.getFocusPos(cmd); + return AjaxResult.success("鑾峰彇鑱氱劍鍊�", Map); + } + + @ApiOperation("璁剧疆鑱氱劍鍊�") + @PostMapping("/setFocusPos") + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.dwFocusPos"}) + @Log(title = "璁剧疆鑱氱劍鍊�", businessType = BusinessType.CONTROL) + public @ResponseBody + AjaxResult setFocusPos(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + return toAjax(sdk.setFocusPos(cmd)); + } + + @ApiOperation("鑾峰彇PTZ") + @PostMapping("/getPTZ") + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) + @Log(title = "鑾峰彇PTZ", businessType = BusinessType.CONTROL) + public @ResponseBody + AjaxResult getPTZ(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + Map<String, Object> ptzMap = sdk.getPtz(cmd); + return AjaxResult.success("鑾峰彇ptz", ptzMap); + } + + @ApiOperation("鑾峰彇PTZ鑼冨洿") + @PostMapping("/getPTZScope") + @Log(title = "鑾峰彇PTZ鑼冨洿", businessType = BusinessType.CONTROL) + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) + public @ResponseBody + AjaxResult getPTZScope(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + Map<String, Object> ptzMap = sdk.getPtzScope(cmd); + return AjaxResult.success("鑾峰彇ptz鑼冨洿", ptzMap); + } + + @ApiOperation("璁剧疆PTZ") + @PostMapping("/setPTZ") + @Log(title = "璁剧疆PTZ", businessType = BusinessType.CONTROL) + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.ptzMap"}) + public @ResponseBody + AjaxResult setPTZ(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + return toAjax(sdk.setPtz(cmd)); + } + + @ApiOperation("鎸囧悜鐩爣") + @PostMapping("/setTargetPosition") + @Log(title = "鎸囧悜鐩爣", businessType = BusinessType.CONTROL) + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.targetPosition"}) + public @ResponseBody + AjaxResult setTargetPosition(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + return toAjax(sdk.guideTargetPosition(cmd)); + } + + + @ApiOperation("璁剧疆闆舵柟浣嶈") + @PostMapping("/setZeroPTZ") + @Log(title = "璁剧疆闆舵柟浣嶈", businessType = BusinessType.CONTROL) + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) + public @ResponseBody + AjaxResult setZeroPTZ(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + return toAjax(sdk.setZeroPtz(cmd)); + } + + @ApiOperation("璁剧疆閿佸畾") + @PostMapping("/setPTZLock") + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.expired"}) + @Log(title = "璁剧疆閿佸畾", businessType = BusinessType.CONTROL) + public @ResponseBody + AjaxResult setPTZLock(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + return AjaxResult.success(sdk.controlLock(cmd)); + } + + @ApiOperation("璁剧疆瑙i攣") + @PostMapping("/setPTZUnLock") + @ApiOperationSupport(includeParameters = {"cmd.cameraId"}) + @Log(title = "璁剧疆瑙i攣", businessType = BusinessType.CONTROL) + public @ResponseBody + AjaxResult setPTZUnLock(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + return AjaxResult.success(sdk.controlUnLock(cmd)); + } + + @ApiOperation("鑾峰彇浜戝彴閿佸畾淇℃伅") + @PostMapping("/getPTZLockInfo") + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) + @Log(title = "鑾峰彇浜戝彴閿佸畾淇℃伅", businessType = BusinessType.CONTROL) + public @ResponseBody + AjaxResult getPTZLockInfo(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + int byWorkMode = sdk.getPTZLockInfo(cmd); + if (byWorkMode == 0) { + return AjaxResult.success("浜戝彴閿佸畾鐘舵�侊細瑙i攣"); + } else if (byWorkMode == 1) { + return AjaxResult.success("浜戝彴閿佸畾鐘舵�侊細閿佸畾"); + } else { + return AjaxResult.error("浜戝彴閿佸畾鐘舵�侊細澶辫触"); + } + } + + @ApiOperation("閫忛浘寮�鍏�") + @PostMapping("/defogcfg") + @Log(title = "閫忛浘寮�鍏�", businessType = BusinessType.CONTROL) + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"}) + public @ResponseBody + AjaxResult defogcfg(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + return toAjax(sdk.controlDefogcfg(cmd)); + } + + @ApiOperation("绾㈠寮�鍏�") + @PostMapping("/infrarecfg") + @Log(title = "绾㈠寮�鍏�", businessType = BusinessType.CONTROL) + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"}) + public @ResponseBody + AjaxResult infrarecfg(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + return toAjax(sdk.controlInfrarecfg(cmd)); + } + + @ApiOperation(value = "鎵嬪姩/鑷姩鑱氱劍", notes = "true鎵嬪姩flase鑷姩") + @PostMapping("/focusMode") + @Log(title = "鎵嬪姩/鑷姩鑱氱劍", businessType = BusinessType.CONTROL) + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"}) + public @ResponseBody + AjaxResult enableFocusMode(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + return toAjax(sdk.controlFocusMode(cmd)); + } + + @ApiOperation(value = "鑾峰彇鑱氱劍妯″紡", notes = "1鎵嬪姩2鑷姩") + @PostMapping("/getFocusMode") + public @ResponseBody + AjaxResult getFocusMode(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + String focusMode = sdk.getFocusMode(cmd); + return AjaxResult.success(focusMode); + } + + @ApiOperation("浜戝彴鍔犵儹") + @PostMapping("/heateRpwron") + @Log(title = "浜戝彴鍔犵儹", businessType = BusinessType.CONTROL) + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"}) + public @ResponseBody + AjaxResult heateRpwron(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + return toAjax(sdk.controlPTHeateRpwron(cmd)); + } + + + @ApiOperation("闀滃ご鍔犵儹") + @PostMapping("/cameraDeicing") + @Log(title = "闀滃ご鍔犵儹", businessType = BusinessType.CONTROL) + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"}) + public @ResponseBody + AjaxResult cameraDeicing(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + return toAjax(sdk.controlCameraDeicing(cmd)); + } + + @PostMapping("/captureJPEGPicture") + public @ResponseBody + AjaxResult captureJPEGPicture(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + String base64Str = sdk.captureJPEGPicture(cmd); + return toAjaxString(base64Str, "鐩告満鎶撳浘"); + } + + @ApiOperation("鐩告満鎶撳浘") + @PostMapping("/picCutCate") + @Log(title = "鐩告満鎶撳浘", businessType = BusinessType.CONTROL) + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) + public @ResponseBody + AjaxResult picCutCate(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + String path = sdk.picCutCate(cmd); + return toAjaxString(path, "鐩告満鎶撳浘"); + } + + @ApiOperation("鎵嬪姩褰曞儚") + @PostMapping("/record") + @Log(title = "鎵嬪姩褰曞儚", businessType = BusinessType.CONTROL) + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"}) + public @ResponseBody + AjaxResult record(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + String path = sdk.record(cmd); + return toAjaxString(path, "鎵嬪姩褰曞儚"); + } + + @ApiOperation("鑾峰彇鐩告満鏋惰鍙傛暟") + @PostMapping("/getCameraSetupCFG") + @Log(title = "鑾峰彇鐩告満鏋惰鍙傛暟", businessType = BusinessType.CONTROL) + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"}) + public @ResponseBody + AjaxResult getCameraSetupCFG(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + return AjaxResult.success(sdk.getGisInfo(cmd)); + } +} diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java index b71b6f6..b740fc8 100644 --- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java +++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java @@ -8,14 +8,15 @@ import java.util.Map; /** - * @ClassName: sdkClinet + * @ClassName: IHikClientService * @Description: 娴峰悍鎿嶄綔瀹㈡埛绔帴鍙g被 * @Author: Administrator * @Date: 2023骞�01鏈�17鏃� 15:59 * @Version: 1.0 **/ public interface IHikClientService { - void loadHCNetSDKLib(); + //sdk鍒濆鍖� + boolean init(); //鍚屾鐧诲綍 void syncLogin(ArdCameras cameras); @@ -102,7 +103,7 @@ boolean guideTargetPosition(CameraCmd cmd); //寮�濮嬪綍鍍� - void recordStart(CameraCmd cmd); + boolean recordStart(CameraCmd cmd); //鍋滄褰曞儚-涓婁紶minio-杩斿洖褰曞儚url String recordStopToMinio(CameraCmd cmd); 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 4fb1c27..126acde 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 @@ -61,7 +61,7 @@ private static HCNetSDK hCNetSDK; @Override - public void loadHCNetSDKLib() { + public boolean init() { try { log.debug("寮�濮嬪姞杞絪dk搴撴枃浠惰矾寰�"); if (Platform.isWindows()) { @@ -96,8 +96,10 @@ ptrByteArraySsl.write(); hCNetSDK.NET_DVR_SetSDKInitCfg(4, ptrByteArraySsl.getPointer()); } + return true; } catch (Exception ex) { log.error("鍔犺浇搴撴枃浠跺紓甯革細" + ex.getMessage()); + return false; } } @@ -794,7 +796,7 @@ String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return null; + return new HashMap<>(); } Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); @@ -852,9 +854,9 @@ NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS(); m_ptzPosCurrent.wAction = 1; try { - String p = String.valueOf(ptz.get("p") * 10); - String t = String.valueOf(ptz.get("t") * 10); - String z = String.valueOf(ptz.get("z") * 10); + String p = String.valueOf((int)(ptz.get("p") * 10)); + String t = String.valueOf((int)(ptz.get("t") * 10)); + String z = String.valueOf((int)(ptz.get("z") * 10)); m_ptzPosCurrent.wPanPos = (short) (Integer.parseInt(p, 16)); m_ptzPosCurrent.wTiltPos = (short) (Integer.parseInt(t, 16)); m_ptzPosCurrent.wZoomPos = (short) (Integer.parseInt(z, 16)); @@ -1468,6 +1470,15 @@ GlobalVariable.previewMap.remove(cameraId); } log.debug("褰曞儚鍋滄"); + //瀛樺叆minio + String BucketName = "record"; + String ObjectName =IdUtils.simpleUUID() + ".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) { @@ -1477,13 +1488,13 @@ } @Override - public void recordStart(CameraCmd cmd) { + public boolean recordStart(CameraCmd cmd) { try { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4"); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return; + return false; } Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); //寮哄埗I甯х粨鏋勪綋瀵硅薄 @@ -1515,18 +1526,20 @@ int lRealHandle = hCNetSDK.NET_DVR_RealPlay_V40(userId, previewinfo, null, null); if (lRealHandle == -1) { log.error("鍙栨祦澶辫触" + hCNetSDK.NET_DVR_GetLastError()); - return; + return false; } log.debug("鍙栨祦鎴愬姛"); GlobalVariable.threadMap.put(cameraId, Thread.currentThread().getName()); GlobalVariable.previewMap.put(cameraId, lRealHandle); if (!hCNetSDK.NET_DVR_SaveRealData_V30(GlobalVariable.previewMap.get(cameraId), 2, path)) { log.error("淇濆瓨瑙嗛鏂囦欢鍒颁复鏃舵枃浠跺す澶辫触 閿欒鐮佷负: " + hCNetSDK.NET_DVR_GetLastError()); - return; + return false; } log.debug("褰曞儚寮�濮�"); + return true; } catch (Exception ex) { log.error("寮�濮嬪綍鍍忓紓甯�" + ex.getMessage()); + return false; } } -- Gitblit v1.9.3