package com.comwinwin.project.videooperation;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.comwinwin.project.constant.BaseConstant;
import com.comwinwin.project.domain.Equipment;
import com.comwinwin.project.domain.FaceSearchInfo;
import com.google.gson.JsonArray;
import com.hikvision.artemis.sdk.ArtemisHttpUtil;
import com.hikvision.artemis.sdk.config.ArtemisConfig;
import com.ruoyi.common.utils.DateUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class ArtemisPost {
/**
* 请根据自己的appKey和appSecret更换static静态块中的三个参数. [1 host]
* 如果你选择的是和现场环境对接,host要修改为现场环境的ip,https端口默认为443,http端口默认为80.例如10.33.25.22:443 或者10.33.25.22:80
* appKey和appSecret请按照或得到的appKey和appSecret更改.
* TODO 调用前先要清楚接口传入的是什么,是传入json就用doPostStringArtemis方法,下载图片doPostStringImgArtemis方法
*/
/**
* http://10.33.47.50/artemis/api/scpms/v1/eventLogs/searches
* 根据API文档可以看出来,这是一个POST请求的Rest接口,而且传入的参数值为一个json
* ArtemisHttpUtil工具类提供了doPostStringArtemis这个函数,一共六个参数在文档里写明其中的意思,因为接口是https,
* 所以第一个参数path是一个hashmap类型,请put一个key-value,query为传入的参数,body为传入的json数据
* 传入的contentType为application/json,accept不指定为null
* header没有额外参数可不传,指定为null
*
*/
/**
* http://10.33.47.50/api/visitor/v1/record/pictures
* 根据API文档可以看出来,这是一个POST请求的Rest接口,而且传入的参数值为一个json
* ArtemisHttpUtil工具类提供了doPostStringImgArtemis这个函数,一共六个参数在文档里写明其中的意思,因为接口是https,
* 所以第一个参数path是一个hashmap类型,请put一个key-value,query为传入的参数,body为传入的json数据
* 传入的contentType为application/json,accept不指定为null
* header没有额外参数可不传,指定为null
*
*/
static {
ArtemisConfig.host = BaseConstant.HOST;// 代理API网关nginx服务器ip端口
ArtemisConfig.appKey = BaseConstant.APP_KEY;// 秘钥appkey
ArtemisConfig.appSecret = BaseConstant.APP_SECRET;// 秘钥appSecret
}
public static String getCameras(){
final String getCamsApi = BaseConstant.ARTEMIS_PATH +BaseConstant.GET_CAMERAS;
Map<String, String> path = new HashMap<String, String>(2) {
{
put(BaseConstant.HTTPS, getCamsApi);//根据现场环境部署确认是http还是https
}
};
JSONObject jsonBody = new JSONObject();
jsonBody.put("pageNo", 1);
jsonBody.put("pageSize", 100);
String body = jsonBody.toJSONString();
String result =ArtemisHttpUtil.doPostStringArtemis(path,body,null,null,"application/json",null);// post请求application/json类型参数
return result;
}
public static String getPreviewURLs(Equipment equipment,String type){
final String getCamsApi = BaseConstant.ARTEMIS_PATH +BaseConstant.PREVIEW_URL_PATH;
Map<String, String> path = new HashMap<String, String>(2) {
{
put(BaseConstant.HTTPS, getCamsApi);//根据现场环境部署确认是http还是https
}
};
JSONObject jsonBody = new JSONObject();
jsonBody.put("cameraIndexCode", equipment.getCameraIndexCode());
jsonBody.put("protocol",type);
jsonBody.put("streamType",1);
jsonBody.put("transmode",1);
String body = jsonBody.toJSONString();
System.out.println(body);
String result =ArtemisHttpUtil.doPostStringArtemis(path,body,null,null,"application/json",null);// post请求application/json类型参数
JSONObject jsonObject = JSON.parseObject(result);
String url = (String) jsonObject.getJSONObject("data").get("url");
return url;
}
public static JSONArray getImg(String start, String end){
List<FaceSearchInfo> list = new ArrayList<>();
final String getCamsApi = BaseConstant.ARTEMIS_PATH +BaseConstant.FACE_CAPTURE_SEARCH;
Map<String, String> path = new HashMap<String, String>(2) {
{
put(BaseConstant.HTTPS, getCamsApi);//根据现场环境部署确认是http还是https
}
};
JSONObject jsonBody = new JSONObject();
jsonBody.put("startTime",start);
jsonBody.put("endTime",end);
//jsonBody.put("cameraIndexCodes",end);
String body = jsonBody.toJSONString();
String result =ArtemisHttpUtil.doPostStringArtemis(path,body,null,null,"application/json",null);// post请求application/json类型参数
JSONObject jsonObject = JSON.parseObject(result);
JSONArray jsonArray = jsonObject.getJSONObject("data").getJSONArray("list");
return jsonArray;
}
public static JSONArray getNum(String start, String end,String groupId){
final String getCamsApi = BaseConstant.ARTEMIS_PATH +BaseConstant.GET_NUM;
Map<String, String> path = new HashMap<String, String>(2) {
{
put(BaseConstant.HTTPS, getCamsApi);//根据现场环境部署确认是http还是https
}
};
JSONObject jsonBody = new JSONObject();
jsonBody.put("ids",groupId);
jsonBody.put("granularity","daily");
jsonBody.put("startTime",start);
jsonBody.put("endTime",end);
String body = jsonBody.toJSONString();
String result =ArtemisHttpUtil.doPostStringArtemis(path,body,null,null,"application/json",null);// post请求application/json类型参数
JSONObject jsonObject = JSON.parseObject(result);
JSONArray jsonArray = jsonObject.getJSONObject("data").getJSONArray("list");
return jsonArray;
}
public static JSONArray getGroup(String node){
final String getCamsApi = BaseConstant.ARTEMIS_PATH +BaseConstant.GET_GROUP;
Map<String, String> path = new HashMap<String, String>(2) {
{
put(BaseConstant.HTTPS, getCamsApi);//根据现场环境部署确认是http还是https
}
};
JSONObject jsonBody = new JSONObject();
jsonBody.put("regionId",node);
jsonBody.put("groupType",1);
jsonBody.put("pageNo",1);
jsonBody.put("pageSize",50);
//jsonBody.put("cameraIndexCodes",end);
String body = jsonBody.toJSONString();
String result =ArtemisHttpUtil.doPostStringArtemis(path,body,null,null,"application/json",null);// post请求application/json类型参数
JSONObject jsonObject = JSON.parseObject(result);
JSONArray jsonArray = jsonObject.getJSONObject("data").getJSONArray("list");
return jsonArray;
}
public static JSONArray getNode(){
final String getCamsApi = BaseConstant.ARTEMIS_PATH +BaseConstant.GET_NODES;
Map<String, String> path = new HashMap<String, String>(2) {
{
put(BaseConstant.HTTPS, getCamsApi);//根据现场环境部署确认是http还是https
}
};
JSONObject jsonBody = new JSONObject();
JSONArray jsonElements = new JSONArray();
jsonElements.add("root000000");
jsonBody.put("parentIndexCodes",jsonElements);
jsonBody.put("resourceType","region");
jsonBody.put("pageNo",1);
jsonBody.put("pageSize",50);
//jsonBody.put("cameraIndexCodes",end);
String body = jsonBody.toJSONString();
String result =ArtemisHttpUtil.doPostStringArtemis(path,body,null,null,"application/json",null);// post请求application/json类型参数
JSONObject jsonObject = JSON.parseObject(result);
JSONArray jsonArray = jsonObject.getJSONObject("data").getJSONArray("list");
return jsonArray;
}
public static void callPostImgStringApi(){
final String VechicleDataApi = BaseConstant.ARTEMIS_PATH +"/api/visitor/v1/record/pictures";
Map<String,String> path = new HashMap<String,String>(2){
{
put("http://",VechicleDataApi);
}
};
JSONObject jsonBody = new JSONObject();
jsonBody.put("svrIndexCode", "8907fd9d-d090-43d3-bb3a-3a4b10dd7219");
jsonBody.put("picUri", "/pic?0dd453i3c-e*046456451175m6ep=t=i2p*i=d1s*i3d0d*=*1b8i81f4747059503--bdf90a-855s5721z3b9i=1=");
String body = jsonBody.toJSONString();
System.out.println("body: "+body);
HttpResponse result =ArtemisHttpUtil.doPostStringImgArtemis(path,body,null,null,"application/json",null);
try {
HttpResponse resp = result;
if (200==resp.getStatusLine().getStatusCode()) {
HttpEntity entity = resp.getEntity();
InputStream in = entity.getContent();
Tools.savePicToDisk(in, "d:/", "test4.jpg");
System.out.println("下载成功");
}else{
System.out.println("下载出错");
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws ParseException {
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS+08:00");
// SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// Date s = sd.parse("2022-04-13 16:00:00");
// Date e = sd.parse("2022-04-13 18:00:00");
// String end = sdf.format(e);
// String start = sdf.format(s);
// JSONArray array = getImg(start,end);
// System.out.println("捕获人脸列表: "+array);
// System.out.println("捕获人脸列表: "+array.size());
//
// String Result = getCameras();
// JSONObject jsonObject = JSON.parseObject(Result);
// JSONArray jsonArray = jsonObject.getJSONObject("data").getJSONArray("list");
// System.out.println("获取摄像机: "+jsonArray);
// Equipment equipment = new Equipment();
// equipment.setCameraIndexCode("1838cd7aa9c94ebebf8f061a8d3eb1ef");
// String StringResult = getPreviewURLs(equipment,BaseConstant.RTSP);
// System.out.println("获取路径: "+StringResult);
//98e5bde53ee84a5f9a178635c8d8fcd5
// JSONArray Result = getNode();
// System.out.println("list: "+Result);
// JSONArray Result = getGroup("91f1e76a-1ce3-4d43-beaf-68eaf5ad526c");
// System.out.println("list: "+Result);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS+08:00");
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
String s = sd.format(new Date());
Date e = sd.parse(s);
String start = sdf.format(e);
String end = sdf.format(new Date());
JSONArray array = getNum(start,end,"85e645d3-1dad-463b-a3bb-1cd35a076647");
System.out.println("array: "+array);
}
}
public final static String HTTPS = "https://";
public final static String HTTP = "http://";
public final static String HOST = "123.124.27.48:1443";
//public final static String HOST = "192.168.1.200:1443";
public final static String APP_KEY = "28799674";
public final static String APP_SECRET = "ulgOHu6bQu25JkcbjpsV";
public static final String ARTEMIS_PATH = "/artemis";
public static final String GET_CAMERAS = "/api/resource/v1/cameras";
public static final String GET_NODES = "/api/irds/v2/region/nodesByParams";
public static final String GET_GROUP = "/api/cfas/v2/countGroup/groups/page";
public static final String GET_NUM = "/api/cfas/v2/passengerFlow/groups";
public static final String PREVIEW_URL_PATH = "/api/video/v2/cameras/previewURLs";
public static final String FACE_CAPTURE_SEARCH = "/api/frs/v1/event/face_capture/search";
public static final String SAVE_PATH = "D:/app/java_2021_dispatchmonitor";
public static final String RTSP = "rtsp";
public static final String RTMP = "rtmp";
<dependency>
<groupId>com.hikvision.ga</groupId>
<artifactId>artemis-http-client</artifactId>
<version>1.1.3</version>
</dependency>