package go.kr.project.carInspectionPenalty.registration.model;

import com.fasterxml.jackson.annotation.JsonFormat;
import go.kr.project.common.model.PagingVO;
import lombok.*;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 자동차 과태료 대상 VO
 * 테이블: tb_car_ffnlg_trgt
 */
@EqualsAndHashCode(callSuper = true)
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class CarFfnlgTrgtVO extends PagingVO {
    
    // 기본키
    private String carFfnlgTrgtId;              // 자동차 과태료 대상 ID
    
    // 업무 필드
    private String rcptYmd;                     // 접수 일자
    private String ffnlgTrgtSeCd;               // 과태료 대상 구분 코드
    private String inspstnCd;                   // 검사소 코드
    private String inspYmd;                     // 검사 일자
    private String vhclno;                      // 차량번호
    private String ownrNm;                      // 소유자 명
    private String rrno;                        // 주민등록번호
    private String carNm;                       // 자동차 명
    private String carKnd;                      // 자동차 종류
    private String carUsg;                      // 자동차 용도
    private String inspEndYmd;                  // 검사 종료 일자
    private String daycnt;                      // 일수
    private String reinspYn;                    // 재검 여부 (Y/N)
    private String ffnlgAmt;                    // 과태료 금액
    private String lastRegYmd;                  // 최종 등록 일자
    private String addr;                        // 주소
    private String vldPrdExpryYmd;              // 유효 기간 만료 일자
    private String trdGds;                      // 매매 상품
    private String taskPrcsSttsCd;              // 업무 처리 상태 코드 (01=접수, 02=처리중, 03=완료)
    private String taskPrcsYmd;                 // 업무 처리 일자
    private String rmrk;                        // 비고
    private String rmrkDtl;                     // 비고 상세
    private String carBassMatterInqireId;       // 자동차 기본 사항 조회 ID
    private String carLedgerFrmbkId;            // 자동차 등록 원부 갑 ID
    private String carBscMttrInqFlnm;           // 자동차 기본 사항 조회 성명 (상품용일 때 저장)
    private String carBscMttrInqSggCd;          // 자동차 기본 사항 조회 시군구 코드 (이첩일 때 저장)
    private String carBscMttrInqSggNm;          // 자동차 기본 사항 조회 시군구 명 (이첩일 때 저장)
    private String carRegFrmbkChgTaskSeCd;      // 자동차 등록 원부갑 변경 업무 구분 코드
    private String carRegFrmbkChgTaskSeNm;      // 자동차 등록 원부갑 변경 업무 구분 명
    private String carRegFrmbkChgYmd;           // 자동차 등록 원부갑 변경 일자
    private String carRegFrmbkDtl;              // 자동차 등록 원부갑 상세

    // 감사 필드
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul")
    private LocalDateTime regDt;                // 등록 일시
    private String rgtr;                        // 등록자
    private String delYn;                       // 삭제 여부
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul")
    private LocalDateTime delDt;                // 삭제 일시
    private String dltr;                        // 삭제자
    
    // 조회용 필드
    private String taskPrcsSttsCdNm;            // 업무 처리 상태 코드명
    private String rgtrNm;                      // 등록자명
    
    // 검색 조건 필드
    private String schRcptYmdStart;             // 검색 시작 접수 일자
    private String schRcptYmdEnd;               // 검색 종료 접수 일자
    private String schVhclno;                   // 검색 차량번호
    private String schOwnrNm;                   // 검색 소유자명
    private List<String> schTaskPrcsSttsCd;     // 검색 업무 처리 상태 코드 (다중 선택 가능)
    private List<String> schReinspYn;           // 검색 재검 여부 (다중 선택 가능)
    private String schInspYmdStart;             // 검색 시작 검사 일자
    private String schInspYmdEnd;               // 검색 종료 검사 일자
    private String schFfnlgTrgtSeCd;            // 검색 과태료 대상 구분 코드
}
