From b63dccee424ee9dfb8944ead15ff084ff62d63fa Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Fri, 10 May 2024 18:22:37 +0800
Subject: [PATCH] 对接及事件查询订阅调整
---
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/controller/HkController.java | 266 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 260 insertions(+), 6 deletions(-)
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/controller/HkController.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/controller/HkController.java
index 47d3063..cafa836 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/controller/HkController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/controller/HkController.java
@@ -4,7 +4,12 @@
import cn.gistack.sm.hk.constant.ProtocolConstant;
import cn.gistack.sm.hk.service.HkService;
import cn.gistack.sm.hk.vo.HkVO;
+import cn.gistack.sm.hk.vo.VideoVO;
+import cn.gistack.sm.sjztmd.service.IAttResBaseService;
+import cn.gistack.sm.sjztmd.vo.AttResAdVO;
+import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
+import com.google.protobuf.ServiceException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
@@ -13,6 +18,8 @@
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.*;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
import static cn.gistack.sm.hk.util.GetCameraUtils.*;
@@ -31,6 +38,8 @@
private final HkService hkService;
+ private final IAttResBaseService attResBaseService;
+
/**
* 分页列表查询
* @param query 查询参数
@@ -39,7 +48,7 @@
@ApiOperation(value = "海康设备-分页列表查询", notes = "海康设备-分页列表查询")
@GetMapping(value = "/queryHkList")
public R queryHkList(Query query) {
- String result = GetCameraResourcePage(query.getCurrent(), query.getSize(), HkConstant.cameras);
+ String result = GetCameraResourcePage(1,query.getCurrent(), query.getSize(), HkConstant.cameras);
JSONObject jsonObject1 = JSONObject.parseObject(result);
// 查询海康设备列表并返回
return R.data(jsonObject1);
@@ -53,9 +62,79 @@
@ApiOperation(value = "海康设备-海康播放url查询(ws)", notes = "海康设备-海康播放url查询(ws)")
@GetMapping(value = "/queryHkPreviewUrl")
public R queryHkPreviewUrl(HkVO hk) {
+ String expand = "";
+ if (null!=hk.getExpand() && !hk.getExpand().equals("")){
+ expand = hk.getExpand();
+ }
String url = "";
// 获取海康播放url
- String result = GetCameraPreviewURL(HkConstant.previewURLs, hk.getCameraIndexCode(), ProtocolConstant.WS);
+ String result = GetCameraPreviewURL(null==hk.getType()?1:hk.getType(),
+ HkConstant.previewURLs,
+ hk.getCameraIndexCode(),
+ ProtocolConstant.WS,
+ null==hk.getTransmode()?1:hk.getTransmode(),
+ expand,
+ null==hk.getStreamType()?1:hk.getStreamType());
+ if (null!=result) {
+ JSONObject jsonObject = JSONObject.parseObject(result);
+ Map map = (Map) jsonObject.get("data");
+ url = map.get("url").toString();
+ }
+ // 查询海康设备列表并返回
+ return R.data(url);
+ }
+
+ /**
+ * 海康播放url查询-可以传协议
+ * @param hk 查询参数
+ * @return
+ */
+ @ApiOperation(value = "海康设备-海康播放url查询", notes = "海康设备-海康播放url查询")
+ @GetMapping(value = "/queryHkPreviewUrlCommon")
+ public R queryHkPreviewUrlCommon(HkVO hk) {
+ String url = "";
+ String expand = "";
+ if (null!=hk.getExpand() && !hk.getExpand().equals("")){
+ expand = hk.getExpand();
+ }
+ // 获取海康播放url
+ String result = GetCameraPreviewURL(null==hk.getType()?1:hk.getType(),
+ HkConstant.previewURLs,
+ hk.getCameraIndexCode(),
+ hk.getProtocol(),
+ null==hk.getTransmode()?1:hk.getTransmode(),
+ expand,
+ null==hk.getStreamType()?1:hk.getStreamType());
+ if (null!=result) {
+ JSONObject jsonObject = JSONObject.parseObject(result);
+ Map map = (Map) jsonObject.get("data");
+ url = map.get("url").toString();
+ }
+ // 查询海康设备列表并返回
+ return R.data(url);
+ }
+
+ /**
+ * 海康播放url查询(Hls)
+ * @param hk 查询参数
+ * @return
+ */
+ @ApiOperation(value = "海康设备-海康播放url查询(Hls)", notes = "海康设备-海康播放url查询(Hls)")
+ @GetMapping(value = "/queryHkPreviewUrlByHls")
+ public R queryHkPreviewUrlByHls(HkVO hk) {
+ String url = "";
+ String expand = "";
+ if (null!=hk.getExpand() && !hk.getExpand().equals("")){
+ expand = hk.getExpand();
+ }
+ // 获取海康播放url
+ String result = GetCameraPreviewURL(null==hk.getType()?1:hk.getType(),
+ HkConstant.previewURLs,
+ hk.getCameraIndexCode(),
+ ProtocolConstant.HLS,
+ null==hk.getTransmode()?1:hk.getTransmode(),
+ expand,
+ null==hk.getStreamType()?1:hk.getStreamType());
if (null!=result) {
JSONObject jsonObject = JSONObject.parseObject(result);
Map map = (Map) jsonObject.get("data");
@@ -74,8 +153,8 @@
@GetMapping(value = "/handleCameraPosition")
public R handleCameraPosition(HkVO hk) {
// 获取海康播放url
- String result = controlling(HkConstant.controllingURLs,
- hk.getCameraIndexCode(),hk.getAction(),hk.getCommand(),hk.getSpeed(),null);
+ String result = controlling(null==hk.getType()?1:hk.getType(),HkConstant.controllingURLs,
+ hk.getCameraIndexCode(),hk.getAction(),hk.getCommand(),hk.getSpeed(),hk.getPresetIndex());
// 返回
return R.data(result);
}
@@ -89,8 +168,22 @@
@GetMapping(value = "/selZoom")
public R selZoom(HkVO hk) {
// 获取海康播放url
- String result = selZoomURLs(HkConstant.selZoomURLs,
+ String result = selZoomURLs(null==hk.getType()?1:hk.getType(),HkConstant.selZoomURLs,
hk.getCameraIndexCode(),hk.getStartX(),hk.getStartY(),hk.getEndX(),hk.getEndY());
+ // 返回
+ return R.data(result);
+ }
+
+ /**
+ * 查询监控点的预置点信息
+ * @param hk 查询参数
+ * @return
+ */
+ @ApiOperation(value = "海康设备-查询监控点的预置点信息", notes = "海康设备-查询监控点的预置点信息")
+ @GetMapping(value = "/presetsSearchesUrls")
+ public R presetsSearchesUrls(HkVO hk) {
+ // 获取海康播放url
+ String result = presetsSearches(null==hk.getType()?1:hk.getType(),HkConstant.presetsSearchesUrls,hk.getCameraIndexCode());
// 返回
return R.data(result);
}
@@ -104,7 +197,7 @@
@GetMapping(value = "/manualCapture")
public R manualCapture(HkVO hk) {
// 获取海康播放url
- String result = manualCaptureUrls(HkConstant.manualCaptureUrls,
+ String result = manualCaptureUrls(null==hk.getType()?1:hk.getType(),HkConstant.manualCaptureUrls,
hk.getCameraIndexCode());
// 返回
return R.data(result);
@@ -134,4 +227,165 @@
return R.data(hkService.getHkStatisticData(hk,query));
}
+
+ /**
+ * 获取海康摄像头回放url
+ * @param hk 查询参数
+ * @return
+ */
+ @ApiOperation(value = "海康设备-获取海康摄像头回放url", notes = "海康设备-获取海康摄像头回放url")
+ @GetMapping(value = "/playbackURLs")
+ public R playbackURLs(HkVO hk) {
+ /**
+ * 组装请求参数
+ */
+ JSONObject jsonBody = new JSONObject();
+ jsonBody.put("cameraIndexCode", hk.getCameraIndexCode());
+ jsonBody.put("protocol", hk.getProtocol());
+ jsonBody.put("recordLocation", "1");
+ jsonBody.put("transmode", null==hk.getTransmode()?1:hk.getTransmode());
+ jsonBody.put("beginTime", hk.getBeginTime());
+ jsonBody.put("endTime", hk.getEndTime());
+ String body = jsonBody.toJSONString();
+
+ /**
+ * 调用接口并返回数据
+ * post请求application/json类型参数;
+ */
+ return R.data(common(null==hk.getType()?1:hk.getType(),HkConstant.playbackURLs, body));
+ }
+
+ /**
+ * 获取海康摄像头语音对讲url
+ * @param hk 查询参数
+ * @return
+ */
+ @ApiOperation(value = "海康设备-获取海康摄像头语音对讲url", notes = "海康设备-获取海康摄像头语音对讲url")
+ @GetMapping(value = "/talkURLs")
+ public R talkURLs(HkVO hk) {
+ /**
+ * 组装请求参数
+ */
+ JSONObject jsonBody = new JSONObject();
+ jsonBody.put("cameraIndexCode", hk.getCameraIndexCode());
+ jsonBody.put("streamType",null==hk.getStreamType()?1:hk.getStreamType());
+ jsonBody.put("protocol", hk.getProtocol());
+ jsonBody.put("transmode", null==hk.getTransmode()?1:hk.getTransmode());
+ String body = jsonBody.toJSONString();
+
+ /**
+ * 调用接口并返回数据
+ * post请求application/json类型参数;
+ */
+ return R.data(common(null==hk.getType()?1:hk.getType(),HkConstant.talkURLs, body));
+ }
+
+
+ /**
+ * 设置监控点的预置点信息
+ * @param hk 查询参数
+ * @return
+ */
+ @ApiOperation(value = "海康设备-设置监控点的预置点信息", notes = "海康设备-设置监控点的预置点信息")
+ @GetMapping(value = "/presetsAddition")
+ public R presetsAddition(HkVO hk) {
+ /**
+ * 组装请求参数
+ */
+ JSONObject jsonBody = new JSONObject();
+ jsonBody.put("cameraIndexCode", hk.getCameraIndexCode());
+ jsonBody.put("presetName", hk.getPresetName());
+ jsonBody.put("presetIndex", hk.getPresetIndex());
+ String body = jsonBody.toJSONString();
+
+ /**
+ * 调用接口并返回数据
+ * post请求application/json类型参数;
+ */
+ return R.data(common(null==hk.getType()?1:hk.getType(),HkConstant.presetsAdditionURLs, body));
+ }
+
+ /**
+ * 删除监控点的预置点信息
+ * @param hk 查询参数
+ * @return
+ */
+ @ApiOperation(value = "海康设备-删除监控点的预置点信息", notes = "海康设备-删除监控点的预置点信息")
+ @GetMapping(value = "/presetsDeletion")
+ public R presetsDeletion(HkVO hk) {
+ /**
+ * 组装请求参数
+ */
+ JSONObject jsonBody = new JSONObject();
+ jsonBody.put("cameraIndexCode", hk.getCameraIndexCode());
+ jsonBody.put("presetIndex", hk.getPresetIndex());
+ String body = jsonBody.toJSONString();
+
+ /**
+ * 调用接口并返回数据
+ * post请求application/json类型参数;
+ */
+ return R.data(common(null==hk.getType()?1:hk.getType(),HkConstant.presetsDeletionURLs, body));
+ }
+
+ /**
+ * 同步水库设备信息
+ * @param hk 水库设备
+ * @return
+ */
+ @ApiOperation(value = "海康设备-同步水库设备信息", notes = "海康设备-同步水库设备信息")
+ @PostMapping(value = "/syncVideo")
+ public R syncVideo(@RequestBody HkVO hk) {
+ // 通过水库编号获取区域(区县)名称
+ AttResAdVO info = attResBaseService.getWaterRegionInfoByResGuid(hk.getRegionIndexCode());
+ // 判断该水库同一个区县下是否存在同水库名称的,如果是存在多个,水库名称前面拼上乡镇名称
+ String resName = setWaterName(hk,info);
+ // 设置区域名称
+ hk.setRegionName(info.getCountyName());
+ // 判断
+ // 通过区域名称查询对应的区域编号
+ String rootRegionId = hkService.regionNodesByParams(hk);
+ if (null!= rootRegionId && !rootRegionId.equals("")){
+ // 更新
+ /**
+ * 组装请求参数
+ */
+ List<VideoVO> list = new ArrayList<>();
+ VideoVO video = new VideoVO();
+ video.setRegionName(resName);
+ video.setRegionIndexCode(hk.getRegionIndexCode());
+ video.setParentIndexCode(rootRegionId);
+ video.setRegionType(10);
+ list.add(video);
+ String body = JSON.toJSONString(list);
+
+ /**
+ * 调用接口并返回数据
+ * post请求application/json类型参数;
+ */
+ JSONObject jsonObject = JSONObject.parseObject(common(null == hk.getType() ? 2 : hk.getType(), HkConstant.batchAddURLs, body));
+ // 返回
+ return R.data(200,jsonObject,null);
+ }else {
+ // 当前水库行政区域不匹配
+ return R.data(400,"当前水库行政区域不匹配","当前水库行政区域不匹配");
+ }
+ }
+
+ /**
+ * 设置水库名称( 判断该水库同一个区县下是否存在同水库名称的,如果是存在多个,水库名称前面拼上乡镇名称)
+ * @param hk
+ * @param info
+ * @return
+ */
+ private String setWaterName(HkVO hk, AttResAdVO info) {
+ // 根据水库名称、所在区域查询改水库的数量
+ Integer number = attResBaseService.getWaterCountByResNameAndCountyName(hk.getRegionName(),info.getCountyCode());
+ if (number>1){
+ return hk.getRegionName() + "(" + info.getTownName() + ")";
+ }else {
+ return hk.getRegionName();
+ }
+ }
+
}
--
Gitblit v1.9.3