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/util/GetCameraUtils.java |  297 ++++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 222 insertions(+), 75 deletions(-)

diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/util/GetCameraUtils.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/util/GetCameraUtils.java
index e8ebc61..d2d286a 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/util/GetCameraUtils.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/util/GetCameraUtils.java
@@ -2,19 +2,17 @@
 
 import cn.gistack.sm.hk.constant.HkConstant;
 import cn.gistack.sm.hk.constant.ProtocolConstant;
+import cn.gistack.sm.hk.vo.EventVO;
+import cn.gistack.sm.hk.vo.HkVO;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.hikvision.artemis.sdk.ArtemisHttpUtil;
 import com.hikvision.artemis.sdk.config.ArtemisConfig;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 import static cn.gistack.sm.hk.constant.HkConstant.ARTEMIS_PATH;
-
 public class GetCameraUtils {
 
 	/**
@@ -24,16 +22,33 @@
 	 * @param body
 	 * @return
 	 */
-	public static String common(String url, String body) {
+	public static String common(Integer type,String url, String body) {
 		/**
 		 * STEP1:设置平台参数,根据实际情况,设置host appkey appsecret 三个参数.
 		 */
 		// artemis网关服务器ip端口
-		ArtemisConfig.host = HkConstant.HOST;
+		if (null==type){
+			ArtemisConfig.host = HkConstant.HOST;
+		}
+		if (type==1) {
+			ArtemisConfig.host = HkConstant.HOST;
+		}
+		if (type==2) {
+			ArtemisConfig.host = HkConstant.NEW_HOST;
+		}
 		// 秘钥appKey
 		ArtemisConfig.appKey = HkConstant.AppKey;
 		// 秘钥appSecret
 		ArtemisConfig.appSecret = HkConstant.AppSecret;
+
+		if (type==3) {
+			// 秘钥appKey
+			ArtemisConfig.appKey = HkConstant.EventAppKey;
+			// 秘钥appSecret
+			ArtemisConfig.appSecret = HkConstant.EventAppSecret;
+			// host
+			ArtemisConfig.host = HkConstant.Event_NEW_HOST;
+		}
 
 
 		/**
@@ -65,23 +80,35 @@
 	/**
 	 * 获取视频预览数据
 	 *
-	 * @param url             视频预览url
+	 * @param type  类型,新/老
+	 * @param url 视频预览url
 	 * @param cameraIndexCode 监控点唯一标识
+	 * @param protocol
+	 * @param transmode
+	 * @param expand
 	 * @return
 	 */
-	public static String GetCameraPreviewURL(String url, String cameraIndexCode, String protocol) {
+	public static String GetCameraPreviewURL(Integer type,
+											 String url,
+											 String cameraIndexCode,
+											 String protocol,
+											 Integer transmode,
+											 String expand,
+											 Integer streamType) {
 		/**
 		 * 组装请求参数
 		 */
 		JSONObject jsonBody = new JSONObject();
 		jsonBody.put("cameraIndexCode", cameraIndexCode);
-		jsonBody.put("streamType", 0);
+		jsonBody.put("streamType",streamType);
 		jsonBody.put("protocol", protocol);
-		jsonBody.put("transmode", 1);
-//		jsonBody.put("expand", "streamform=ps");
+		jsonBody.put("transmode", transmode);
+		if (null!= expand && !expand.equals("")) {
+			jsonBody.put("expand", expand);
+		}
 		String body = jsonBody.toJSONString();
 		// 调用公共方法
-		return common(url,body);
+		return common(type,url,body);
 	}
 
 	/**
@@ -91,7 +118,8 @@
 	 * @param cameraCode 监控点唯一标识
 	 * @return
 	 */
-	public static String QueryCameraPreviewURL(String url,
+	public static String QueryCameraPreviewURL(Integer type,
+											   String url,
 											   String cameraCode,
 											   String resourceType,
 											   String key) {
@@ -113,7 +141,7 @@
 		jsonBody.put("expressions", list);
 		String body = jsonBody.toJSONString();
 		System.out.println(jsonBody);
-		return common(url,body);
+		return common(type,url,body);
 	}
 
 
@@ -124,7 +152,7 @@
 	 * @param cameraIndexCode 监控点唯一标识
 	 * @return
 	 */
-	public static String GetTalkURLs(String url, String cameraIndexCode) {
+	public static String GetTalkURLs(Integer type, String url, String cameraIndexCode) {
 		/**
 		 * 组装请求参数
 		 */
@@ -138,7 +166,7 @@
 		jsonBody.put("talkIndexCode", "ce744c4c67df464f92994185d825b6fa");
 		jsonBody.put("protocol", "wss");
 		String body = jsonBody.toJSONString();
-		return common(url,body);
+		return common(type,url,body);
 	}
 
 	/**
@@ -150,7 +178,8 @@
 	 * @param command 命令
 	 * @return
 	 */
-	public static String controlling(String url,
+	public static String controlling(Integer type,
+									 String url,
 									 String cameraIndexCode,
 									 Integer action,
 									 String command,
@@ -170,8 +199,29 @@
 		/**
 		 * 调用接口
 		 */
-		return common(url,body);
+		return common(type,url,body);
 	}
+
+	/**
+	 * 查询监控点的预置点信息
+	 *
+	 * @param url  查询监控点的预置点信息URL
+	 * @param cameraIndexCode 监控点唯一标识
+	 * @return
+	 */
+	public static String presetsSearches(Integer type,String url,String cameraIndexCode) {
+		/**
+		 * 组装请求参数
+		 */
+		JSONObject jsonBody = new JSONObject();
+		jsonBody.put("cameraIndexCode", cameraIndexCode);
+		String body = jsonBody.toJSONString();
+		/**
+		 * 调用接口
+		 */
+		return common(type,url,body);
+	}
+
 
 	/**
 	 * 云台控制
@@ -184,7 +234,8 @@
 	 * @param endY 命令
 	 * @return
 	 */
-	public static String selZoomURLs(String url,
+	public static String selZoomURLs(Integer type,
+									 String url,
 									 String cameraIndexCode,
 									 Integer startX,
 									 Integer startY,
@@ -204,17 +255,36 @@
 		/**
 		 * 调用接口
 		 */
-		return common(url,body);
+		return common(type,url,body);
 	}
 
-
 	/**
-	 * 获取监控点资源分页数据
+	 * 抓图
 	 *
 	 * @param url 监控资源url
 	 * @return
 	 */
-	public static String GetCameraResourcePage(Integer pageNo, Integer pageSize, String url) {
+	public static String manualCaptureUrls(Integer type,String url,String cameraIndexCode) {
+		/**
+		 * 组装请求参数
+		 */
+		JSONObject jsonBody = new JSONObject();
+		jsonBody.put("cameraIndexCode", cameraIndexCode);
+		String body = jsonBody.toJSONString();
+
+		/**
+		 * 调用接口并返回数据
+		 * post请求application/json类型参数;
+		 */
+		return common(type,url, body);
+	}
+
+	/**
+	 * 获取监控点资源分页数据
+	 * @param url 监控资源url
+	 * @return
+	 */
+	public static String GetCameraResourcePage(Integer type,Integer pageNo, Integer pageSize, String url) {
 		/**
 		 * 组装请求参数
 		 */
@@ -227,32 +297,87 @@
 		 * 调用接口并返回数据
 		 * post请求application/json类型参数;
 		 */
-		return common(url, body);
+		return common(type,url, body);
 	}
 
 	/**
-	 * 抓图
-	 *
-	 * @param url 监控资源url
+	 * 海康视频事件订阅
+	 * @param eventVO
+	 * @param url
 	 * @return
 	 */
-	public static String manualCaptureUrls(String url,String cameraIndexCode) {
+	public static String addEventSubscriptionByEventTypes(EventVO eventVO, String url) {
 		/**
 		 * 组装请求参数
 		 */
 		JSONObject jsonBody = new JSONObject();
-		jsonBody.put("cameraIndexCode", cameraIndexCode);
+		jsonBody.put("eventTypes", Arrays.stream(eventVO.getEventTypes().split(",")).mapToLong(Long::parseLong).toArray());
+		jsonBody.put("eventDest", eventVO.getEventDest());
+		if (null!=eventVO.getSubType()){
+			jsonBody.put("subType", eventVO.getSubType());
+		}
+		if (null!=eventVO.getEventLvl()){
+			jsonBody.put("eventLvl", Arrays.stream(eventVO.getEventLvl().split(",")).mapToInt(Integer::parseInt).toArray());
+		}
 		String body = jsonBody.toJSONString();
 
 		/**
 		 * 调用接口并返回数据
 		 * post请求application/json类型参数;
 		 */
-		return common(url, body);
+		return common(null==eventVO.getType()?1:eventVO.getType(),url, body);
+	}
+
+	/**
+	 * 海康视频事件取消订阅
+	 * @param eventVO
+	 * @param url
+	 * @return
+	 */
+	public static String removeEventSubscriptionByEventTypes(EventVO eventVO, String url) {
+		long[] eventTypes =  Arrays.stream(eventVO.getEventTypes().split(",")).mapToLong(Long::parseLong).toArray();
+		/**
+		 * 组装请求参数
+		 */
+		JSONObject jsonBody = new JSONObject();
+		jsonBody.put("eventTypes", eventTypes);
+		String body = jsonBody.toJSONString();
+
+		/**
+		 * 调用接口并返回数据
+		 * post请求application/json类型参数;
+		 */
+		return common(null==eventVO.getType()?1:eventVO.getType(),url, body);
+	}
+
+	/**
+	 * 查询事件订阅信息
+	 * @param eventVO
+	 * @param url
+	 * @return
+	 */
+	public static String getEventSubscriptionView(EventVO eventVO, String url) {
+		/**
+		 * 组装请求参数
+		 */
+		JSONObject jsonBody = new JSONObject();
+		String body = jsonBody.toJSONString();
+
+		/**
+		 * 调用接口并返回数据
+		 * post请求application/json类型参数;
+		 */
+		return common(null==eventVO.getType()?1:eventVO.getType(),url, body);
 	}
 
 //	public static void main(String[] args) {
 //
+//		String previewURL = GetCameraPreviewURL(1, HkConstant.previewURLs,
+//			"0c4f30948dde4998a676ec6983119cb5",
+//			"rtsp",
+//			"transcode=1&videotype=h264");
+//		System.out.println("previewURL = " + previewURL);
+
 //		String result = GetCameraResourcePage(1, 10, HkConstant.cameras);
 //
 //		JSONObject jsonObject1 = JSONObject.parseObject(result);
@@ -260,55 +385,77 @@
 //		JSONArray arr1 = JSON.parseArray(res1.getString("list"));
 //		JSONObject data1 = (JSONObject) arr1.get(1);
 //		String code1 = data1.get("cameraIndexCode").toString();
+
+		// 云台控制
+//		String right = controlling(HkConstant.controllingURLs,
+//			"ff1f050afd1c47829dec1ec14575c9e3",
+//			0,
+//			"ZOOM_OUT",
+//			null,
+//			null
+//		);
+//		System.out.println("right = " + right);
+
+//		// 放大
+//		String big = selZoomURLs(HkConstant.selZoomURLs,
+//			"ff1f050afd1c47829dec1ec14575c9e3",
+//			55,
+//			58,
+//			22,
+//			23
+//		);
+//		System.out.println("big = " + big);
+
+		// 抓图
+//		String manualCapture = manualCaptureUrls(HkConstant.manualCaptureUrls,
+//			"ff1f050afd1c47829dec1ec14575c9e3");
+//		System.out.println("manualCapture = " + manualCapture);
+
+		//根据设备编号获取子节点编号
+//		String result2 = QueryCameraPreviewURL(HkConstant.camerasID, code1, "camera", "parentIndexCode");
 //
-//		// 云台控制
-////		String right = controlling(HkConstant.controllingURLs,
-////			"ff1f050afd1c47829dec1ec14575c9e3",
-////			0,
-////			"ZOOM_OUT",
-////			null,
-////			null
-////		);
-////		System.out.println("right = " + right);
-//
-////		// 放大
-////		String big = selZoomURLs(HkConstant.selZoomURLs,
-////			"ff1f050afd1c47829dec1ec14575c9e3",
-////			55,
-////			58,
-////			22,
-////			23
-////		);
-////		System.out.println("big = " + big);
-//
-//		// 抓图
-////		String manualCapture = manualCaptureUrls(HkConstant.manualCaptureUrls,
-////			"ff1f050afd1c47829dec1ec14575c9e3");
-////		System.out.println("manualCapture = " + manualCapture);
-//
-//		//根据设备编号获取子节点编号
-////		String result2 = QueryCameraPreviewURL(HkConstant.camerasID, code1, "camera", "parentIndexCode");
-////
-////		JSONObject jsonObject2 = JSONObject.parseObject(result2);
-////		JSONObject res2 = (JSONObject) jsonObject2.get("data");
-////		JSONArray arr2 = JSON.parseArray(res2.getString("list"));
-////		JSONObject data2 = (JSONObject) arr2.get(0);
-////		String code2 = data2.get("indexCode").toString();
-//		//ff1f050afd1c47829dec1ec14575c9e3
-//		//e2cb261e14144f53a300769839d54753
-//		//根据子节点编号获取设备播放地址
+//		JSONObject jsonObject2 = JSONObject.parseObject(result2);
+//		JSONObject res2 = (JSONObject) jsonObject2.get("data");
+//		JSONArray arr2 = JSON.parseArray(res2.getString("list"));
+//		JSONObject data2 = (JSONObject) arr2.get(0);
+//		String code2 = data2.get("indexCode").toString();
+		//ff1f050afd1c47829dec1ec14575c9e3
+		//e2cb261e14144f53a300769839d54753
+		//根据子节点编号获取设备播放地址
 //		String result3 = GetCameraPreviewURL(HkConstant.previewURLs,
 //			"0113d3498d2e41caaf9e5355d1575da3", ProtocolConstant.WS);
 //		JSONObject jsonObject = JSONObject.parseObject(result3);
 //		Map map = (Map) jsonObject.get("data");
-//		//根据子节点编号获取音频对讲地址
-////		String result4 = GetTalkURLs(HkConstant.talkURLs, code1);
-//
-////		System.out.println("result结果示例: " + result);
-////		System.out.println("result1 = " + result1);
-////		System.out.println("result2 = " + result2);
-////		System.out.println("result3 = " + result3);
+		//根据子节点编号获取音频对讲地址
+//		String result4 = GetTalkURLs(HkConstant.talkURLs, code1);
+
+//		System.out.println("result结果示例: " + result);
+//		System.out.println("result1 = " + result1);
+//		System.out.println("result2 = " + result2);
+//		System.out.println("result3 = " + result3);
 //		System.out.println("url = " + map.get("url"));
-////		System.out.println("result4 = " + result4);
+//		System.out.println("result4 = " + result4);
+
+		// 查询回放url
+//		HkVO hk = new HkVO();
+//		hk.setCameraIndexCode("0c4f30948dde4998a676ec6983119cb5");
+//		hk.setBeginTime("2023-05-08T11:52:16.000+08:00");
+//		hk.setEndTime("2023-05-11T11:52:15.000+08:00");
+//		hk.setProtocol("wss");
+//
+//		/**
+//		 * 组装请求参数
+//		 */
+//		JSONObject jsonBody = new JSONObject();
+//		jsonBody.put("cameraIndexCode", hk.getCameraIndexCode());
+//		jsonBody.put("protocol", hk.getProtocol());
+//		jsonBody.put("recordLocation", "1");
+//		jsonBody.put("beginTime", hk.getBeginTime());
+//		jsonBody.put("endTime", hk.getEndTime());
+//		String body = jsonBody.toJSONString();
+//
+//		String common = common(HkConstant.playbackURLs, body);
+//
+//		System.out.println("common = " + common);
 //	}
 }

--
Gitblit v1.9.3