package com.cico.nest.lcdp.boot.core.qxsd.adapter.web.vo.event;

import com.cico.nest.lcdp.boot.core.qxsd.infrastructure.gatewayimpl.database.dataobject.EventDetailDO;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;

import org.springframework.format.annotation.DateTimeFormat;
import com.alibaba.excel.annotation.*;

@Schema(description = "管理后台 - 事件详情 Response VO")
@Data
@ExcelIgnoreUnannotated
public class EventDetailRespVO {

    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "21576")
    @ExcelProperty("主键")
    private String id;

    @Schema(description = "三方系统id", example = "28398")
    @ExcelProperty("三方系统id")
    private String thirdPartyId;

    /**
     * 隧道id-(目前保存的是隧道信息的id)
     */
    @Schema(description = "隧道id", example = "6586")
    @ExcelProperty("隧道id")
    private String tunnelId;
    /**
     * 所属隧道id
     */
    @Schema(description = "所属隧道id", example = "6586")
    @ExcelProperty("所属隧道id")
    private String baseTunnelId;
    /**
     * 所属洞id
     */
    @Schema(description = "所属洞id", example = "6586")
    @ExcelProperty("所属洞id")
    private String holeId;

    @Schema(description = "方向   上行/下行")
    @ExcelProperty("方向   上行/下行")
    private String direction;

    @Schema(description = "方向名称", example = "赵六")
    @ExcelProperty("方向名称")
    private String directionName;

    @Schema(description = "桩号")
    @ExcelProperty("桩号")
    private String milestone;
    @Schema(description = "桩号（显示）")
    @ExcelProperty("桩号")
    private String milestoneStr;

    @Schema(description = "车道号")
    @ExcelProperty("车道号")
    private String eventRoadNo;

    @Schema(description = "事件开始时间")
    @ExcelProperty("事件开始时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date eventStartTime;

    @Schema(description = "事件开始时间（格式化）")
    @ExcelProperty("事件开始时间（格式化）")
    @JsonFormat(timezone = "GMT+8", pattern = "MM-dd HH:mm")
    @DateTimeFormat(pattern = "MM-dd HH:mm")
    private Date eventStartTimeFormat;

    @Schema(description = "0急加速1急减速2实线变道3蛇形驾驶4逆行5拥堵6可疑事件7追尾8停车", example = "2")
    @ExcelProperty("0急加速1急减速2实线变道3蛇形驾驶4逆行5拥堵6可疑事件7追尾8停车")
    private Integer eventType;
    /**
     * 事件详情
     */
    private String eventTypeDesc;
    /**
     * 事件详情附带（单车/多车）
     */
    private String eventTypeDescStr;

    @Schema(description = "事件状态 0待处置1处置中2已处置", example = "1")
    @ExcelProperty("事件状态 0待处置1处置中2已处置")
    private Integer eventStatus;
    /**
     * 事件处置状态 1确认， 2无需处置，3误报，4挂起，5结束
     */
    @Schema(description = "隧道处置状态 1确认， 2无需处置，3误报，4挂起，5结束", example = "1")
    private Integer eventProcessStatus;

    @Schema(description = "事件结束时间")
    @ExcelProperty("事件结束时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date eventEndTime;

    @Schema(description = "留存时间")
    @ExcelProperty("留存时间")
    private String retainedTime;

    @Schema(description = "现场情况")
    @ExcelProperty("现场情况")
    private String sceneSituation;

    @Schema(description = "时间备注", example = "你说的对")
    @ExcelProperty("时间备注")
    private String eventRemark;

    @Schema(description = "车辆号码")
    @ExcelProperty("车辆号码")
    private List<String> eventCarPlate;

    @Schema(description = "事件图片路径")
    @ExcelProperty("事件图片路径")
    private List<String> eventImagesPath;

    @Schema(description = "车辆信息")
    @ExcelProperty("车辆信息")
    private List<EventDetailDO.EventCarInfo> carInfoList;

    @Schema(description = "消除原因")
    @ExcelProperty("消除原因")
    private String dispelCause;
    /**
     * 事件来源：1信路威，2隧道管控
     */
    private Integer eventSource;
    /**
     * 是否是重复事件：0不是，1是
     */
    private Integer isRepeat;
    /**
     * 隧道管控-事件告警id
     */
    private String alarmId;

    @Schema(description = "创建人")
    @ExcelProperty("创建人")
    private String createBy;

    @Schema(description = "更新人")
    @ExcelProperty("更新人")
    private String updateBy;

    /**
     * 创建时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private java.util.Date createTime;

    /**
     * 更新时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private java.util.Date updateTime;

    /**
     * 单车多车
     */
    @Schema(description = "单车，多车")
    private String singleMultiCar;

    /**
     * 事件情况
     */
    @Schema(description = "事件情况")
    private String eventSituation;

    @Schema(description = "方向位置")
    private String directionalPosition;

    @Schema(description = "现场情况")
    private String situationSpot;
    /**
     * 处置方式(1:上报事件;2:消除事件;)
     */
    private Integer processingType;
    /**
     * 处置操作人姓名
     */
    private String processingOperationsName;
    /**
     * true 非车辆事件 false 车辆相关事件
     */
    private boolean nonVehicleFlag;
    /**
     * 处置时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date processingTime;
}
