package go.kr.project.api.model.response;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;

import java.util.List;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
@Schema(description = "자동차등록원부(갑) 응답 모델")
@Getter
@Setter
public class LedgerResponse {

    /** 연계결과코드 */
    @JsonProperty("CNTC_RESULT_CODE")
    private String cntcResultCode;

    /** 연계결과상세 */
    @JsonProperty("CNTC_RESULT_DTLS")
    private String cntcResultDtls;

    /** 원부그룹번호 */
    @JsonProperty("LEDGER_GROUP_NO")
    private String ledgerGroupNo;

    /** 원부개별화번호 */
    @JsonProperty("LEDGER_INDVDLZ_NO")
    private String ledgerIndvdlzNo;

    /** 차량관리번호 */
    @JsonProperty("VHMNO")
    private String vhmno;

    /** 차량번호 */
    @JsonProperty("VHRNO")
    private String vhrno;

    /** 차대번호 */
    @JsonProperty("VIN")
    private String vin;

    /** 차종분류코드 */
    @JsonProperty("VHCTY_ASORT_CODE")
    private String vhctyAsortCode;

    /** 차종분류명 */
    @JsonProperty("VHCTY_ASORT_NM")
    private String vhctyAsortNm;

    /** 차명 */
    @JsonProperty("CNM")
    private String cnm;

    /** 색상코드 */
    @JsonProperty("COLOR_CODE")
    private String colorCode;

    /** 색상명 */
    @JsonProperty("COLOR_NM")
    private String colorNm;

    /** 번호판규격코드 */
    @JsonProperty("NMPL_STNDRD_CODE")
    private String nmplStndrdCode;

    /** 번호판규격명 */
    @JsonProperty("NMPL_STNDRD_NM")
    private String nmplStndrdNm;

    /** 용도구분코드 */
    @JsonProperty("PRPOS_SE_CODE")
    private String prposSeCode;

    /** 용도구분명 */
    @JsonProperty("PRPOS_SE_NM")
    private String prposSeNm;

    /** 제작사명 */
    @JsonProperty("MTRS_FOM_NM")
    private String mtrsFomNm;

    /** 형식명 */
    @JsonProperty("FOM_NM")
    private String fomNm;

    /** 취득금액 */
    @JsonProperty("ACQS_AMOUNT")
    private String acqsAmount;

    /** 등록상세코드 */
    @JsonProperty("REGIST_DETAIL_CODE")
    private String registDetailCode;

    /** 등록상세명 */
    @JsonProperty("REGIST_DETAIL_NM")
    private String registDetailNm;

    /** 최초등록일자 */
    @JsonProperty("FRST_REGIST_DE")
    private String frstRegistDe;

    /** 자동차보험종료일자 */
    @JsonProperty("CAAG_ENDDE")
    private String caagEndde;

    /** 생산년도 */
    @JsonProperty("PRYE")
    private String prye;

    /** 사양번호1 */
    @JsonProperty("SPMNNO1")
    private String spmnno1;

    /** 사양번호2 */
    @JsonProperty("SPMNNO2")
    private String spmnno2;

    /** 연식월 */
    @JsonProperty("YBL_MD")
    private String yblMd;

    /** 주행거리 */
    @JsonProperty("TRVL_DSTNC")
    private String trvlDstnc;

    /** 검사유효기간시작일자 */
    @JsonProperty("INSPT_VALID_PD_BGNDE")
    private String insptValidPdBgnde;

    /** 검사유효기간종료일자 */
    @JsonProperty("INSPT_VALID_PD_ENDDE")
    private String insptValidPdEndde;

    /** 점검유효기간시작일자 */
    @JsonProperty("CHCK_VALID_PD_BGNDE")
    private String chckValidPdBgnde;

    /** 점검유효기간종료일자 */
    @JsonProperty("CHCK_VALID_PD_ENDDE")
    private String chckValidPdEndde;

    /** 등록신청구분명 */
    @JsonProperty("REGIST_REQST_SE_NM")
    private String registReqstSeNm;

    /** 최초등록신청번호 */
    @JsonProperty("FRST_REGIST_RQRCNO")
    private String frstRegistRqrcno;

    /** 번호판보관반납일자 */
    @JsonProperty("NMPL_CSDY_REMNR_DE")
    private String nmplCsdyRemnrDe;

    /** 번호판보관여부 */
    @JsonProperty("NMPL_CSDY_AT")
    private String nmplCsdyAt;

    /** 영업용사용기간 */
    @JsonProperty("BSS_USE_PD")
    private String bssUsePd;

    /** 직권말소예방공지일자 */
    @JsonProperty("OCTHT_ERSR_PRVNTC_NTICE_DE")
    private String octhtErsrPrvntcNticeDe;

    /** 말소등록일자 */
    @JsonProperty("ERSR_REGIST_DE")
    private String ersrRegistDe;

    /** 말소등록구분코드 */
    @JsonProperty("ERSR_REGIST_SE_CODE")
    private String ersrRegistSeCode;

    /** 말소등록구분명 */
    @JsonProperty("ERSR_REGIST_SE_NM")
    private String ersrRegistSeNm;

    /** 저당건수 */
    @JsonProperty("MRTGCNT")
    private String mrtgcnt;

    /** 차량건수 */
    @JsonProperty("VHCLECNT")
    private String vhclecnt;

    /** 압인건수 */
    @JsonProperty("STMDCNT")
    private String stmdcnt;

    /** 주소1 */
    @JsonProperty("ADRES1")
    private String adres1;

    /** 주소명1 */
    @JsonProperty("ADRES_NM1")
    private String adresNm1;

    /** 주소 */
    @JsonProperty("ADRES")
    private String adres;

    /** 주소명 */
    @JsonProperty("ADRES_NM")
    private String adresNm;

    /** 개인법인여부 */
    @JsonProperty("INDVDL_BSNM_AT")
    private String indvdlBsnmAt;

    /** 전화번호 */
    @JsonProperty("TELNO")
    private String telno;

    /** 소유자명 */
    @JsonProperty("MBER_NM")
    private String mberNm;

    /** 소유자구분코드 */
    @JsonProperty("MBER_SE_CODE")
    private String mberSeCode;

    /** 소유자구분번호 */
    @JsonProperty("MBER_SE_NO")
    private String mberSeNo;

    /** 면세대상자구분코드 */
    @JsonProperty("TAXXMPT_TRGTER_SE_CODE")
    private String taxxmptTrgterSeCode;

    /** 면세대상자구분코드명 */
    @JsonProperty("TAXXMPT_TRGTER_SE_CODE_NM")
    private String taxxmptTrgterSeCodeNm;

    /** 건수사항 */
    @JsonProperty("CNT_MATTER")
    private String cntMatter;

    /** 읍면동명 */
    @JsonProperty("EMD_NM")
    private String emdNm;

    /** 예방건수 */
    @JsonProperty("PRVNTCCNT")
    private String prvntccnt;

    /** 수출이행여부확인일자 */
    @JsonProperty("XPORT_FLFL_AT_STTEMNT_DE")
    private String xportFlflAtSttemntDe;

    /** 협력사신청번호 */
    @JsonProperty("PARTN_RQRCNO")
    private String partnRqrcno;

    /** 레코드 목록 */
    @JsonProperty("record")
    private List<Record> record;


    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonIgnoreProperties(ignoreUnknown = true)
    @Schema(name = "LedgerRecord", description = "원부 변경내역 record")
    @Getter
    @Setter
    public static class Record {
        /** 메인체크 */
        @JsonProperty("MAINCHK") private String mainchk;
        /** 변경작업구분코드 */
        @JsonProperty("CHANGE_JOB_SE_CODE") private String changeJobSeCode;
        /** 주번호 */
        @JsonProperty("MAINNO") private String mainno;
        /** 부번호 */
        @JsonProperty("SUBNO") private String subno;
        /** 상세내역 */
        @JsonProperty("DTLS") private String dtls;
        /** 신청번호 */
        @JsonProperty("RQRCNO") private String rqrcno;
        /** 차량관리번호 */
        @JsonProperty("VHMNO") private String vhmno;
        /** 원부그룹번호 */
        @JsonProperty("LEDGER_GROUP_NO") private String ledgerGroupNo;
        /** 원부개별화번호 */
        @JsonProperty("LEDGER_INDVDLZ_NO") private String ledgerIndvdlzNo;
        /** 구분명 */
        @JsonProperty("GUBUN_NM") private String gubunNm;
        /** 변경일자 */
        @JsonProperty("CHANGE_DE") private String changeDe;
        /** 상세일련번호 */
        @JsonProperty("DETAIL_SN") private String detailSn;
        /** 플래그 */
        @JsonProperty("FLAG") private String flag;

        public String getMainchk() { return mainchk; }
        public void setMainchk(String mainchk) { this.mainchk = mainchk; }
        public String getChangeJobSeCode() { return changeJobSeCode; }
        public void setChangeJobSeCode(String changeJobSeCode) { this.changeJobSeCode = changeJobSeCode; }
        public String getMainno() { return mainno; }
        public void setMainno(String mainno) { this.mainno = mainno; }
        public String getSubno() { return subno; }
        public void setSubno(String subno) { this.subno = subno; }
        public String getDtls() { return dtls; }
        public void setDtls(String dtls) { this.dtls = dtls; }
        public String getRqrcno() { return rqrcno; }
        public void setRqrcno(String rqrcno) { this.rqrcno = rqrcno; }
        public String getVhmno() { return vhmno; }
        public void setVhmno(String vhmno) { this.vhmno = vhmno; }
        public String getLedgerGroupNo() { return ledgerGroupNo; }
        public void setLedgerGroupNo(String ledgerGroupNo) { this.ledgerGroupNo = ledgerGroupNo; }
        public String getLedgerIndvdlzNo() { return ledgerIndvdlzNo; }
        public void setLedgerIndvdlzNo(String ledgerIndvdlzNo) { this.ledgerIndvdlzNo = ledgerIndvdlzNo; }
        public String getGubunNm() { return gubunNm; }
        public void setGubunNm(String gubunNm) { this.gubunNm = gubunNm; }
        public String getChangeDe() { return changeDe; }
        public void setChangeDe(String changeDe) { this.changeDe = changeDe; }
        public String getDetailSn() { return detailSn; }
        public void setDetailSn(String detailSn) { this.detailSn = detailSn; }
        public String getFlag() { return flag; }
        public void setFlag(String flag) { this.flag = flag; }
    }
}
