package com.its.op.dto.its.link;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * 링크 소통상황 이력 DTO Class
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("TbLinkTrafHsDto(링크 소통상황 이력)")
public class TbLinkTrafHsDto implements Serializable {
    private static final long serialVersionUID = 1L;

    @ApiModelProperty("링크ID")  // N NUMBER(10)
    @JsonProperty("link_id")
    private Long linkId;

    @ApiModelProperty("가공 일시")  // N VARCHAR(14)
    @JsonProperty("prcn_dt")
    private String prcnDt;

    @ApiModelProperty("교통량")  // Y NUMBER(6)
    @JsonProperty("tfvl")
    private Integer tfvl;

    @ApiModelProperty("속도")  // Y NUMBER(3)
    @JsonProperty("sped")
    private Integer sped;

    @ApiModelProperty("점유 율")  // Y NUMBER(5,2)
    @JsonProperty("ocpy_rate")
    private Double ocpyRate;

    @ApiModelProperty("통행 시간")  // Y NUMBER(6)
    @JsonProperty("trvl_hh")
    private Integer trvlHh;

    @ApiModelProperty("소통 등급 코드")  // Y VARCHAR(7)
    @JsonProperty("cmtr_grad_cd")
    private String cmtrGradCd;

    @ApiModelProperty("결측 여부")  // Y CHAR(1)
    @JsonProperty("miss_yn")
    private String missYn;

    @ApiModelProperty("가공 속도")  // Y NUMBER(3)
    @JsonProperty("prcn_sped")
    private Integer prcnSped;

    @ApiModelProperty("평활화 속도")  // Y NUMBER(3)
    @JsonProperty("smth_sped")
    private Integer smthSped;

    @ApiModelProperty("보정 속도")  // Y NUMBER(3)
    @JsonProperty("adjs_sped")
    private Integer adjsSped;

    @ApiModelProperty("패턴 속도")  // Y NUMBER(3)
    @JsonProperty("ptrn_sped")
    private Integer ptrnSped;

    @ApiModelProperty("가공 소스")  // Y VARCHAR(7)
    @JsonProperty("prcn_sorc")
    private String prcnSorc;

    @ApiModelProperty("보정 소스")  // Y VARCHAR(7)
    @JsonProperty("adjs_sorc")
    private String adjsSorc;

    @ApiModelProperty("데이터 개수")  // Y NUMBER(3)
    @JsonProperty("data_num")
    private Integer dataNum;

    // Code Description Field
    @ApiModelProperty("결측 여부 설명")  // Y CHAR(1)
    @JsonProperty("miss_yn_desc")
    private String missYnDesc;

    @ApiModelProperty("가공 소스 설명")
    @JsonProperty("prcn_sorc_desc")
    private String prcnSorcDesc;

    @ApiModelProperty("보정 소스 설명")
    @JsonProperty("adjs_sorc_desc")
    private String adjsSorcDesc;

    @ApiModelProperty("소통 등급 코드 설명")
    @JsonProperty("cmtr_grad_desc")    // CMTR_GRAD_CD
    private String cmtrGradDesc;

}
