| 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<ArdCameras> 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<String, Object> 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<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.channelNum"}) | 
|     public @ResponseBody | 
|     AjaxResult GetPTZScope(@RequestBody CameraCmd cmd) { | 
|         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.channelNum", "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.channelNum", "cmd.targetPosition"}) | 
|     public @ResponseBody | 
|     AjaxResult setTargetPosition(@RequestBody CameraCmd cmd) { | 
|         return toAjax(sdk.guideTargetPosition(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 AjaxResult.success(sdk.controlLock(cmd)); | 
|     } | 
|   | 
|     @ApiOperation("设置解锁") | 
|     @PostMapping("/setPTZUnLock") | 
|     @ApiOperationSupport(includeParameters = {"cmd.cameraId"}) | 
|     @Log(title = "设置解锁", 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.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(value = "获取聚焦模式", notes = "1手动2自动") | 
|     @PostMapping("/getFocusMode") | 
|     public @ResponseBody | 
|     AjaxResult getFocusMode(@RequestBody CameraCmd cmd) { | 
|         String focusMode = sdk.getFocusMode(cmd); | 
|         return AjaxResult.success(focusMode); | 
|     } | 
|   | 
|     @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, "手动录像"); | 
|     } | 
| } |