package com.artfess.rescue.external.model;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import java.util.Date;

/**
 * @Author: wsf
 * @Description: 交通管制实体
 * @DateTime: 2025/4/23 10:20
 **/
@Data
@ApiModel(value = "TrafficControl", description = "交通管制实体")
@JsonIgnoreProperties(ignoreUnknown = true)
public class TrafficControl {

    @NotBlank(message = "主键ID不能为空")
    @ApiModelProperty(value = "主键ID", required = true)
    private String id;

    @NotBlank(message = "事件ID不能为空")
    @ApiModelProperty(value = "事件ID", required = true)
    private String eventId;

    @NotBlank(message = "线路名称不能为空")
    @ApiModelProperty(value = "线路名称", required = true)
    private String roadName;

    @ApiModelProperty(value = "地点类型 （枚举：1==收费站，2==隧道，3==互通立交，4==服务区，5==桩号）", required = true)
    private Integer locationType;

    @ApiModelProperty(value = "起点桩号", required = true)
    private String startStakeNumber;

    @ApiModelProperty(value = "止点桩号", required = true)
    private String endStakeNumber;

    @ApiModelProperty(value = "方向", required = true)
    private String direction;

    @ApiModelProperty(value = "地点")
    private String locale;

    @ApiModelProperty(value = "管制措施", required = true)
    private String controlMeasures;

    @ApiModelProperty(value = "管制开始时间", required = true)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date startTime;

    @ApiModelProperty(value = "预计解除时间", required = true)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date expectedEndTime;

    @ApiModelProperty(value = "解除时间", required = true)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date endTime;

    @ApiModelProperty(value = "管制状态 ctrl=管制中，RelieveCtrl=已解除管制", required = true)
    private String controlStatus;

    @ApiModelProperty(value = "备注")
    private String remark;
}
