package com.sckw.transport.model.param;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.sql.Timestamp;

/**
 * @author PC
 */
@Data
public class VehiclesTrajectoryReq implements Serializable {
    
    @Serial
    private static final long serialVersionUID = 1L;
    private Timestamp ts;
    /**
     * 手机号
     */
    @Schema(description = "手机号")
    @NotBlank(message = "手机号不能为空")
    private String mobile;

    /**
     * 车牌号
     */
    @Schema(description = "车牌号")
    private String truckNo;

    /**
     * 经度
     */
    @NotBlank(message = "经度longitude不能为空")
    @Schema(description = "经度")
    private String longitude;

    /**
     * 纬度
     */
    @NotBlank(message = "纬度latitude不能为空")
    @Schema(description = "纬度")
    private String latitude;

    /**
     * 车速(km/h)
     */
    @Schema(description = "车速(km/h)")
    @NotNull(message = "车速speed不能为空")
    private Float speed;

    /**
     * GPS状态
     */
    @Schema(description = "GPS状态")
    private String gpsStatus;
    /**
     * 行驶方向(角度)
     */
    @Schema(description = "行驶方向(角度)")
    private Float direction ;

    /**
     * 燃油液位(%)
     */
    @Schema(description = "燃油液位(%)")
    private Float fuelLevel;

    /**
     * 里程数(km)
     */
    @Schema(description = "里程数(km)")
    private String mileage;

    /**
     * 发动机温度(℃)
     */
    @Schema(description = "发动机温度(℃)")
    private Float engineTemp ;

    /**
     * 电池电压(V)
     */
    @Schema(description = "电池电压(V)")
    private Float batteryVoltage ;

    /**
     * 车辆状态
     */

    @Schema(description = "车辆状态")
    private String status ;

    /**
     * 运单号
     */

    @Schema(description = "运单号")
    private String wOrderNo ;
    /**
     * 运单号
     */

    private String wayOrderNo;
    /**
     * 运单状态
     */
    @Schema(description = "运单状态")

    private String lOrderNo;

    /**
     * 报警代码
     */
    @Schema(description = "报警代码")
    private String alarmCode ;

    /**
     * 车辆信息
     */
    @Schema(description = "车辆信息")
    private VehicleDataVO vehicleDataVO;

    @Data
    public static class VehicleDataVO implements Serializable {
        
        @Serial
        private static final long serialVersionUID = 1L;

        /**
         * 车牌
         */
        @Schema(description = "车牌号")
        private String carNo;

        /**
         * 车队id
         */
        @Schema(description = "车队id")
        private String fleetId;

        /**
         * 车队名称
         */
        @Schema(description = "车队名称")
        private String fleetName;

        /**
         * 设备唯一id
         */
        @Schema(description = "设备唯一id")
        private String deviceId;


        /**
         * 设备名称
         */
        @Schema(description = "设备名称")
        private String deviceName;

        /**
         * 区域ID
         */
        @Schema(description = "区域ID")
        private String groupId;

        /**
         * 区域名称
         */
        @Schema(description = "区域名称")
        private String groupName;

        /**
         * 业务ID
         */
        @Schema(description = "业务ID")
        private String bizId;

        /**
         * 业务名称
         */
        @Schema(description = "业务名称")
        private String bizName;

        /**
         * 项目ID
         */
        @Schema(description = "项目ID")
        private String projectId;

        /**
         * 项目名称
         */
        @Schema(description = "项目名称")
        private String projectName;

        /**
         * 租户id
         */
        @Schema(description = "租户id")
        private String tenantId;
    }
}
