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.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 IArdCamerasService ardCamerasService; /** * @描述 初始加载海康库文件 * @参数 [] * @返回值 void * @创建人 刘苏义 * @创建时间 2023/1/17 16:13 * @修改人和其它信息 if (Platform.isLinux()) */ @PostConstruct public void initHCNetSDK() { //初始化加载sdk库文件 sdk.loadHCNetSDKLib(); //登录所有相机 sdk.loginAll(); } @RequestMapping("/index") private String index() { return "test"; } @GetMapping("/list") public @ResponseBody AjaxResult list(ArdCameras ardCamera) { List list = ardCamerasService.selectArdCamerasListNoDataScope(ardCamera); return AjaxResult.success("相机列表:", list); } @ApiOperation("视频分辨率") @PostMapping("/videoResolution") @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum"}) @Log(title = "视频分辨率", businessType = BusinessType.CONTROL) public @ResponseBody AjaxResult getVideoResolution(@RequestBody CameraCmd cmd) { String videoResolution = sdk.getVideoResolution(cmd); return toAjaxString(videoResolution, "视频分辨率:"); } @ApiOperation("在线状态") @PostMapping("/state") @ApiOperationSupport(includeParameters = {"cmd.cameraId"}) @Log(title = "在线状态", businessType = BusinessType.CONTROL) public @ResponseBody AjaxResult getOnlineState(@RequestBody CameraCmd cmd) { return toAjax(sdk.isOnLine(cmd)); } @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.channelNum", "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.channelNum", "cmd.presetIndex"}) @Log(title = "调用预置点", businessType = BusinessType.CONTROL) public @ResponseBody AjaxResult gotoPreset(@RequestBody CameraCmd cmd) { return toAjax(sdk.gotoPreset(cmd)); } @ApiOperation("设置预置点") @PostMapping("/setPreset") @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum", "cmd.presetIndex"}) @Log(title = "设置预置点", businessType = BusinessType.CONTROL) public @ResponseBody AjaxResult setPreset(@RequestBody CameraCmd cmd) { return toAjax(sdk.setPreset(cmd)); } @ApiOperation("获取聚焦值") @PostMapping("/getFocusPos") @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum"}) @Log(title = "获取聚焦值", businessType = BusinessType.CONTROL) public @ResponseBody AjaxResult getFocusPos(@RequestBody CameraCmd cmd) { Map Map = sdk.getFocusPos(cmd); return AjaxResult.success("获取聚焦值", Map); } @ApiOperation("设置聚焦值") @PostMapping("/setFocusPos") @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum", "cmd.dwFocusPos"}) @Log(title = "设置聚焦值", businessType = BusinessType.CONTROL) public @ResponseBody AjaxResult setFocusPos(@RequestBody CameraCmd cmd) { return toAjax(sdk.setFocusPos(cmd)); } @ApiOperation("获取PTZ") @PostMapping("/getPTZ") @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum"}) @Log(title = "获取PTZ", businessType = BusinessType.CONTROL) public @ResponseBody AjaxResult GetPTZ(@RequestBody CameraCmd cmd) { Map ptzMap = sdk.getPtz(cmd); return AjaxResult.success("获取ptz", ptzMap); } @ApiOperation("获取PTZ范围") @PostMapping("/getPTZScope") @Log(title = "获取PTZ范围", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum"}) public @ResponseBody AjaxResult GetPTZScope(@RequestBody CameraCmd cmd) { Map ptzMap = sdk.getPtzScope(cmd); return AjaxResult.success("获取ptz范围", ptzMap); } @ApiOperation("设置PTZ") @PostMapping("/setPTZ") @Log(title = "设置PTZ", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum", "cmd.ptzMap"}) public @ResponseBody AjaxResult SetPTZ(@RequestBody CameraCmd cmd) { return toAjax(sdk.setPtz(cmd)); } @ApiOperation("指向目标") @PostMapping("/setTargetPosition") @Log(title = "指向目标", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum", "cmd.targetPosition"}) public @ResponseBody AjaxResult setTargetPosition(@RequestBody CameraCmd cmd) { return toAjax(sdk.setTargetPosition(cmd)); } @ApiOperation("设置零方位角") @PostMapping("/setZeroPTZ") @Log(title = "设置零方位角", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum"}) public @ResponseBody AjaxResult SetZeroPTZ(@RequestBody CameraCmd cmd) { 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 toAjax(sdk.controlLock(cmd)); } @ApiOperation("获取云台锁定信息") @PostMapping("/getPTZLockInfo") @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum"}) @Log(title = "获取云台锁定信息", businessType = BusinessType.CONTROL) public @ResponseBody AjaxResult getPTZLockInfo(@RequestBody CameraCmd cmd) { int byWorkMode = sdk.getPTZLockInfo(cmd); if (byWorkMode == 0) { return AjaxResult.success("云台锁定状态:解锁"); } else if (byWorkMode == 1) { return AjaxResult.success("云台锁定状态:锁定"); } else { return AjaxResult.error("云台锁定状态:失败"); } } @ApiOperation("透雾开关") @PostMapping("/defogcfg") @Log(title = "透雾开关", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum", "cmd.enable"}) public @ResponseBody AjaxResult defogcfg(@RequestBody CameraCmd cmd) { return toAjax(sdk.controlDefogcfg(cmd)); } @ApiOperation("红外开关") @PostMapping("/infrarecfg") @Log(title = "红外开关", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum", "cmd.enable"}) public @ResponseBody AjaxResult infrarecfg(@RequestBody CameraCmd cmd) { return toAjax(sdk.controlInfrarecfg(cmd)); } @ApiOperation(value = "手动/自动聚焦", notes = "true手动flase自动") @PostMapping("/focusMode") @Log(title = "手动/自动聚焦", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum", "cmd.enable"}) public @ResponseBody AjaxResult enableFocusMode(@RequestBody CameraCmd cmd) { return toAjax(sdk.controlFocusMode(cmd)); } @ApiOperation("云台加热") @PostMapping("/heateRpwron") @Log(title = "云台加热", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum", "cmd.enable"}) public @ResponseBody AjaxResult HeateRpwron(@RequestBody CameraCmd cmd) { return toAjax(sdk.controlPTHeateRpwron(cmd)); } @ApiOperation("镜头加热") @PostMapping("/cameraDeicing") @Log(title = "镜头加热", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum", "cmd.enable"}) public @ResponseBody AjaxResult CameraDeicing(@RequestBody CameraCmd cmd) { return toAjax(sdk.controlCameraDeicing(cmd)); } @PostMapping("/captureJPEGPicture") public @ResponseBody AjaxResult captureJPEGPicture(@RequestBody CameraCmd cmd) { String base64Str = sdk.captureJPEGPicture(cmd); return toAjaxString(base64Str, "相机抓图"); } @ApiOperation("相机抓图") @PostMapping("/picCutCate") @Log(title = "相机抓图", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum"}) public @ResponseBody AjaxResult picCutCate(@RequestBody CameraCmd cmd) { String path = sdk.picCutCate(cmd); return toAjaxString(path, "相机抓图"); } @ApiOperation("手动录像") @PostMapping("/record") @Log(title = "手动录像", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum", "cmd.enable"}) public @ResponseBody AjaxResult record(@RequestBody CameraCmd cmd) { String path = sdk.record(cmd); return toAjaxString(path, "手动录像"); } }