package com.its.op.dto.its.vms;

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

import java.io.Serializable;

/**
 * VMS 제어기 상태 현재 DTO Class
 */
@Data
@Builder
@ApiModel("TbVmsCtlrSttsDto(VMS 제어기 상태 현재)")
public class TbVmsCtlrSttsDto implements Serializable {
    private static final long serialVersionUID = 1L;

    @ApiModelProperty("VMS 제어기 번호")  // N NUMBER(10)
    @JsonProperty("vms_ctlr_nmbr")
    private Long vmsCtlrNmbr;

    @ApiModelProperty("갱신 일시")  // Y VARCHAR2(14)
    @JsonProperty("updt_dt")
    private String updtDt;

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

    @ApiModelProperty("전원 상태 코드('PWS')-사용안함")  // Y VARCHAR2(7)
    @JsonProperty("pwer_stts_cd")
    private String pwerSttsCd;

    @ApiModelProperty("모듈(LED) 상태 코드('MOS')")  // Y VARCHAR2(7)
    @JsonProperty("modl_stts_cd")
    private String modlSttsCd;

    @ApiModelProperty("함체 문 상태 코드('CDS')-앞문/뒷문상태가 모두닫힌경우 닫힘")  // Y VARCHAR2(7)
    @JsonProperty("cbox_door_stts_cd")
    private String cboxDoorSttsCd;

    @ApiModelProperty("팬 상태 코드('PAS')")  // Y VARCHAR2(7)
    @JsonProperty("fan_stts_cd")
    private String fanSttsCd;

    @ApiModelProperty("히터 상태 코드('HTS')")  // Y VARCHAR2(7)
    @JsonProperty("hetr_stts_cd")
    private String hetrSttsCd;

    @ApiModelProperty("함체 온도")  // Y NUMBER(5)
    @JsonProperty("cbox_tmpr")
    private Integer cboxTmpr;

    @ApiModelProperty("휘도값")  // Y NUMBER(3)
    @JsonProperty("brgh_val")
    private Integer brghVal;

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

    @ApiModelProperty("모듈상태-배열")  // Y VARCHAR2(200)
    @JsonProperty("modl_stts")
    private String modlStts;

    @ApiModelProperty("모듈전원상태-배열")  // Y VARCHAR2(200)
    @JsonProperty("pwer_stts")
    private String pwerStts;

    // Code Description Field
    @ApiModelProperty("VMS 제어기 ID")  // Y VARCHAR(30)
    @JsonProperty("vms_ctlr_id")
    private String vmsCtlrId;

    @ApiModelProperty("VMS 명")  // Y VARCHAR(40)
    @JsonProperty("vms_nm")
    private String vmsNm;

    @ApiModelProperty("VMS 너비")  // Y NUMBER(4)
    @JsonProperty("vms_wdth")
    private Integer vmsWdth;

    @ApiModelProperty("VMS 높이")  // Y NUMBER(4)
    @JsonProperty("vms_hght")
    private Integer vmsHght;

    @ApiModelProperty("가로갯수")
    @JsonProperty("rows")
    private Integer rows;

    @ApiModelProperty("세로갯수")
    @JsonProperty("cols")
    private Integer cols;

    @ApiModelProperty("모듈 가로갯수")
    @JsonProperty("modl_rows")
    private Integer modlRows;

    @ApiModelProperty("모듈 세로갯수")
    @JsonProperty("modl_cols")
    private Integer modlCols;

    @ApiModelProperty("전원 가로갯수")
    @JsonProperty("powr_rows")
    private Integer powrRows;

    @ApiModelProperty("전원 세로갯수")
    @JsonProperty("powr_cols")
    private Integer powrCols;

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

    @ApiModelProperty("전원 상태 코드('PWS')-사용안함 설명")
    @JsonProperty("pwer_stts_desc")    // PWER_STTS_CD
    private String pwerSttsDesc;

    @ApiModelProperty("모듈(LED) 상태 코드('MOS') 설명")
    @JsonProperty("modl_stts_desc")    // MODL_STTS_CD
    private String modlSttsDesc;

    @ApiModelProperty("함체 문 상태 코드('CDS')-앞문/뒷문상태가 모두닫힌경우 닫힘 설명")
    @JsonProperty("cbox_door_stts_desc")    // CBOX_DOOR_STTS_CD
    private String cboxDoorSttsDesc;

    @ApiModelProperty("팬 상태 코드('PAS') 설명")
    @JsonProperty("fan_stts_desc")    // FAN_STTS_CD
    private String fanSttsDesc;

    @ApiModelProperty("히터 상태 코드('HTS') 설명")
    @JsonProperty("hetr_stts_desc")    // HETR_STTS_CD
    private String hetrSttsDesc;

    @ApiModelProperty("통신 상태 코드('CMS') 설명")
    @JsonProperty("comm_stts_desc")    // COMM_STTS_CD
    private String commSttsDesc;

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

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

    // ETC
    @ApiModelProperty("VMS 유형 코드")  // Y VARCHAR(7)
    @JsonProperty("vms_type_cd")
    private String vmsTypeCd;

    @ApiModelProperty("VMS 모듈 유형 코드")  // Y VARCHAR(7)
    @JsonProperty("vms_modl_type_cd")
    private String vmsModlTypeCd;

    @ApiModelProperty("운영 모드")  // Y VARCHAR(7)
    @JsonProperty("oper_mode")
    private String operMode;

    @ApiModelProperty("운영 모드 설명")  // Y VARCHAR(7)
    @JsonProperty("oper_mode_desc")
    private String operModeDesc;

    @ApiModelProperty("VMS 통신 오류 기본 값")  // Y NUMBER(3)
    @JsonProperty("vms_cmnc_err_bass_val")
    private Integer vmsCmncErrBassVal;

    @ApiModelProperty("VMS 야간 휘도 단계")  // Y NUMBER(2)
    @JsonProperty("vms_nght_brgh_step")
    private Integer vmsNghtBrghStep;

    @ApiModelProperty("VMS 주간 휘도 단계")  // Y NUMBER(2)
    @JsonProperty("vms_week_brgh_step")
    private Integer vmsWeekBrghStep;

    @ApiModelProperty("VMS 표출면 변경 주기")
    @JsonProperty("vms_phse_chng_cycl")
    private Integer vmsPhseChngCycl;

    @ApiModelProperty("VMS 모듈 오류 율")
    @JsonProperty("vms_modl_err_rate")
    private Integer vmsModlErrRate;

    @ApiModelProperty("VMS 최대 표출면 개수")
    @JsonProperty("vms_max_phse_num")
    private Integer vmsMaxPhseNum;

    @ApiModelProperty("팬 동작 온도")
    @JsonProperty("fan_run_tmpr")
    private Integer fanRunTmpr;

    @ApiModelProperty("히터 동작 온도")
    @JsonProperty("hetr_run_tmpr")
    private Integer hetrRunTmpr;

    @ApiModelProperty("스트리밍 세션 명")
    @JsonProperty("strm_sesn_nm")
    private String strmSesnNm;

    @ApiModelProperty("스트리밍 HTTP 주소")  // Y VARCHAR(200)
    @JsonProperty("strm_http_addr")
    private String strmHttpAddr;

    @ApiModelProperty("스트리밍 RTSP 주소")  // Y VARCHAR(200)
    @JsonProperty("strm_rtsp_addr")
    private String strmRtspAddr;

    @ApiModelProperty("VMS 용도 유형 코드 설명")
    @JsonProperty("vms_usag_type_desc")
    private String vmsUsagTypeDesc;

    @ApiModelProperty("VMS 유형 코드 설명")
    @JsonProperty("vms_type_desc")
    private String vmsTypeDesc;

    @ApiModelProperty("전광판 ON TIME")
    @JsonProperty("panl_on_time")
    private String panlOnTime;

    @ApiModelProperty("전광판 OFF TIME")
    @JsonProperty("panl_off_time")
    private String panlOffTime;

    @ApiModelProperty("메시지표출 제공시각")
    @JsonProperty("provide_time")
    private String provideTime;

    @ApiModelProperty("메시지 제공결과(Y:성공, N:실패)")
    @JsonProperty("provide_result")
    private String provideResult;

    @ApiModelProperty("메시지 서비스상태(Y:성공, N:실패)")
    @JsonProperty("provide_svc")
    private String provideSvc;

    @ApiModelProperty("메시지 제공건수")
    @JsonProperty("provide_cnt")
    private Integer provideCnt;

    @ApiModelProperty("자동 메시지 전체건수")
    @JsonProperty("auto_total")
    private Integer autoTotal;
    @ApiModelProperty("자동 메시지 제공가능건수")
    @JsonProperty("auto_used")
    private Integer autoUsed;

    @ApiModelProperty("고정 메시지 전체건수")
    @JsonProperty("fixed_total")
    private Integer fixedTotal;
    @ApiModelProperty("고정 메시지 제공가능건수")
    @JsonProperty("fixed_used")
    private Integer fixedUsed;

    @ApiModelProperty("기본 메시지 전체건수")
    @JsonProperty("basic_total")
    private Integer basicTotal;
    @ApiModelProperty("기본 메시지 제공가능건수")
    @JsonProperty("basic_used")
    private Integer basicUsed;
}
