package com.qaup.system.domain.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 轨迹查询请求DTO
 *
 * @author qaup
 * @date 2025-01-17
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TrajectoryQueryRequest {

    /** 车辆ID列表 */
    private List<Long> vehicleIds;

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

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

    /** 是否简化数据 */
    @Builder.Default
    private Boolean simplified = false;

    /** 最大轨迹点数量 */
    @Builder.Default
    private Integer maxPoints = 1000;

    /** 是否包含统计信息 */
    @Builder.Default
    private Boolean includeStatistics = true;

    /** 是否包含GeoJSON格式 */
    @Builder.Default
    private Boolean includeGeoJson = false;

    /** 数据质量过滤 */
    private String dataQuality;

    /** 最小速度过滤(km/h) */
    private BigDecimal minSpeed;

    /** 最大速度过滤(km/h) */
    private BigDecimal maxSpeed;

    /** 区域过滤(WKT格式多边形) */
    private String areaWkt;

    /** 是否只返回移动轨迹(过滤停车点) */
    @Builder.Default
    private Boolean movingOnly = false;

    /** 车牌号列表(可选，用于按车牌查询) */
    private List<String> licensePlates;
}