package com.cico.nest.lcdp.boot.core.qxsd.infrastructure.gatewayimpl.ws.xlw.dto;

import com.cico.nest.lcdp.boot.core.qxsd.domain.vehicle.CarPlateColor;
import com.cico.nest.lcdp.boot.core.qxsd.domain.vehicle.VehicleType;
import lombok.Data;

import java.util.List;

/**
 * 实时车辆信息 DTO
 * @author zws
 * @date 2024/8/5
 */

@Data
public class XlwRealTimeVehicleDTO {

    //实时车辆信息
    private List<CarInfo> carInfo;
    //大客车数量
    private Integer commercialCount;
    //危化品车辆数量
    private Integer dangerousCount;
    //数据帧最后时间，格式：时间戳
    private Long endImageTime;
    //数据帧发送时间，格式：时间戳
    private Long frameSendTIme;
    //大型车数量
    private Integer largeCount;
    //大型车时速
    private Float largeSpeed;
    //通行等级
    private Integer passLevel;
    //小型车数量
    private Integer smallCount;
    //小型车速度
    private Float smallSpeed;

    @Data
    public static class CarInfo {
        //车辆唯一ID
        private String carId;
        //车辆贴图高度
        private Integer carImageHeight;
        //车辆贴图宽度
        private Integer carImageWidth;
        //车辆贴图地址
        private String carImageUrl;
        //车头照片
        private String headImage;
        //车牌照片
        private String plateImage;
        //车辆贴图评分
        private Integer carImageScore;
        //车辆真实长度，单位：厘米
        private Integer carLength;
        //车型、参照交通部的收费车型（1~4 客1~客4 、11~16 货1~货6、专项车21~26 专项1~专项6）
        private Integer carModels;
        //车牌号码
        private String carPlate;
        /**
         * 车辆颜色
         * {@link CarPlateColor#getType()}
         */
        private Integer carPlateColor;
        //采集时间，格式：yyyy-MM-dd hh:mm-ss
        private String collectionTime;
        //单目识别图片遮挡标识，枚举：正常、遮挡
        private String cover;
        //推演轨迹步长百分比
        private Float deduceFraction;
        //设备SN
        private String deviceSn;
        //是否闪现，枚举：true闪现、false不闪现
        private Boolean flash;
        //车辆航向角，车头朝北为0度，顺时针旋转
        private Float headingAngle;
        //是否危化品车辆，枚举：0否、1是
        private Integer isDangerous;
        //纬度
        private Float latitude;
        //经度
        private Float longitude;
        //车辆丢失，枚举：true丢失、false未丢失
        private Boolean loseFlag;
        //车辆距入口距离，单位：米
        private Float originDistance;
        //车辆点百分比
        private Float pointFraction;
        //车辆所在车道号
        private Integer roadNo;
        //车辆时速，单位：km/h
        private Float speed;
        /**
         * 车辆类型
         * {@link VehicleType#getType()}
         */
        private Integer vehicleType;
        //车辆车脸颜色，包含黑、蓝、棕、灰、绿、紫、红、银、白、黄，10种颜色。默认：未知
        private String carFaceColor;
        //车辆品牌
        private String carBrand;
        //车辆款式
        private String carBrandKind;
        //车辆分类 枚举：轿车 UV/MPV 皮卡 微卡 面包车 大中型客车 重中型货车 未知
        private String carType;
        //车辆入隧时间,格式：时间戳
        private Long inTunnelTime;
    }
}
