package com.qaup.system.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.qaup.common.annotation.Excel;
import com.qaup.common.core.domain.BaseEntity;

/**
 * 车辆运动信息对象 vehicle_locations
 * 
 * @author qaup
 * @date 2025-01-16
 */
public class SysVehicleLocation extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 记录ID */
    private Long id;

    /** 车辆ID（关联sys_vehicle_info.vehicle_id） */
    @Excel(name = "车辆ID")
    private Long vehicleId;

    /** 车牌号 - 从sys_vehicle_info表关联查询获得 */
    @Excel(name = "车牌号")
    private String licensePlate;

    /** 车辆类型 - 从sys_vehicle_info表关联查询获得 */
    @Excel(name = "车辆类型")
    private String vehicleType;

    /** 品牌 - 从sys_vehicle_info表关联查询获得 */
    @Excel(name = "品牌")
    private String brand;

    /** 所属单位 - 从sys_vehicle_info表关联查询获得 */
    @Excel(name = "所属单位")
    private String owningUnit;

    /** PostGIS位置字段 - 从数据库中获取的原始geometry数据 */
    private String location;

    /** 经度 - 从location字段解析得出 */
    @Excel(name = "经度")
    private BigDecimal longitude;

    /** 纬度 - 从location字段解析得出 */
    @Excel(name = "纬度")
    private BigDecimal latitude;

    /** 海拔高度(米) */
    @Excel(name = "海拔高度")
    private BigDecimal altitude;

    /** 速度(km/h) */
    @Excel(name = "速度")
    private BigDecimal speed;

    /** 朝向角度(度) */
    @Excel(name = "朝向角度")
    private BigDecimal heading;

    /** 数据质量 */
    @Excel(name = "数据质量")
    private String dataQuality;

    /** 位置时间戳 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "位置时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date timestamp;

    /** 查询条件：开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;

    /** 查询条件：结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setVehicleId(Long vehicleId) 
    {
        this.vehicleId = vehicleId;
    }

    public Long getVehicleId() 
    {
        return vehicleId;
    }

    public void setLicensePlate(String licensePlate) 
    {
        this.licensePlate = licensePlate;
    }

    public String getLicensePlate() 
    {
        return licensePlate;
    }

    public void setVehicleType(String vehicleType) 
    {
        this.vehicleType = vehicleType;
    }

    public String getVehicleType() 
    {
        return vehicleType;
    }

    public void setBrand(String brand) 
    {
        this.brand = brand;
    }

    public String getBrand() 
    {
        return brand;
    }

    public void setOwningUnit(String owningUnit) 
    {
        this.owningUnit = owningUnit;
    }

    public String getOwningUnit() 
    {
        return owningUnit;
    }

    public void setLocation(String location) 
    {
        this.location = location;
    }

    public String getLocation() 
    {
        return location;
    }

    public void setLongitude(BigDecimal longitude) 
    {
        this.longitude = longitude;
    }

    public BigDecimal getLongitude() 
    {
        return longitude;
    }

    public void setLatitude(BigDecimal latitude) 
    {
        this.latitude = latitude;
    }

    public BigDecimal getLatitude() 
    {
        return latitude;
    }

    public void setAltitude(BigDecimal altitude) 
    {
        this.altitude = altitude;
    }

    public BigDecimal getAltitude() 
    {
        return altitude;
    }

    public void setSpeed(BigDecimal speed) 
    {
        this.speed = speed;
    }

    public BigDecimal getSpeed() 
    {
        return speed;
    }

    public void setHeading(BigDecimal heading) 
    {
        this.heading = heading;
    }

    public BigDecimal getHeading() 
    {
        return heading;
    }

    public void setDataQuality(String dataQuality) 
    {
        this.dataQuality = dataQuality;
    }

    public String getDataQuality() 
    {
        return dataQuality;
    }

    public void setTimestamp(Date timestamp) 
    {
        this.timestamp = timestamp;
    }

    public Date getTimestamp() 
    {
        return timestamp;
    }

    public void setStartTime(Date startTime) 
    {
        this.startTime = startTime;
    }

    public Date getStartTime() 
    {
        return startTime;
    }

    public void setEndTime(Date endTime) 
    {
        this.endTime = endTime;
    }

    public Date getEndTime() 
    {
        return endTime;
    }

    @Override
    public String toString() {
        return "SysVehicleLocation{" +
                "id=" + id +
                ", vehicleId=" + vehicleId +
                ", licensePlate='" + licensePlate + '\'' +
                ", vehicleType='" + vehicleType + '\'' +
                ", brand='" + brand + '\'' +
                ", owningUnit='" + owningUnit + '\'' +
                ", longitude=" + longitude +
                ", latitude=" + latitude +
                ", altitude=" + altitude +
                ", speed=" + speed +
                ", heading=" + heading +
                ", dataQuality='" + dataQuality + '\'' +
                ", timestamp=" + timestamp +
                '}';
    }
} 