zhongrj
2024-05-10 b63dccee424ee9dfb8944ead15ff084ff62d63fa
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);
//   }
}