| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- package com.genersoft.iot.vmp.gb28181.bean;
- import com.genersoft.iot.vmp.gb28181.utils.MessageElement;
- import com.genersoft.iot.vmp.gb28181.utils.XmlUtil;
- import com.genersoft.iot.vmp.utils.CivilCodeUtil;
- import io.swagger.v3.oas.annotations.media.Schema;
- import lombok.Data;
- import lombok.EqualsAndHashCode;
- import lombok.extern.slf4j.Slf4j;
- import org.dom4j.Element;
- import org.springframework.util.ObjectUtils;
- import java.lang.reflect.InvocationTargetException;
- @Data
- @Slf4j
- @Schema(description = "通道信息")
- @EqualsAndHashCode(callSuper = true)
- public class DeviceChannel extends CommonGBChannel {
- @Schema(description = "数据库自增ID")
- private int id;
- @Schema(description = "设备的数据库自增ID")
- private Integer deviceDbId;
- @MessageElement("DeviceID")
- @Schema(description = "编码")
- private String deviceId;
- @MessageElement("Name")
- @Schema(description = "名称")
- private String name;
- @MessageElement("Manufacturer")
- @Schema(description = "设备厂商")
- private String manufacturer;
- @MessageElement("Model")
- @Schema(description = "设备型号")
- private String model;
- // 2016
- @MessageElement("Owner")
- @Schema(description = "设备归属")
- private String owner;
- @MessageElement("CivilCode")
- @Schema(description = "行政区域")
- private String civilCode;
- @MessageElement("Block")
- @Schema(description = "警区")
- private String block;
- @MessageElement("Address")
- @Schema(description = "安装地址")
- private String address;
- @MessageElement("Parental")
- @Schema(description = "是否有子设备(必选)1有,0没有")
- private Integer parental;
- @MessageElement("ParentID")
- @Schema(description = "父节点ID")
- private String parentId;
- // 2016
- @MessageElement("SafetyWay")
- @Schema(description = "信令安全模式")
- private Integer safetyWay;
- @MessageElement("RegisterWay")
- @Schema(description = "注册方式")
- private Integer registerWay;
- // 2016
- @MessageElement("CertNum")
- @Schema(description = "证书序列号")
- private String certNum;
- // 2016
- @MessageElement("Certifiable")
- @Schema(description = "证书有效标识, 缺省为0;证书有效标识:0:无效 1:有效")
- private Integer certifiable;
- // 2016
- @MessageElement("ErrCode")
- @Schema(description = "无效原因码(有证书且证书无效的设备必选)")
- private Integer errCode;
- // 2016
- @MessageElement("EndTime")
- @Schema(description = "证书终止有效期(有证书且证书无效的设备必选)")
- private String endTime;
- @MessageElement("Secrecy")
- @Schema(description = "保密属性(必选)缺省为0;0-不涉密,1-涉密")
- private Integer secrecy;
- @MessageElement("IPAddress")
- @Schema(description = "设备/系统IPv4/IPv6地址")
- private String ipAddress;
- @MessageElement("Port")
- @Schema(description = "设备/系统端口")
- private Integer port;
- @MessageElement("Password")
- @Schema(description = "设备口令")
- private String password;
- @MessageElement("Status")
- @Schema(description = "设备状态")
- private String status;
- @MessageElement("Longitude")
- @Schema(description = "经度 WGS-84坐标系")
- private Double longitude;
- @MessageElement("Latitude")
- @Schema(description = ",纬度 WGS-84坐标系")
- private Double latitude;
- @MessageElement("Info.PTZType")
- @Schema(description = "摄像机结构类型,标识摄像机类型: 1-球机; 2-半球; 3-固定枪机; 4-遥控枪机;5-遥控半球;6-多目设备的全景/拼接通道;7-多目设备的分割通道")
- private Integer ptzType;
- @MessageElement("Info.PositionType")
- @Schema(description = "摄像机位置类型扩展。1-省际检查站、2-党政机关、3-车站码头、4-中心广场、5-体育场馆、" +
- "6-商业中心、7-宗教场所、8-校园周边、9-治安复杂区域、10-交通干线")
- private Integer positionType;
- @MessageElement("Info.RoomType")
- @Schema(description = "摄像机安装位置室外、室内属性。1-室外、2-室内。")
- private Integer roomType;
- @MessageElement("Info.UseType")
- @Schema(description = "用途属性, 1-治安、2-交通、3-重点。")
- private Integer useType;
- @MessageElement("Info.SupplyLightType")
- @Schema(description = "摄像机补光属性。1-无补光;2-红外补光;3-白光补光;4-激光补光;9-其他")
- private Integer supplyLightType;
- @MessageElement("Info.DirectionType")
- @Schema(description = "摄像机监视方位(光轴方向)属性。1-东(西向东)、2-西(东向西)、3-南(北向南)、4-北(南向北)、" +
- "5-东南(西北到东南)、6-东北(西南到东北)、7-西南(东北到西南)、8-西北(东南到西北)")
- private Integer directionType;
- @MessageElement("Info.Resolution")
- @Schema(description = "摄像机支持的分辨率,可多值")
- private String resolution;
- @MessageElement("Info.BusinessGroupID")
- @Schema(description = "虚拟组织所属的业务分组ID")
- private String businessGroupId;
- @MessageElement("Info.DownloadSpeed")
- @Schema(description = "下载倍速(可选),可多值")
- private String downloadSpeed;
- @MessageElement("Info.SVCSpaceSupportMode")
- @Schema(description = "空域编码能力,取值0-不支持;1-1级增强(1个增强层);2-2级增强(2个增强层);3-3级增强(3个增强层)")
- private Integer svcSpaceSupportMod;
- @MessageElement("Info.SVCTimeSupportMode")
- @Schema(description = "时域编码能力,取值0-不支持;1-1级增强;2-2级增强;3-3级增强(可选)")
- private Integer svcTimeSupportMode;
- @Schema(description = "云台类型描述字符串")
- private String ptzTypeText;
- @Schema(description = "子设备数")
- private int subCount;
- @Schema(description = "流唯一编号,存在表示正在直播")
- private String streamId;
- @Schema(description = "是否含有音频")
- private boolean hasAudio;
- @Schema(description = "GPS的更新时间")
- private String gpsTime;
- @Schema(description = "码流标识,优先级高于设备中码流标识," +
- "用于选择码流时组成码流标识。默认为null,不设置。可选值: stream/streamnumber/streamprofile/streamMode")
- private String streamIdentification;
- public void setPtzType(int ptzType) {
- this.ptzType = ptzType;
- switch (ptzType) {
- case 0:
- this.ptzTypeText = "未知";
- break;
- case 1:
- this.ptzTypeText = "球机";
- break;
- case 2:
- this.ptzTypeText = "半球";
- break;
- case 3:
- this.ptzTypeText = "固定枪机";
- break;
- case 4:
- this.ptzTypeText = "遥控枪机";
- break;
- case 5:
- this.ptzTypeText = "遥控半球";
- break;
- case 6:
- this.ptzTypeText = "多目设备的全景/拼接通道";
- break;
- case 7:
- this.ptzTypeText = "多目设备的分割通道";
- break;
- }
- }
- public static DeviceChannel decode(Element element) throws InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
- DeviceChannel deviceChannel = XmlUtil.elementDecode(element, DeviceChannel.class);
- if(deviceChannel.getCivilCode() != null ) {
- if (ObjectUtils.isEmpty(deviceChannel.getCivilCode())
- || deviceChannel.getCivilCode().length() > 8 ){
- deviceChannel.setCivilCode(null);
- }else {
- if (CivilCodeUtil.INSTANCE.getCivilCodePo(deviceChannel.getCivilCode()) == null) {
- deviceChannel.setCivilCode(null);
- }
- }
- }
- return XmlUtil.elementDecode(element, DeviceChannel.class);
- }
- public static DeviceChannel decodeWithOnlyDeviceId(Element element) {
- Element deviceElement = element.element("DeviceID");
- DeviceChannel deviceChannel = new DeviceChannel();
- deviceChannel.setDeviceId(deviceElement.getText());
- return deviceChannel;
- }
- }
|