新增 车位相机controller

This commit is contained in:
Lemon
2023-12-05 15:44:59 +08:00
parent 3a0eae4aeb
commit 3e335e692a
5 changed files with 566 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
package com.jsowell.pile.dto.camera;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
/**
* 相机心跳对象
*
* @author Lemon
* @Date 2023/12/5 10:29:49
*/
@Data
public class CameraHeartBeatDTO {
/**
* 设备名称
*/
@JSONField(name = "dev_name")
private String devName;
/**
* 产品类型
*/
private String product;
/**
* 设备ip地址
* (有线网络地址)
*/
private String ip;
/**
* 设备序列号
*/
private String sn;
/**
* 回复状态
*/
private State state;
@Data
public static class State{
@JSONField(name = "parking_number")
private String[] parkingNumber;
}
}

View File

@@ -0,0 +1,422 @@
package com.jsowell.pile.dto.camera;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
import java.util.List;
/**
* 识别结果推送
*
* @author Lemon
* @Date 2023/12/5 11:08:07
*/
@Data
public class CameraIdentifyResultsDTO {
/**
* 识别id
*/
@JSONField(name = "reco_id")
private Integer recoId;
/**
* 结果序列号
*/
private String serial;
/**
* UTC时间
*/
@JSONField(name = "time_s")
private Integer times;
/**
* 触发类型
*
* 5:虚拟线圈触发;
* 6:稳定触发;
* 7:IO强制触发;
* 8:手动触发;
* 9:SDK抓拍;
* 10:实时结果(车辆实时入场事件)
* 12:单帧识别结果;
* 13:定时触发;
*/
@JSONField(name = "trigger_type")
private Integer triggerType;
/**
* 适配通道
*/
@JSONField(name = "chnlid")
private Integer chnlId;
/**
* 设备信息对象
*/
@JSONField(name = "device_info")
private DeviceInfo deviceInfo;
/**
* 报警信息对象
*/
@JSONField(name = "alarm_info")
private AlarmInfo alarmInfo;
/**
* 背景图信息对象(数组)
*/
@JSONField(name = "bg_img")
private List<BgImg> bgImgList;
/**
* 特征图信息对象(数组)
*/
@JSONField(name = "feture_img")
private List<FetureImg> fetureImgList;
/**
* 路内产品信息
*/
@JSONField(name = "product_h")
private ProductH productH;
/**
* 车位信息对象
*/
private Parking parking;
/**
* 车牌信息对象
*/
private Plate plate;
/**
* 识别信息对象
*/
private Reco reco;
@Data
public static class DeviceInfo{
/**
* 设备名
* UTF8+BASE64编码
*/
@JSONField(name = "dev_name")
private String devName;
/**
* 设备ip地址
*/
private String ip;
/**
* 设备sn编号
*/
private String sn;
}
@Data
public static class AlarmInfo{
/**
* 报警状态
*
* 0:无报警,默认值(取消报警)
* 1:视频遮挡
* 3:占用双车位/压线停车
* 4:非机动车/摩托车
* 5:车头/车尾方向不一致
* 7:无牌车
* 9行人滞留(预留)
* 10-99:保留)
* ==“占用双车位/压线停车”和“车头/车尾方向不一致”,报警属于证据链==
*/
@JSONField(name = "alarm_status")
private Integer alarmStatus;
/**
* 白名单/准入车型状态
* 1:在白名单/准入车型内,且有效
*
* 2:不在白名单/准入车型内,或验证未通过
* ==启用白名单后,优先判断白名单==
*
*/
@JSONField(name = "alarm_whitelist")
private Integer alarmWhiteList;
}
@Data
public static class BgImg{
/**
* 图片数据
* base64格式的数据
*/
private String image;
/**
* 图片原始大小
* 字节数
*/
@JSONField(name = "image_length")
private Integer imageLength;
/**
* 图片发送标志
*/
@JSONField(name = "image_send_flag")
private Integer imageSendFlag;
/**
* 图片的索引id
*/
private String key;
/**
* 图片缓存的路径名
*/
private String path;
/**
* 图片分辨率
*/
private Resolution resolution;
}
@Data
public static class FetureImg{
private Integer type;
private String image;
@JSONField(name = "image_length")
private Integer imageLength;
@JSONField(name = "image_send_flag")
private Integer imageSendFlag;
private String key;
private String path;
private Resolution resolution;
}
@Data
public static class ProductH{
/**
* 车辆信息对象
*/
@JSONField(name = "car_pos")
private CarPos carPos;
@Data
private static class CarPos{
/**
* 位置坐标对象
* 按照背景图的分辨率
*/
private Loc loc;
/**
* 车头车尾信息
* 0:无效;
* 1:车头;
* 2:车尾
*/
private Integer pos;
}
}
@Data
public static class Parking{
private Loc loc;
@Data
private static class Loc{
/**
* 坐标点
*/
@JSONField(name = "point")
private List<Point> pointList;
/**
* 坐标点个数
*/
@JSONField(name = "point_num")
private Integer pointNum;
/**
* 标点坐标系尺寸
*/
@JSONField(name = "reco_zone_size_factor")
private RecoZoneSizeFactor recoZoneSizeFactor;
/**
* 车位状态
*
* 0x01入场
* 0x02在场
* 0x04出场
* 0x08空场
* 0x10车位异常(=="跨车位报警"和"视频遮挡"时==)
* 0x20延迟上报出场(预留)
* 0x40合并出入场(预留)
* 0x80预入场(预留)
* 0x100预出场(预留)
* 0x200入场修正(预留)
*/
@JSONField(name = "parking_state")
private Integer parkingState;
/**
* 车位id
*/
@JSONField(name = "zone_id")
private Integer zoneId;
/**
* 车位名
*/
@JSONField(name = "zone_name")
private String zoneName;
@Data
private static class Point{
// 点x坐标
private Integer x;
// 点y坐标
private Integer y;
}
@Data
private static class RecoZoneSizeFactor{
/**
* 坐标点坐标系尺寸高度
*/
@JSONField(name = "factor_h")
private Integer factorH;
/**
* 坐标点坐标系尺寸宽度
*/
@JSONField(name = "factor_w")
private Integer factorW;
}
}
}
@Data
public static class Plate{
/**
* 车牌颜色
*
* 0:未知;
* 1:蓝色;
* 2:黄色;
* 3:白色;
* 4:黑色;
* 5:绿色;
*/
private Integer color;
// 车牌置信度
private Integer confidence;
private Loc loc;
/**
* 车牌
* UTF8后再BASE64编码
* 如果有车牌:真实车牌号
* 如果有车无牌:无牌车
* 如果无车无牌:__无__
* 非机动车:非机动车
*/
private String plate;
/**
* 车牌类型
*
* 0:未知车牌
* 1:蓝牌小汽车
* 2:黑牌小汽车
* 3:单排黄牌
* 4:双排黄牌(大车尾牌,农用车)
* 5:警车车牌
* 6:武警车牌
* 7:个性化车牌
* 8:单排军车牌
* 9:双排军车牌
* 10:使馆车牌
* 11:香港进出中国大陆车牌
* 12:农用车牌
* 13:教练车牌
* 14:澳门进出中国大陆车牌
* 15:双层武警车牌
* 16:武警总队车牌
* 17:双层武警总队车牌
* 18:民航车牌
* 19:新能源车牌
* 20:新能源车牌大
* 21:应急
* 22:领馆
*/
private Integer type;
}
@Data
public static class Reco{
/**
* 识别组id
*/
@JSONField(name = "group_id")
private Integer groupId;
/**
* 识别标志
*/
@JSONField(name = "reco_flag")
private Integer recoFlag;
/**
* 识别id
*/
@JSONField(name = "reco_id")
private Integer recoId;
/**
* 识别时间(字符串格式时间)
*/
@JSONField(name = "reco_time")
private String recoTime;
}
@Data
private static class Resolution{
/**
* 图片高
*/
private Integer height;
/**
* 图片宽
*/
private Integer width;
}
@Data
private static class Loc{
// 下
private Integer bottom;
// 左
private Integer left;
// 右
private Integer right;
// 上
private Integer top;
}
}