package com.ruoyi.utils.sdk.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.common.annotation.Anonymous;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.utils.sdk.hiksdk.service.impl.HikvisionSDK;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.*;
|
import springfox.documentation.annotations.ApiIgnore;
|
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
|
**/
|
@Controller
|
@RequestMapping("/hik")
|
@Anonymous
|
@Api(tags = "海康sdk接口")
|
@ApiIgnore
|
public class HikSdkController extends BaseController {
|
|
@Resource
|
private HikvisionSDK 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 sdk.pTZControl(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());
|
int focus = sdk.getFocusPos(cmd);
|
return AjaxResult.success("获取聚焦值", focus);
|
}
|
|
@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 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("/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("云台锁定状态:解锁");
|
} 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));
|
}
|
}
|