package com.its.op.dto.its.scrs;

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

import javax.persistence.Column;
import java.io.Serializable;

/**
 * 신호 교차로 상태 DTO Class
 */
@Data
@Builder
@ApiModel("TbScSgnlIxrSttsDto(신호 교차로 상태)")
public class TbScSgnlIxrSttsDto implements Serializable {
    private static final long serialVersionUID = 1L;

    @ApiModelProperty("신호 교차로 번호")  // N NUMBER(4)
    @JsonProperty("sgnl_ixr_nmbr")
    private Integer sgnlIxrNmbr;

    @ApiModelProperty("LC 카운트")  // Y NUMBER(3)
    @JsonProperty("lc_cnt")
    private Integer lcCnt;

    @ApiModelProperty("제어모드(0: TRC, 1: TOD, 2: MAN)")  // Y NUMBER(1)
    @JsonProperty("cntl_mode")
    private Integer cntlMode;

    @ApiModelProperty("제어상태(0: 온라인, 1: 오프라인, 2: 트랜스, 3: 통신장애)")  // Y NUMBER(1)
    @JsonProperty("cntl_stts")
    private Integer cntlStts;

    @ApiModelProperty("특수제어(0: 없음, 1: 점멸, 2: 소등, 3: 수동, 4: 감응)")  // Y NUMBER(2)
    @JsonProperty("spcl_cntl")
    private Integer spclCntl;

    @ApiModelProperty("주기")  // Y NUMBER(3)
    @JsonProperty("cycl")
    private Integer cycl;

    @ApiModelProperty("옵셋")  // Y NUMBER(3)
    @JsonProperty("ofst")
    private Integer ofst;

    @ApiModelProperty("A링 1현시")  // Y NUMBER(3)
    @JsonProperty("aring_1phas")
    private Integer aring1phas;

    @ApiModelProperty("A링 2현시")  // Y NUMBER(3)
    @JsonProperty("aring_2phas")
    private Integer aring2phas;

    @ApiModelProperty("A링 3현시")  // Y NUMBER(3)
    @JsonProperty("aring_3phas")
    private Integer aring3phas;

    @ApiModelProperty("A링 4현시")  // Y NUMBER(3)
    @JsonProperty("aring_4phas")
    private Integer aring4phas;

    @ApiModelProperty("A링 5현시")  // Y NUMBER(3)
    @JsonProperty("aring_5phas")
    private Integer aring5phas;

    @ApiModelProperty("A링 6현시")  // Y NUMBER(3)
    @JsonProperty("aring_6phas")
    private Integer aring6phas;

    @ApiModelProperty("A링 7현시")  // Y NUMBER(3)
    @JsonProperty("aring_7phas")
    private Integer aring7phas;

    @ApiModelProperty("A링 8현시")  // Y NUMBER(3)
    @JsonProperty("aring_8phas")
    private Integer aring8phas;

    @ApiModelProperty("B링 1현시")  // Y NUMBER(3)
    @JsonProperty("bring_1phas")
    private Integer bring1phas;

    @ApiModelProperty("B링 2현시")  // Y NUMBER(3)
    @JsonProperty("bring_2phas")
    private Integer bring2phas;

    @ApiModelProperty("B링 3현시")  // Y NUMBER(3)
    @JsonProperty("bring_3phas")
    private Integer bring3phas;

    @ApiModelProperty("B링 4현시")  // Y NUMBER(3)
    @JsonProperty("bring_4phas")
    private Integer bring4phas;

    @ApiModelProperty("B링 5현시")  // Y NUMBER(3)
    @JsonProperty("bring_5phas")
    private Integer bring5phas;

    @ApiModelProperty("B링 6현시")  // Y NUMBER(3)
    @JsonProperty("bring_6phas")
    private Integer bring6phas;

    @ApiModelProperty("B링 7현시")  // Y NUMBER(3)
    @JsonProperty("bring_7phas")
    private Integer bring7phas;

    @ApiModelProperty("B링 8현시")  // Y NUMBER(3)
    @JsonProperty("bring_8phas")
    private Integer bring8phas;

    @ApiModelProperty("현재 A링 현시")  // Y NUMBER(1)
    @JsonProperty("prst_aring_phas")
    private Integer prstAringPhas;

    @ApiModelProperty("현재 B링 현시")  // Y NUMBER(1)
    @JsonProperty("prst_bring_phas")
    private Integer prstBringPhas;

    @ApiModelProperty("함체 상태")  // Y NUMBER(1)
    @JsonProperty("cbox_stts")
    private Integer cboxStts;

    // Code Description Field
    @ApiModelProperty("교차로 명")  // Y VARCHAR2(50)
    @Column(name = "IXR_NM", length = 50)
    private String ixrNm;

    @ApiModelProperty("수집 일시")  // N VARCHAR2(14)
    @JsonProperty("updt_dt")
    private String updtDt;

    @ApiModelProperty("통신 상태 코드('CMS')")  // Y VARCHAR2(7)
    @JsonProperty("cmnc_stts_cd")
    private String cmncSttsCd;

    @ApiModelProperty("수집건수")
    @JsonProperty("coll_cnt")
    private Integer collCnt;

    @ApiModelProperty("상태정보 결측 여부")
    @JsonProperty("miss_stts_yn")
    private String missSttsYn;

    // Code Description Field
    @ApiModelProperty("통신 상태 코드('CMS') 설명")
    @JsonProperty("cmnc_stts_desc")    // CMNC_STTS_CD
    private String cmncSttsDesc;

}
