package com.ruoyi.device.camera.controller; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; 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 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; 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; /** * @Description: * @ClassName: CameraSdkController * @Author: 刘苏义 * @Date: 2023年10月14日17:02:56 **/ @Api(tags = "相机通用SDK接口") @Controller @RequestMapping("/cameraSdk") @Anonymous public class CameraSdkController extends BaseController { @Resource private IHikClientService hikClientService; @Resource private IDhClientService dhClientService; @Resource private IArdCamerasService ardCamerasService; /** * @描述 初始加载海康库文件 * @参数 [] * @返回值 void * @创建人 刘苏义 * @创建时间 2023/1/17 16:13 * @修改人和其它信息 if (Platform.isLinux()) */ @PostConstruct public void initHCNetSDK() { //初始化加载sdk库文件 hikClientService.loadHCNetSDKLib(); //登录所有相机 hikClientService.loginAll(); } @RequestMapping("/preview") private String preview() { return "preview"; } @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("/getVideoCompressionCfg") @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) @Log(title = "获取码流压缩参数", businessType = BusinessType.CONTROL) public @ResponseBody AjaxResult getVideoCompressionCfg(@RequestBody CameraCmd cmd) { return AjaxResult.success(hikClientService.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 = hikClientService.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(hikClientService.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(hikClientService.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(hikClientService.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 Map = hikClientService.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(hikClientService.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 ptzMap = hikClientService.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 ptzMap = hikClientService.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(hikClientService.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(hikClientService.guideTargetPosition(cmd)); } @ApiOperation("设置零方位角") @PostMapping("/setZeroPTZ") @Log(title = "设置零方位角", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.cmd.chanNo"}) public @ResponseBody AjaxResult setZeroPTZ(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(hikClientService.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(hikClientService.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(hikClientService.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 = hikClientService.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.chanNo", "cmd.enable"}) public @ResponseBody AjaxResult defogcfg(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(hikClientService.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(hikClientService.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(hikClientService.controlFocusMode(cmd)); } @ApiOperation(value = "获取聚焦模式", notes = "1手动2自动") @PostMapping("/getFocusMode") public @ResponseBody AjaxResult getFocusMode(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); String focusMode = hikClientService.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(hikClientService.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(hikClientService.controlCameraDeicing(cmd)); } @PostMapping("/captureJPEGPicture") public @ResponseBody AjaxResult captureJPEGPicture(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); String base64Str = hikClientService.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 = hikClientService.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") @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(hikClientService.getGisInfo(cmd)); } }