package incheon.ags.dss.under.vo;

import java.util.Date;

import incheon.com.cmm.ComDefaultVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/**
 * 지반침하(싱크홀) 정보 VO
 * Table: icdss.urb_udgd_snkg_hist
 */
@Getter
@Setter
@ToString
@Schema(description = "지반침하(싱크홀) 이력 정보 객체")
public class UrbUdgdSnkgHistVO extends ComDefaultVO {

    @Schema(description = "사고번호 (PK)", example = "1")
    private int acdntNo;            // acdnt_no (serial4)

    @Schema(description = "사고시도명", example = "인천광역시")
    private String acdntCtpvNm;     // acdnt_ctpv_nm (varchar(20))

    @Schema(description = "사고시군구명", example = "부평구")
    private String acdntSggNm;      // acdnt_sgg_nm (varchar(20))

    @Schema(description = "사고읍면동명", example = "부평동")
    private String acdntEmVina;     // acdnt_em_vina (varchar(20))

    @Schema(description = "사고상세주소", example = "인천광역시 부평구 부평동 123-4")
    private String acdntDaddr;      // acdnt_daddr (varchar(320))

    @Schema(description = "사고지점위도", example = "37.1234567890")
    private Double acdntBrnchLat;   // acdnt_brnch_lat (numeric(12, 10)) - NULL 허용이므로 Double 사용

    @Schema(description = "사고지점경도", example = "127.1234567890")
    private Double acdntBrnchLot;   // acdnt_brnch_lot (numeric(13, 10))

    @Schema(description = "발생일자", example = "2024-01-01")
    private String ocrnYmd;         // ocrn_ymd (varchar(10))

    @Schema(description = "발생규모폭(m)", example = "2.5")
    private Double ocrnSclBt;       // ocrn_scl_bt (numeric(5, 2))

    @Schema(description = "발생규모연장(m)", example = "1.5")
    private Double ocrnSclPrlg;     // ocrn_scl_prlg (numeric(5, 2))

    @Schema(description = "발생규모깊이(m)", example = "3.0")
    private Double ocrnSclDepth;    // ocrn_scl_depth (numeric(5, 2))

    @Schema(description = "발생지역지질종류", example = "매립층")
    private String ocrnRgnNtrfsKnd; // ocrn_rgn_ntrfs_knd (varchar(20))

    @Schema(description = "상세발생원인", example = "상하수도 누수로 인한 토사 유실")
    private String dtlOcrnCs;       // dtl_ocrn_cs (text)

    @Schema(description = "피해사망자수", example = "0")
    private Integer damDcsdCnt;     // dam_dcsd_cnt (int4)

    @Schema(description = "피해부상자수", example = "0")
    private Integer damInjpsnCnt;   // dam_injpsn_cnt (int4)

    @Schema(description = "피해차량대수", example = "1")
    private Integer damVhclCntom;   // dam_vhcl_cntom (int4)

    @Schema(description = "복구상태", example = "복구완료")
    private String rstrStts;        // rstr_stts (varchar(20))

    @Schema(description = "복구방법", example = "지반 보강 및 도로 재포장")
    private String rstrMthd;        // rstr_mthd (text)

    @Schema(description = "복구비용(원)", example = "15000000")
    private Double rstrCst;         // rstr_cst (numeric(14)) - 금액이므로 Long 권장이나 기존 호환 위해 Double 유지

    @Schema(description = "복구완료일자", example = "2024-01-15")
    private String rstrCmptnYmd;    // rstr_cmptn_ymd (varchar(10))

    @Schema(description = "데이터기준일자", example = "2024-12-01")
    private String dataCrtrYmd;     // data_crtr_ymd (varchar(10))

    @Schema(description = "최초등록아이디", hidden = true)
    private String frstRegId;       // frst_reg_id (varchar(20))

    @Schema(description = "최초등록일시", hidden = true)
    private Date frstRegDt;         // frst_reg_dt (timestamp)

    @Schema(description = "최종수정아이디", hidden = true)
    private String lastMdfcnId;     // last_mdfcn_id (varchar(20))

    @Schema(description = "최종수정일시", hidden = true)
    private Date lastMdfcnDt;       // last_mdfcn_dt (timestamp)
    
    @Schema(description = "검색 시작일 (YYYYMMDD)", example = "20240101")
    private String ocrnYmdStart; // [ADD] 추가

    @Schema(description = "검색 종료일 (YYYYMMDD)", example = "20241231")
    private String ocrnYmdEnd;   // [ADD] 추가

    @Schema(description = "대상지 구역 번호", example = "60")
    private int zoneNo;          // [ADD] 서비스 로직에서 사용하기 위해 추가
}