Commit e86d708b by chenjunxiong

build(hikvision-sdk):

视频资源获取 - 查询编码设备
parent 79421e3e
......@@ -17,9 +17,9 @@ import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.pm.hikvision.sdk.parser.HikvisionJsonParser;
import org.jeecg.pm.hikvision.sdk.parser.HikvisionParser;
import org.jeecg.pm.hikvision.sdk.request.HikvisionAbstractRequest;
import org.jeecg.pm.hikvision.sdk.request.HikvisionGetDefaultUserUuidRequest;
import org.jeecg.pm.hikvision.sdk.request.base.user.HikvisionGetDefaultUserUuidRequest;
import org.jeecg.pm.hikvision.sdk.response.HikvisionAbstractResponse;
import org.jeecg.pm.hikvision.sdk.response.HikvisionGetDefaultUserUuidResponse;
import org.jeecg.pm.hikvision.sdk.response.base.user.HikvisionGetDefaultUserUuidResponse;
import org.jeecg.pm.hikvision.sdk.result.HikvisionBaseResult;
import java.net.URI;
......
package org.jeecg.pm.hikvision.sdk.entity.body;
package org.jeecg.pm.hikvision.sdk.entity.body.base.user;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.pm.hikvision.sdk.entity.body.HikvisionBodyModel;
/**
* @author: JJww
......
package org.jeecg.pm.hikvision.sdk.entity.body.vss.res;
import java.io.Serializable;
import java.util.Arrays;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author 陈俊雄
* @since 2022/3/23
*/
public abstract class Constant implements Serializable {
public static final List<String> ENCODER_MODEL_LIST = Arrays.asList(
// 海康设备
"134742528",
// 大华设备
"135266560",
// ONVIF 设备
"143659264",
// 海康 eHome 设备
"134747648",
// 萤石设备
"134748928",
// 人脸比对服务器
"123637817",
// 客流分析服务器
"123648928",
// 天地伟业
"137364736",
// 索尼
"138938368",
// 安讯士
"138413824",
// 英飞拓
"140512000",
// 亚安
"141025100",
// 三星
"146281984",
// 景阳
"141025120",
// VIVOTEK
"141025130",
// 派尔高
"141025140",
// 中兴力维
"141025150",
// 国标设备
"200867584",
// 卡口设备
"134749952",
// 检索服务器
"134750208",
// 报警柱
"134750464",
// eHome 报警柱
"134750720",
// 脸谱
"134750976");
public static final List<String> SMART_TYPE_LIST = Arrays.asList(
// 周界防范
"1",
// 人脸抓拍
"2",
// 热度图
"3",
// 客流分析
"4",
// 人脸比对服务
"5",
// 卡口
"6",
// GPS 设备
"7",
// 可视域设备
"8",
// 人脸比对设备
"9",
// 密度相机
"a");
public static final List<Integer> SMART_SUPPORT_LIST = Arrays.asList(
// 不支持智能
0,
// 普通智能
// SMART2.0:区域入侵、穿越境界面、音频异常侦测、人脸侦测、虚焦侦测、场景变更侦测
1,
// 专业智能
// 周界防范、人脸抓拍、客流分析、热度图、GPS、可视域、人脸比对
2);
public static final List<Integer> RES_AUTHS_LIST = Arrays.asList(
// 设备对讲
1,
// 接收事件
2
);
}
package org.jeecg.pm.hikvision.sdk.entity.body.vss.res;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.pm.hikvision.sdk.entity.body.HikvisionBodyModel;
import org.jeecg.pm.hikvision.sdk.json.serialize.ListJoinWithCommaSerialize;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author 陈俊雄
* @since 2022/3/23
*/
@Slf4j
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class HikvisionGetEncoders extends HikvisionBodyModel {
public HikvisionGetEncoders() {
}
public HikvisionGetEncoders(Integer pageNo, Integer pageSize) {
this.pageNo = pageNo;
this.pageSize = pageSize;
}
/**
* 当前页码
*/
private Integer pageNo;
/**
* 每页数据最大记录数
*/
private Integer pageSize;
/**
* 组织中心UUID集
*/
@JsonSerialize(using = ListJoinWithCommaSerialize.class)
private List<String> unitUuids;
/**
* 编码设备UUID集
*/
@JsonSerialize(using = ListJoinWithCommaSerialize.class)
private List<String> encoderUuids;
/**
* 编码设备名称
*/
private String encoderName;
/**
* 编码设备类型码集
*/
@JsonSerialize(using = ListJoinWithCommaSerialize.class)
private List<String> encoderModel;
/**
* 专业智能类型码
*/
private String smartType;
public HikvisionGetEncoders setEncoderModel(List<String> encoderModel) {
if (!Constant.ENCODER_MODEL_LIST.containsAll(encoderModel)) {
throw new JeecgBootException("不支持的设备类型,支持类型列表:" + Constant.ENCODER_MODEL_LIST);
}
this.encoderModel = encoderModel;
return this;
}
public HikvisionGetEncoders setSmartType(String smartType) {
if (!Constant.SMART_TYPE_LIST.contains(smartType)) {
throw new JeecgBootException("不支持的专业智能类型码,支持类码列表:" + Constant.SMART_TYPE_LIST);
}
this.smartType = smartType;
return this;
}
}
package org.jeecg.pm.hikvision.sdk.json.deserialize;
import com.chanjx.utils.StringUtils;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.TreeNode;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.node.TextNode;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
/**
* <p>
* Jackson自定义序列化:将迭代器序列化成以逗号分隔的字符串
* </p>
*
* @author 陈俊雄
* @since 2022/3/23
*/
public class ListJoinWithCommaDeserialize extends JsonDeserializer<Iterable<Object>> {
@Override
public Iterable<Object> deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
final TreeNode treeNode = p.getCodec().readTree(p);
return new ArrayList<>(Arrays.asList(StringUtils.split(((TextNode) treeNode).asText(), ",")));
}
}
package org.jeecg.pm.hikvision.sdk.json.serialize;
import com.chanjx.utils.StringUtils;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
/**
* <p>
* Jackson自定义序列化:将迭代器序列化成以逗号分隔的字符串
* </p>
*
* @author 陈俊雄
* @since 2022/3/23
*/
public class ListJoinWithCommaSerialize extends JsonSerializer<Iterable<Object>> {
@Override
public void serialize(Iterable<Object> value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
gen.writeObject(StringUtils.joinWithComma(value));
}
}
package org.jeecg.pm.hikvision.sdk.request;
package org.jeecg.pm.hikvision.sdk.request.base.user;
import com.chanjx.utils.HttpMethod;
import lombok.Data;
......@@ -6,9 +6,10 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.http.entity.ContentType;
import org.jeecg.pm.hikvision.sdk.entity.body.HikvisionBodyModel;
import org.jeecg.pm.hikvision.sdk.entity.body.HikvisionGetDefaultUserUuidQuery;
import org.jeecg.pm.hikvision.sdk.response.HikvisionGetDefaultUserUuidResponse;
import org.jeecg.pm.hikvision.sdk.result.HikvisionGetDefaultUserUuidBaseResult;
import org.jeecg.pm.hikvision.sdk.entity.body.base.user.HikvisionGetDefaultUserUuidQuery;
import org.jeecg.pm.hikvision.sdk.request.HikvisionAbstractRequest;
import org.jeecg.pm.hikvision.sdk.response.base.user.HikvisionGetDefaultUserUuidResponse;
import org.jeecg.pm.hikvision.sdk.result.base.user.HikvisionGetDefaultUserUuidBaseResult;
/**
* @author: JJww
......
package org.jeecg.pm.hikvision.sdk.request.vss.res;
import com.chanjx.utils.HttpMethod;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.http.entity.ContentType;
import org.jeecg.pm.hikvision.sdk.entity.body.HikvisionBodyModel;
import org.jeecg.pm.hikvision.sdk.entity.body.vss.res.HikvisionGetEncoders;
import org.jeecg.pm.hikvision.sdk.request.HikvisionAbstractRequest;
import org.jeecg.pm.hikvision.sdk.response.vss.res.HikvisionGetEncodersResponse;
import org.jeecg.pm.hikvision.sdk.result.vss.res.HikvisionGetEncodersResult;
/**
* @author: JJww
* @Date:2022/3/21
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class HikvisionGetEncodersRequest extends HikvisionAbstractRequest<HikvisionGetEncodersResponse, HikvisionGetEncodersResult> {
private HikvisionGetEncoders hikvisionGetEncoders;
public HikvisionGetEncodersRequest(HikvisionGetEncoders hikvisionGetEncoders) {
this.hikvisionGetEncoders = hikvisionGetEncoders;
}
@Override
public ContentType getContentType() {
return ContentType.APPLICATION_JSON;
}
@Override
public Class<HikvisionGetEncodersResponse> getResponseClazz() {
return HikvisionGetEncodersResponse.class;
}
@Override
public Class<HikvisionGetEncodersResult> getResultClazz() {
return HikvisionGetEncodersResult.class;
}
@Override
public HttpMethod getHttpMethod() {
return HttpMethod.POST;
}
@Override
public String getReqPath() {
return "/openapi/service/vss/res/getEncoders";
}
@Override
public HikvisionBodyModel getModel() {
return hikvisionGetEncoders;
}
@Override
public void setModel(HikvisionBodyModel model) {
this.hikvisionGetEncoders = (HikvisionGetEncoders) model;
}
}
package org.jeecg.pm.hikvision.sdk.response;
package org.jeecg.pm.hikvision.sdk.response.base.user;
import org.jeecg.pm.hikvision.sdk.result.HikvisionGetDefaultUserUuidBaseResult;
import org.jeecg.pm.hikvision.sdk.response.HikvisionAbstractResponse;
import org.jeecg.pm.hikvision.sdk.result.base.user.HikvisionGetDefaultUserUuidBaseResult;
/**
* @author: JJww
......
package org.jeecg.pm.hikvision.sdk.response.vss.res;
import org.jeecg.pm.hikvision.sdk.response.HikvisionAbstractResponse;
import org.jeecg.pm.hikvision.sdk.result.vss.res.HikvisionGetEncodersResult;
/**
* <p>
*
* </p>
*
* @author 陈俊雄
* @since 2022/3/23
*/
public class HikvisionGetEncodersResponse extends HikvisionAbstractResponse<HikvisionGetEncodersResult> {
public HikvisionGetEncodersResponse() {
super(HikvisionGetEncodersResult.class, false);
}
}
package org.jeecg.pm.hikvision.sdk.result;
package org.jeecg.pm.hikvision.sdk.result.base.user;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.pm.hikvision.sdk.result.HikvisionBaseResult;
/**
* @author: JJww
......
package org.jeecg.pm.hikvision.sdk.result.vss.res;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.pm.hikvision.sdk.json.deserialize.ListJoinWithCommaDeserialize;
import org.jeecg.pm.hikvision.sdk.result.HikvisionBaseResult;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author 陈俊雄
* @since 2022/3/23
*/
@Slf4j
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class HikvisionGetEncodersResult extends HikvisionBaseResult {
/**
* 返回数据
*/
private ResultData data;
@Slf4j
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public static class ResultData implements Serializable {
/**
* 查询数据记录总数
*/
private Integer total;
/**
* 当前页码
*/
private Integer pageNo;
/**
* 每页记录总数
*/
private Integer pageSize;
/**
* 对象列表
*/
private List<Encoder> list;
}
@Slf4j
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public static class Encoder implements Serializable {
/**
* 编码设备 UUID
*/
private String encoderUuid;
/**
* 编码设备名称
*/
private String encoderName;
/**
* 编码设备类型码
* @see org.jeecg.pm.hikvision.sdk.entity.body.vss.res.Constant#ENCODER_MODEL_LIST
*/
private Integer encoderModel;
/**
* 设备用户名
*/
private String encoderUserName;
/**
* 设备端口
*/
private Integer encoderPort;
/**
* 设备 IP
*/
private String encoderIp;
/**
* 专业智能类型码
* @see org.jeecg.pm.hikvision.sdk.entity.body.vss.res.Constant#SMART_TYPE_LIST
*/
private String smartType;
/**
* 是否支持智能
* @see org.jeecg.pm.hikvision.sdk.entity.body.vss.res.Constant#SMART_SUPPORT_LIST
*/
private Integer smartSupport;
/**
* 海康设备类型码
*/
private Integer devType;
/**
* 排序字段
*/
private Integer orderNum;
/**
* 中心 UUID
*/
private String unitUuid;
/**
* 更新时间
*/
private Date updateTime;
/**
* 报警输入数
*/
private Integer alarmIn;
/**
* 报警输出数
*/
private Integer alarmOut;
/**
* 可视对讲通道数
*/
private Integer visIntercomChanNum;
/**
* 资源权限集
*/
@JsonDeserialize(using = ListJoinWithCommaDeserialize.class)
private List<String> resAuths;
}
}
/*
报警输入数 Integer 是
报警输出数 Integer 是
可视对讲通道数 Integer 是
resAuths 资源权限集 String 是 编码设备资源权限说明
*/
import org.jeecg.pm.hikvision.sdk.client.HikvisionBaseClient;
import org.jeecg.pm.hikvision.sdk.client.HikvisionClient;
import org.jeecg.pm.hikvision.sdk.entity.body.vss.res.HikvisionGetEncoders;
import org.jeecg.pm.hikvision.sdk.request.base.user.HikvisionGetDefaultUserUuidRequest;
import org.jeecg.pm.hikvision.sdk.request.vss.res.HikvisionGetEncodersRequest;
import org.jeecg.pm.hikvision.sdk.response.base.user.HikvisionGetDefaultUserUuidResponse;
import org.jeecg.pm.hikvision.sdk.response.vss.res.HikvisionGetEncodersResponse;
import org.junit.jupiter.api.Test;
/**
......@@ -11,8 +17,22 @@ import org.junit.jupiter.api.Test;
*/
public class HikvisionSdkTest {
private static final String APP_KEY = "f9c1514b";
private static final String SECRET = "13bd31dbd3fe449e9e13f7ce6693677a";
private static final HikvisionClient CLIENT = new HikvisionBaseClient(APP_KEY, SECRET);
@Test
void getDefaultUserUuidTest() {
final HikvisionBaseClient client = new HikvisionBaseClient(null, null);
final HikvisionGetDefaultUserUuidResponse response = CLIENT.execute(new HikvisionGetDefaultUserUuidRequest());
System.out.println(response);
}
@Test
void getEncoders() {
final HikvisionGetEncoders encoders = new HikvisionGetEncoders(1, 10);
final HikvisionGetEncodersResponse response = CLIENT.execute(new HikvisionGetEncodersRequest(encoders));
System.out.println(response);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment