feat: old, new 구분하여 전체 재개발
parent
785528218a
commit
f4064f716c
@ -1,474 +0,0 @@
|
||||
# 자동차 정보 조회 API RestTemplate 구조
|
||||
|
||||
## 1. 자동차기본사항조회 API
|
||||
|
||||
### 1.1 Request (BasicRequest)
|
||||
|
||||
**엔드포인트**: `POST /api/v1/vehicles/basic`
|
||||
|
||||
```json
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"INFO_SYS_ID": "41-345", // 정보시스템ID (자동설정)
|
||||
"INFO_SYS_IP": "105.19.10.135", // 정보시스템IP (자동설정)
|
||||
"SIGUNGU_CODE": "41460", // 시군구코드 (자동설정)
|
||||
"CNTC_INFO_CODE": "AC1_FD11_01", // 연계정보코드 (자동설정)
|
||||
"CHARGER_ID": "", // 담당자ID (자동설정)
|
||||
"CHARGER_IP": "", // 담당자IP (자동설정)
|
||||
"CHARGER_NM": "", // 담당자명 (자동설정)
|
||||
"LEVY_STDDE": "20250101", // 부과기준일
|
||||
"INQIRE_SE_CODE": "3", // 조회구분코드 (자동설정: VHRNO→"3", VIN→"2")
|
||||
"VHRNO": "12가3456", // 자동차등록번호
|
||||
"VIN": null // 차대번호
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### 필드 설명
|
||||
|
||||
| 필드명 | 타입 | 설명 | 비고 |
|
||||
|--------|------|------|------|
|
||||
| INFO_SYS_ID | String | 정보시스템ID | 자동설정 |
|
||||
| INFO_SYS_IP | String | 정보시스템IP | 자동설정 |
|
||||
| SIGUNGU_CODE | String | 시군구코드 | 자동설정 |
|
||||
| CNTC_INFO_CODE | String | 연계정보코드 | 자동설정 |
|
||||
| CHARGER_ID | String | 담당자ID | 자동설정 |
|
||||
| CHARGER_IP | String | 담당자IP | 자동설정 |
|
||||
| CHARGER_NM | String | 담당자명(사용자) | 자동설정 |
|
||||
| LEVY_STDDE | String | 부과기준일 (YYYYMMDD) | 사용자 입력 |
|
||||
| INQIRE_SE_CODE | String | 조회구분코드 | 자동설정 (VHRNO→"3", VIN→"2") |
|
||||
| VHRNO | String | 자동차등록번호 | 사용자 입력 |
|
||||
| VIN | String | 차대번호 | 사용자 입력 |
|
||||
|
||||
---
|
||||
|
||||
### 1.2 Response (BasicResponse)
|
||||
|
||||
```json
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"CNTC_RESULT_CODE": "0",
|
||||
"CNTC_RESULT_DTLS": "정상",
|
||||
"record": [
|
||||
{
|
||||
// 차량 기본 정보
|
||||
"VHRNO": "12가3456",
|
||||
"VIN": "KMHAB812345678901",
|
||||
"CNM": "제네시스",
|
||||
"FOM_NM": "GV80",
|
||||
"COLOR_NM": "검은색",
|
||||
"FRST_REGIST_DE": "20200115",
|
||||
"REGIST_DE": "20200115",
|
||||
"CHANGE_DE": "20200115",
|
||||
"PRYE": "2020",
|
||||
"YBL_MD": "202001",
|
||||
|
||||
// 차종 정보
|
||||
"VHCTY_ASORT_CODE": "01",
|
||||
"VHCTY_ASORT_NM": "승용",
|
||||
"VHCTY_TY_CODE": "01",
|
||||
"VHCTY_TY_NM": "일반",
|
||||
"VHCTY_SE_CODE": "01",
|
||||
"VHCTY_SE_NM": "대형",
|
||||
"PRPOS_SE_CODE": "01",
|
||||
|
||||
// 차량 제원
|
||||
"DSPLVL": "2987",
|
||||
"VHCLE_TOT_WT": "2500",
|
||||
"MXMM_LDG": "0",
|
||||
"CBD_LT": "4945",
|
||||
"CBD_BT": "1975",
|
||||
"CBD_HG": "1715",
|
||||
"FRST_MXMM_LDG": "0",
|
||||
"FUEL_CNSMP_RT": "9.5",
|
||||
"ELCTY_CMPND_FUEL_CNSMP_RT": "",
|
||||
"USE_FUEL_CODE": "D",
|
||||
"MTRS_FOM_NM": "D3.0",
|
||||
|
||||
// 소유자 정보
|
||||
"MBER_SE_CODE": "1",
|
||||
"MBER_NM": "홍길동",
|
||||
"MBER_SE_NO": "8801011234567",
|
||||
"TELNO": "010-1234-5678",
|
||||
"OWNER_LEGALDONG_CODE": "1111011700",
|
||||
"OWNER_ADSTRD_CODE": "1111011700",
|
||||
"OWNER_MNTN": "0",
|
||||
"OWNER_LNBR": "123",
|
||||
"OWNER_HO": "1",
|
||||
"OWNER_ADRES_NM": "서울특별시 종로구",
|
||||
"OWNER_ROAD_NM_CODE": "1111011700",
|
||||
"OWNER_UNDGRND_BULD_SE_CODE": "0",
|
||||
"OWNER_BULD_MAIN_NO": "123",
|
||||
"OWNER_BULD_SUB_NO": "0",
|
||||
"OWNER_ADRES_FULL": "서울특별시 종로구 세종대로 123",
|
||||
|
||||
// 사용자 정보 (사용본거지)
|
||||
"USE_STRNGHLD_LEGALDONG_CODE": "1111011700",
|
||||
"USE_STRNGHLD_ADSTRD_CODE": "1111011700",
|
||||
"USE_STRNGHLD_MNTN": "0",
|
||||
"USE_STRNGHLD_LNBR": "123",
|
||||
"USE_STRNGHLD_HO": "1",
|
||||
"USE_STRNGHLD_ADRES_NM": "서울특별시 종로구",
|
||||
"USE_STRNGHLD_ROAD_NM_CODE": "1111011700",
|
||||
"USGSRHLD_UNDGRND_BULD_SE_CODE": "0",
|
||||
"USE_STRNGHLD_BULD_MAIN_NO": "123",
|
||||
"USE_STRNGHLD_BULD_SUB_NO": "0",
|
||||
"USGSRHLD_ADRES_FULL": "서울특별시 종로구 세종대로 123",
|
||||
"USE_STRNGHLD_GRC_CODE": "",
|
||||
|
||||
// 등록 상태
|
||||
"REGIST_DETAIL_CODE": "11",
|
||||
"ERSR_REGIST_SE_CODE": "",
|
||||
"ERSR_REGIST_SE_NM": "",
|
||||
"ERSR_REGIST_DE": "",
|
||||
"SPCF_REGIST_STTUS_CODE": "",
|
||||
"FRNT_VHRNO": "",
|
||||
"AFTR_VHRNO": "",
|
||||
|
||||
// 검사 정보
|
||||
"INSPT_VALID_PD_BGNDE": "20240115",
|
||||
"INSPT_VALID_PD_ENDDE": "20260114",
|
||||
|
||||
// 취득/압류 정보
|
||||
"ACQS_DE": "20200115",
|
||||
"ACQS_END_DE": "",
|
||||
"ACQS_AMOUNT": "85000000",
|
||||
"MRTG_CO": "0",
|
||||
"SEIZR_CO": "0",
|
||||
"STMD_CO": "0",
|
||||
|
||||
// 기타
|
||||
"CAAG_ENDDE": "",
|
||||
"TRANSR_REGIST_DE": "",
|
||||
"ORIGIN_SE_CODE": "1",
|
||||
"NMPL_STNDRD_CODE": "01",
|
||||
"NMPL_CSDY_AT": "N",
|
||||
"NMPL_CSDY_REMNR_DE": "",
|
||||
"TKCAR_PSCAP_CO": "5",
|
||||
"SPMNNO": "",
|
||||
"TRVL_DSTNC": "45000",
|
||||
"FRST_REGIST_RQRCNO": "",
|
||||
"VLNT_ERSR_PRVNTC_NTICE_DE": "",
|
||||
"REGIST_INSTT_NM": "서울특별시청",
|
||||
"PROCESS_IMPRTY_RESN_CODE": "",
|
||||
"PROCESS_IMPRTY_RESN_DTLS": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### Response 필드 설명
|
||||
|
||||
| 구분 | 필드명 | 타입 | 설명 |
|
||||
|------|--------|------|------|
|
||||
| 기본 | CNTC_RESULT_CODE | String | 연계결과코드 |
|
||||
| 기본 | CNTC_RESULT_DTLS | String | 연계결과상세 |
|
||||
| 차량기본 | VHRNO | String | 자동차등록번호 |
|
||||
| 차량기본 | VIN | String | 차대번호 |
|
||||
| 차량기본 | CNM | String | 차명 |
|
||||
| 차량기본 | FOM_NM | String | 형식명 |
|
||||
| 차량기본 | COLOR_NM | String | 색상명 |
|
||||
| 차량기본 | FRST_REGIST_DE | String | 최초등록일자 |
|
||||
| 차량기본 | PRYE | String | 연식 |
|
||||
| 차종 | VHCTY_ASORT_CODE | String | 차종구분코드 |
|
||||
| 차종 | VHCTY_ASORT_NM | String | 차종구분명 |
|
||||
| 차종 | VHCTY_TY_CODE | String | 차종유형코드 |
|
||||
| 차종 | VHCTY_TY_NM | String | 차종유형명 |
|
||||
| 차종 | VHCTY_SE_CODE | String | 차종세분류코드 |
|
||||
| 차종 | VHCTY_SE_NM | String | 차종세분류명 |
|
||||
| 제원 | DSPLVL | String | 배기량(cc) |
|
||||
| 제원 | VHCLE_TOT_WT | String | 차량총중량(kg) |
|
||||
| 제원 | MXMM_LDG | String | 최대적재량(kg) |
|
||||
| 제원 | CBD_LT | String | 길이(mm) |
|
||||
| 제원 | CBD_BT | String | 너비(mm) |
|
||||
| 제원 | CBD_HG | String | 높이(mm) |
|
||||
| 제원 | FUEL_CNSMP_RT | String | 연비(km/l) |
|
||||
| 제원 | USE_FUEL_CODE | String | 사용연료코드 |
|
||||
| 소유자 | MBER_SE_CODE | String | 회원구분코드 |
|
||||
| 소유자 | MBER_NM | String | 회원명 |
|
||||
| 소유자 | MBER_SE_NO | String | 회원구분번호 |
|
||||
| 소유자 | TELNO | String | 전화번호 |
|
||||
| 소유자 | OWNER_ADRES_FULL | String | 소유자주소전체 |
|
||||
| 사용본거지 | USGSRHLD_ADRES_FULL | String | 사용자주소전체 |
|
||||
| 검사 | INSPT_VALID_PD_BGNDE | String | 검사유효기간시작 |
|
||||
| 검사 | INSPT_VALID_PD_ENDDE | String | 검사유효기간종료 |
|
||||
| 권리 | MRTG_CO | String | 저당권수 |
|
||||
| 권리 | SEIZR_CO | String | 압류수 |
|
||||
| 권리 | STMD_CO | String | 체당금수 |
|
||||
| 취득 | ACQS_AMOUNT | String | 취득가액 |
|
||||
|
||||
---
|
||||
|
||||
## 2. 자동차등록원부(갑)조회 API
|
||||
|
||||
### 2.1 Request (LedgerRequest)
|
||||
|
||||
**엔드포인트**: `POST /api/v1/vehicles/ledger`
|
||||
|
||||
```json
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"INFO_SYS_ID": "41-345", // 정보시스템ID (자동설정)
|
||||
"INFO_SYS_IP": "105.19.10.135", // 정보시스템IP (자동설정)
|
||||
"SIGUNGU_CODE": "41460", // 시군구코드 (자동설정)
|
||||
"CNTC_INFO_CODE": "AC1_FD11_02", // 연계정보코드 (자동설정)
|
||||
"CHARGER_ID": "", // 담당자ID (자동설정)
|
||||
"CHARGER_IP": "", // 담당자IP (자동설정)
|
||||
"CHARGER_NM": "", // 담당자명 (자동설정)
|
||||
"VHRNO": "12가3456", // 자동차등록번호
|
||||
"ONES_INFORMATION_OPEN": "1", // 개인정보공개 (자동설정: "1")
|
||||
"CPTTR_NM": "홍길동", // 민원인성명
|
||||
"CPTTR_IHIDNUM": "8801011234567", // 민원인주민번호
|
||||
"CPTTR_LEGALDONG_CODE": "1111011700", // 민원인법정동코드
|
||||
"ROUTE_SE_CODE": "3", // 경로구분코드 (자동설정: "3")
|
||||
"DETAIL_EXPRESSION": "1", // 내역표시 (자동설정: "1")
|
||||
"INQIRE_SE_CODE": "1" // 조회구분코드 (자동설정: "1")
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### 필드 설명
|
||||
|
||||
| 필드명 | 타입 | 설명 | 비고 |
|
||||
|--------|------|------|------|
|
||||
| INFO_SYS_ID | String | 정보시스템ID | 자동설정 |
|
||||
| INFO_SYS_IP | String | 정보시스템IP | 자동설정 |
|
||||
| SIGUNGU_CODE | String | 시군구코드 | 자동설정 |
|
||||
| CNTC_INFO_CODE | String | 연계정보코드 | 자동설정 |
|
||||
| CHARGER_ID | String | 담당자ID | 자동설정 |
|
||||
| CHARGER_IP | String | 담당자IP | 자동설정 |
|
||||
| CHARGER_NM | String | 담당자명(사용자) | 자동설정 |
|
||||
| VHRNO | String | 자동차등록번호 | 사용자 입력 |
|
||||
| ONES_INFORMATION_OPEN | String | 개인정보공개 | 자동설정 (1:공개, 2:비공개) |
|
||||
| CPTTR_NM | String | 민원인성명 | 사용자 입력 |
|
||||
| CPTTR_IHIDNUM | String | 민원인주민번호 (13자리) | 사용자 입력 |
|
||||
| CPTTR_LEGALDONG_CODE | String | 민원인법정동코드 | 사용자 입력 |
|
||||
| ROUTE_SE_CODE | String | 경로구분코드 | 자동설정 ("3" 고정) |
|
||||
| DETAIL_EXPRESSION | String | 내역표시 | 자동설정 (1:전체, 2:최종) |
|
||||
| INQIRE_SE_CODE | String | 조회구분코드 | 자동설정 ("1" 열람) |
|
||||
|
||||
---
|
||||
|
||||
### 2.2 Response (LedgerResponse)
|
||||
|
||||
```json
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
// 연계 결과
|
||||
"CNTC_RESULT_CODE": "0",
|
||||
"CNTC_RESULT_DTLS": "정상",
|
||||
|
||||
// 원부 기본 정보
|
||||
"LEDGER_GROUP_NO": "0000000001",
|
||||
"LEDGER_INDVDLZ_NO": "0000000001",
|
||||
"VHMNO": "A123456789",
|
||||
"VHRNO": "12가3456",
|
||||
"VIN": "KMHAB812345678901",
|
||||
|
||||
// 차종 정보
|
||||
"VHCTY_ASORT_CODE": "01",
|
||||
"VHCTY_ASORT_NM": "승용",
|
||||
"CNM": "제네시스",
|
||||
"COLOR_CODE": "01",
|
||||
"COLOR_NM": "검은색",
|
||||
|
||||
// 등록 정보
|
||||
"NMPL_STNDRD_CODE": "01",
|
||||
"NMPL_STNDRD_NM": "일반",
|
||||
"PRPOS_SE_CODE": "01",
|
||||
"PRPOS_SE_NM": "자가용",
|
||||
"MTRS_FOM_NM": "D3.0",
|
||||
"FOM_NM": "GV80",
|
||||
"ACQS_AMOUNT": "85000000",
|
||||
"REGIST_DETAIL_CODE": "11",
|
||||
"REGIST_DETAIL_NM": "신규등록",
|
||||
"FRST_REGIST_DE": "20200115",
|
||||
"CAAG_ENDDE": "",
|
||||
"PRYE": "2020",
|
||||
|
||||
// 표본/운행 정보
|
||||
"SPMNNO1": "",
|
||||
"SPMNNO2": "",
|
||||
"YBL_MD": "202001",
|
||||
"TRVL_DSTNC": "45000",
|
||||
|
||||
// 검사/점검 정보
|
||||
"INSPT_VALID_PD_BGNDE": "20240115",
|
||||
"INSPT_VALID_PD_ENDDE": "20260114",
|
||||
"CHCK_VALID_PD_BGNDE": "",
|
||||
"CHCK_VALID_PD_ENDDE": "",
|
||||
"REGIST_REQST_SE_NM": "",
|
||||
"FRST_REGIST_RQRCNO": "",
|
||||
|
||||
// 번호판/말소 정보
|
||||
"NMPL_CSDY_REMNR_DE": "",
|
||||
"NMPL_CSDY_AT": "N",
|
||||
"BSS_USE_PD": "",
|
||||
"OCTHT_ERSR_PRVNTC_NTICE_DE": "",
|
||||
"ERSR_REGIST_DE": "",
|
||||
"ERSR_REGIST_SE_CODE": "",
|
||||
"ERSR_REGIST_SE_NM": "",
|
||||
|
||||
// 권리 정보
|
||||
"MRTGCNT": "0",
|
||||
"VHCLECNT": "0",
|
||||
"STMDCNT": "0",
|
||||
|
||||
// 주소 정보
|
||||
"ADRES1": "서울특별시 종로구",
|
||||
"ADRES_NM1": "세종대로 123",
|
||||
"ADRES": "서울특별시 종로구",
|
||||
"ADRES_NM": "세종대로 123",
|
||||
|
||||
// 소유자 정보
|
||||
"INDVDL_BSNM_AT": "N",
|
||||
"TELNO": "010-1234-5678",
|
||||
"MBER_NM": "홍길동",
|
||||
"MBER_SE_CODE": "1",
|
||||
"MBER_SE_NO": "8801011234567",
|
||||
|
||||
// 세제/기타
|
||||
"TAXXMPT_TRGTER_SE_CODE": "",
|
||||
"TAXXMPT_TRGTER_SE_CODE_NM": "",
|
||||
"CNT_MATTER": "",
|
||||
"EMD_NM": "종로동",
|
||||
"PRVNTCCNT": "0",
|
||||
"XPORT_FLFL_AT_STTEMNT_DE": "",
|
||||
"PARTN_RQRCNO": "",
|
||||
|
||||
// 변경 내역
|
||||
"record": [
|
||||
{
|
||||
"MAINCHK": "Y",
|
||||
"CHANGE_JOB_SE_CODE": "01",
|
||||
"MAINNO": "1",
|
||||
"SUBNO": "0",
|
||||
"DTLS": "신규등록",
|
||||
"RQRCNO": "20200115001",
|
||||
"VHMNO": "A123456789",
|
||||
"LEDGER_GROUP_NO": "0000000001",
|
||||
"LEDGER_INDVDLZ_NO": "0000000001",
|
||||
"GUBUN_NM": "등록",
|
||||
"CHANGE_DE": "20200115",
|
||||
"DETAIL_SN": "1",
|
||||
"FLAG": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### Response 필드 설명
|
||||
|
||||
| 구분 | 필드명 | 타입 | 설명 |
|
||||
|------|--------|------|------|
|
||||
| 기본 | CNTC_RESULT_CODE | String | 연계결과코드 |
|
||||
| 기본 | CNTC_RESULT_DTLS | String | 연계결과상세 |
|
||||
| 원부 | LEDGER_GROUP_NO | String | 원부그룹번호 |
|
||||
| 원부 | LEDGER_INDVDLZ_NO | String | 원부개별화번호 |
|
||||
| 원부 | VHMNO | String | 자동차검사번호 |
|
||||
| 차량 | VHRNO | String | 자동차등록번호 |
|
||||
| 차량 | VIN | String | 차대번호 |
|
||||
| 차량 | CNM | String | 차명 |
|
||||
| 차량 | FOM_NM | String | 형식명 |
|
||||
| 차종 | VHCTY_ASORT_CODE | String | 차종구분코드 |
|
||||
| 차종 | VHCTY_ASORT_NM | String | 차종구분명 |
|
||||
| 등록 | FRST_REGIST_DE | String | 최초등록일자 |
|
||||
| 등록 | REGIST_DETAIL_CODE | String | 등록상세코드 |
|
||||
| 등록 | REGIST_DETAIL_NM | String | 등록상세명 |
|
||||
| 등록 | PRPOS_SE_CODE | String | 용도구분코드 |
|
||||
| 등록 | PRPOS_SE_NM | String | 용도구분명 |
|
||||
| 검사 | INSPT_VALID_PD_BGNDE | String | 검사유효기간시작 |
|
||||
| 검사 | INSPT_VALID_PD_ENDDE | String | 검사유효기간종료 |
|
||||
| 권리 | MRTGCNT | String | 저당권수 |
|
||||
| 권리 | VHCLECNT | String | 압류수 |
|
||||
| 권리 | STMDCNT | String | 체당금수 |
|
||||
| 말소 | ERSR_REGIST_DE | String | 말소등록일자 |
|
||||
| 말소 | ERSR_REGIST_SE_CODE | String | 말소등록구분코드 |
|
||||
| 말소 | ERSR_REGIST_SE_NM | String | 말소등록구분명 |
|
||||
| 소유자 | MBER_NM | String | 회원명 |
|
||||
| 소유자 | MBER_SE_CODE | String | 회원구분코드 |
|
||||
| 소유자 | MBER_SE_NO | String | 회원구분번호 |
|
||||
| 소유자 | TELNO | String | 전화번호 |
|
||||
| 주소 | ADRES | String | 주소 |
|
||||
| 주소 | ADRES_NM | String | 주소명 |
|
||||
| 취득 | ACQS_AMOUNT | String | 취득가액 |
|
||||
|
||||
#### Record (변경내역) 필드
|
||||
|
||||
| 필드명 | 타입 | 설명 |
|
||||
|--------|------|------|
|
||||
| MAINCHK | String | 주체크 |
|
||||
| CHANGE_JOB_SE_CODE | String | 변경업무구분코드 |
|
||||
| MAINNO | String | 주번호 |
|
||||
| SUBNO | String | 부번호 |
|
||||
| DTLS | String | 상세 |
|
||||
| RQRCNO | String | 요청번호 |
|
||||
| GUBUN_NM | String | 구분명 |
|
||||
| CHANGE_DE | String | 변경일자 |
|
||||
| DETAIL_SN | String | 상세일련번호 |
|
||||
|
||||
---
|
||||
|
||||
## 3. 공통 구조
|
||||
|
||||
### 3.1 Envelope (요청/응답 래퍼)
|
||||
|
||||
```json
|
||||
{
|
||||
"data": [ ... ]
|
||||
}
|
||||
```
|
||||
|
||||
모든 요청과 응답은 `data` 배열로 감싸져 있습니다.
|
||||
|
||||
### 3.2 HTTP Headers
|
||||
|
||||
| 헤더명 | 설명 | 예시 |
|
||||
|--------|------|------|
|
||||
| Content-Type | 콘텐츠 타입 | application/json;charset=UTF-8 |
|
||||
| Accept | 응답 타입 | application/json |
|
||||
| gpki_yn | GPKI 암호화 여부 | Y/N |
|
||||
| tx_id | 트랜잭션 ID | UUID |
|
||||
| cert_server_id | 인증서 서버 ID | 설정값 |
|
||||
| api_key | API 키 | 설정값 |
|
||||
| cvmis_apikey | CVMIS API 키 | 설정값 |
|
||||
|
||||
### 3.3 자동설정 필드 요약
|
||||
|
||||
| API | 필드 | 설정 방식 |
|
||||
|-----|------|----------|
|
||||
| 공통 | INFO_SYS_ID, INFO_SYS_IP, SIGUNGU_CODE | application.yml system 설정 |
|
||||
| 공통 | CHARGER_ID, CHARGER_IP, CHARGER_NM | application.yml system 설정 |
|
||||
| 기본사항 | CNTC_INFO_CODE | vmis.gov.services.basic.cntcInfoCode |
|
||||
| 기본사항 | INQIRE_SE_CODE | VHRNO→"3", VIN→"2" |
|
||||
| 등록원부 | CNTC_INFO_CODE | vmis.gov.services.ledger.cntcInfoCode |
|
||||
| 등록원부 | ONES_INFORMATION_OPEN | 기본값 "1" (소유자공개) |
|
||||
| 등록원부 | ROUTE_SE_CODE | 고정값 "3" |
|
||||
| 등록원부 | DETAIL_EXPRESSION | 기본값 "1" (전체내역) |
|
||||
| 등록원부 | INQIRE_SE_CODE | 기본값 "1" (열람) |
|
||||
|
||||
---
|
||||
|
||||
## 4. 관련 파일 경로
|
||||
|
||||
| 구분 | 파일 경로 |
|
||||
|------|----------|
|
||||
| 기본정보 Request | `src/main/java/com/vmis/interfaceapp/model/basic/BasicRequest.java` |
|
||||
| 기본정보 Response | `src/main/java/com/vmis/interfaceapp/model/basic/BasicResponse.java` |
|
||||
| 등록원부 Request | `src/main/java/com/vmis/interfaceapp/model/ledger/LedgerRequest.java` |
|
||||
| 등록원부 Response | `src/main/java/com/vmis/interfaceapp/model/ledger/LedgerResponse.java` |
|
||||
| 기본정보 Service | `src/main/java/com/vmis/interfaceapp/service/CarBassMatterInqireService.java` |
|
||||
| 등록원부 Service | `src/main/java/com/vmis/interfaceapp/service/CarLedgerFrmbkService.java` |
|
||||
| RestTemplate Client | `src/main/java/com/vmis/interfaceapp/client/GovernmentApiClient.java` |
|
||||
| Request Enricher | `src/main/java/com/vmis/interfaceapp/service/RequestEnricher.java` |
|
||||
| Controller | `src/main/java/com/vmis/interfaceapp/controller/VehicleInterfaceController.java` |
|
||||
Binary file not shown.
@ -1,10 +1,13 @@
|
||||
package com.vmis.interfaceapp.config;
|
||||
|
||||
import com.vmis.interfaceapp.config.properties.VmisProperties;
|
||||
import com.vmis.interfaceapp.config.properties.GpkiProperties;
|
||||
import com.vmis.interfaceapp.config.properties.HttpProperties;
|
||||
import com.vmis.interfaceapp.config.properties.NewVmisProperties;
|
||||
import com.vmis.interfaceapp.config.properties.OldVmisProperties;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
@EnableConfigurationProperties(VmisProperties.class)
|
||||
@EnableConfigurationProperties({OldVmisProperties.class, NewVmisProperties.class, GpkiProperties.class, HttpProperties.class})
|
||||
public class PropertiesConfig {
|
||||
}
|
||||
|
||||
@ -0,0 +1,36 @@
|
||||
package com.vmis.interfaceapp.config.properties;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
@Data
|
||||
@ConfigurationProperties(prefix = "gpki")
|
||||
@Validated
|
||||
public class GpkiProperties {
|
||||
/** "Y" 또는 "N" */
|
||||
@NotBlank
|
||||
private String enabled = "N";
|
||||
private boolean useSign = true;
|
||||
@NotBlank
|
||||
private String charset = "UTF-8";
|
||||
@NotBlank
|
||||
private String certServerId;
|
||||
@NotBlank
|
||||
private String targetServerId;
|
||||
// Optional advanced config for native GPKI util
|
||||
private Boolean ldap; // null -> util default
|
||||
private String gpkiLicPath; // e.g., C:/gpki2/gpkisecureweb/conf
|
||||
private String certFilePath; // directory for target cert files when LDAP=false
|
||||
private String envCertFilePathName; // ..._env.cer
|
||||
private String envPrivateKeyFilePathName; // ..._env.key
|
||||
private String envPrivateKeyPasswd;
|
||||
private String sigCertFilePathName; // ..._sig.cer
|
||||
private String sigPrivateKeyFilePathName; // ..._sig.key
|
||||
private String sigPrivateKeyPasswd;
|
||||
|
||||
public boolean isEnabledFlag() {
|
||||
return "Y".equalsIgnoreCase(enabled);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
package com.vmis.interfaceapp.config.properties;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
@Data
|
||||
@ConfigurationProperties(prefix = "http")
|
||||
@Validated
|
||||
public class HttpProperties {
|
||||
private int connectTimeoutMillis = 5000;
|
||||
private int readTimeoutMillis = 10000;
|
||||
}
|
||||
@ -0,0 +1,81 @@
|
||||
package com.vmis.interfaceapp.config.properties;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
/**
|
||||
* 신버전 VMIS 설정 (자동차기본사항조회, 자동차등록원부(갑) 신버전)
|
||||
*/
|
||||
@Data
|
||||
@ConfigurationProperties(prefix = "new.vmis")
|
||||
@Validated
|
||||
public class NewVmisProperties {
|
||||
|
||||
@NotNull
|
||||
private SystemProps system = new SystemProps();
|
||||
@NotNull
|
||||
private GovProps gov = new GovProps();
|
||||
|
||||
@Data
|
||||
public static class SystemProps {
|
||||
@NotBlank
|
||||
private String infoSysId;
|
||||
/** INFO_SYS_IP_ADDR */
|
||||
private String infoSysIpAddr;
|
||||
/** 시군구코드 (SGG_CD) */
|
||||
private String sggCd;
|
||||
// 담당자 정보
|
||||
private String picId;
|
||||
private String picIpAddr;
|
||||
private String picNm;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class GovProps {
|
||||
@NotBlank
|
||||
private String scheme = "http";
|
||||
@NotBlank
|
||||
private String host;
|
||||
@NotBlank
|
||||
private String basePath;
|
||||
@NotNull
|
||||
private Services services = new Services();
|
||||
|
||||
public String buildServiceUrl(String path) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(scheme).append("://").append(host);
|
||||
if (basePath != null && !basePath.isEmpty()) {
|
||||
if (!basePath.startsWith("/")) sb.append('/');
|
||||
sb.append(basePath);
|
||||
}
|
||||
if (path != null && !path.isEmpty()) {
|
||||
if (!path.startsWith("/")) sb.append('/');
|
||||
sb.append(path);
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class Services {
|
||||
@NotNull
|
||||
private Service basic = new Service();
|
||||
@NotNull
|
||||
private Service ledger = new Service();
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class Service {
|
||||
@NotBlank
|
||||
private String path;
|
||||
@NotBlank
|
||||
private String linkInfoCd;
|
||||
@NotBlank
|
||||
private String apiKey;
|
||||
@NotBlank
|
||||
private String cvmisApikey;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,650 +0,0 @@
|
||||
package com.vmis.interfaceapp.model.basic;
|
||||
|
||||
import com.vmis.interfaceapp.config.ApiConstant;
|
||||
import com.vmis.interfaceapp.model.common.Envelope;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 자동차 기본 사항 조회 엔티티
|
||||
*
|
||||
* <p>API 호출 정보를 저장하는 테이블 매핑 클래스입니다.
|
||||
* 최초 요청 시 INSERT, 결과 수신 시 UPDATE 형태로 사용됩니다.</p>
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class CarBassMatterInqireVO {
|
||||
|
||||
// ==== Static factory/mapping methods (moved from Service) ====
|
||||
public static CarBassMatterInqireVO fromRequest(BasicRequest request) {
|
||||
BasicRequest.Record first = null;
|
||||
if (request != null && request.getRecord() != null && !request.getRecord().isEmpty()) {
|
||||
first = request.getRecord().get(0);
|
||||
}
|
||||
return CarBassMatterInqireVO.builder()
|
||||
.infoSysId(request.getInfoSysId())
|
||||
.infoSysIp(request.getInfoSysIp())
|
||||
.sigunguCode(request.getSigunguCode())
|
||||
.cntcInfoCode(request.getCntcInfoCode())
|
||||
.chargerId(request.getChargerId())
|
||||
.chargerIp(request.getChargerIp())
|
||||
.chargerNm(request.getChargerNm())
|
||||
.dmndLevyStdde(first != null ? first.getLevyStdde() : null)
|
||||
.dmndInqireSeCode(first != null ? first.getInqireSeCode() : null)
|
||||
.dmndVhrno(first != null ? first.getVhrno() : null)
|
||||
.dmndVin(first != null ? first.getVin() : null)
|
||||
.rgtr(ApiConstant.DEFAULT_REGISTRANT)
|
||||
.build();
|
||||
}
|
||||
|
||||
public static CarBassMatterInqireVO fromResponse(String id, Envelope<BasicResponse> envelope) {
|
||||
if (envelope == null || envelope.getData() == null || envelope.getData().isEmpty()) return null;
|
||||
BasicResponse response = envelope.getData().get(0);
|
||||
CarBassMatterInqireVO.CarBassMatterInqireVOBuilder builder = CarBassMatterInqireVO.builder()
|
||||
.carBassMatterInqireId(id)
|
||||
.cntcResultCode(response.getCntcResultCode())
|
||||
.cntcResultDtls(response.getCntcResultDtls());
|
||||
if (response.getRecord() != null && !response.getRecord().isEmpty()) {
|
||||
BasicResponse.Record record = response.getRecord().get(0);
|
||||
applyRecord(builder, record);
|
||||
}
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
private static void applyRecord(CarBassMatterInqireVO.CarBassMatterInqireVOBuilder builder, BasicResponse.Record record) {
|
||||
builder
|
||||
.prye(record.getPrye()) // 연식
|
||||
.registDe(record.getRegistDe()) // 등록일
|
||||
.ersrRegistSeCode(record.getErsrRegistSeCode()) // 말소 등록 구분 코드
|
||||
.ersrRegistSeNm(record.getErsrRegistSeNm()) // 말소 등록 구분명
|
||||
.ersrRegistDe(record.getErsrRegistDe()) // 말소 등록일
|
||||
.registDetailCode(record.getRegistDetailCode()) // 등록 상세 코드
|
||||
.dsplvl(record.getDsplvl()) // 배기량
|
||||
.useStrnghldLegaldongCode(record.getUseStrnghldLegaldongCode()) // 사용 본거지 법정동 코드
|
||||
.useStrnghldAdstrdCode(record.getUseStrnghldAdstrdCode()) // 사용 본거지 행정동 코드
|
||||
.useStrnghldMntn(record.getUseStrnghldMntn()) // 사용 본거지 산
|
||||
.useStrnghldLnbr(record.getUseStrnghldLnbr()) // 사용 본거지 번지
|
||||
.useStrnghldHo(record.getUseStrnghldHo()) // 사용 본거지 호
|
||||
.useStrnghldAdresNm(record.getUseStrnghldAdresNm()) // 사용 본거지 상세주소
|
||||
.useStrnghldRoadNmCode(record.getUseStrnghldRoadNmCode()) // 사용 본거지 도로명 코드
|
||||
.usgsrhldUndgrndBuldSeCode(record.getUsgsrhldUndgrndBuldSeCode()) // 사용 본거지 지하 건물 구분 코드
|
||||
.useStrnghldBuldMainNo(record.getUseStrnghldBuldMainNo()) // 사용 본거지 건물 주요 번호
|
||||
.useStrnghldBuldSubNo(record.getUseStrnghldBuldSubNo()) // 사용 본거지 건물 부 번호
|
||||
.usgsrhldAdresFull(record.getUsgsrhldAdresFull()) // 사용 본거지 전체주소
|
||||
.mberSeCode(record.getMberSeCode()) // 대표소유자 회원 구분 코드
|
||||
.mberSeNo(record.getMberSeNo()) // 대표소유자 회원 번호
|
||||
.mberNm(record.getMberNm()) // 대표소유자 성명
|
||||
.telno(record.getTelno()) // 대표소유자 전화번호
|
||||
.ownerLegaldongCode(record.getOwnerLegaldongCode()) // 소유자 법정동 코드
|
||||
.ownerAdstrdCode(record.getOwnerAdstrdCode()) // 소유자 행정동 코드
|
||||
.ownerMntn(record.getOwnerMntn()) // 소유자 산
|
||||
.ownerLnbr(record.getOwnerLnbr()) // 소유자 번지
|
||||
.ownerHo(record.getOwnerHo()) // 소유자 호
|
||||
.ownerAdresNm(record.getOwnerAdresNm()) // 소유자 상세주소
|
||||
.ownerRoadNmCode(record.getOwnerRoadNmCode()) // 소유자 도로명 코드
|
||||
.ownerUndgrndBuldSeCode(record.getOwnerUndgrndBuldSeCode()) // 소유자 지하건물 구분 코드
|
||||
.ownerBuldMainNo(record.getOwnerBuldMainNo()) // 소유자 건물 주요 번호
|
||||
.ownerBuldSubNo(record.getOwnerBuldSubNo()) // 소유자 건물 부 번호
|
||||
.ownrWholaddr(record.getOwnerAdresFull()) // 소유자 전체주소
|
||||
.aftrVhrno(record.getAftrVhrno()) // 신 차량번호
|
||||
.useFuelCode(record.getUseFuelCode()) // 사용 연료 코드
|
||||
.prposSeCode(record.getPrposSeCode()) // 용도 구분 코드
|
||||
.mtrsFomNm(record.getMtrsFomNm()) // 원동기 형식명
|
||||
.frntVhrno(record.getFrntVhrno()) // 이전 차량번호
|
||||
.vhrno(record.getVhrno()) // 차량번호
|
||||
.vin(record.getVin()) // 차대번호
|
||||
.cnm(record.getCnm()) // 차명
|
||||
.vhcleTotWt(record.getVhcleTotWt()) // 차량 총 중량
|
||||
.caagEndde(record.getCaagEndde()) // 차령 만료일자
|
||||
.changeDe(record.getChangeDe()) // 차번호 변경시기
|
||||
.vhctyAsortCode(record.getVhctyAsortCode()) // 차종 종별 코드
|
||||
.vhctyTyCode(record.getVhctyTyCode()) // 차종 유형 코드
|
||||
.vhctySeCode(record.getVhctySeCode()) // 차종 분류 코드
|
||||
.mxmmLdg(record.getMxmmLdg()) // 최대 적재량
|
||||
.vhctyAsortNm(record.getVhctyAsortNm()) // 차종 종별명
|
||||
.vhctyTyNm(record.getVhctyTyNm()) // 차종 유형명
|
||||
.vhctySeNm(record.getVhctySeNm()) // 차종 분류명
|
||||
.frstRegistDe(record.getFrstRegistDe()) // 최초 등록일
|
||||
.fomNm(record.getFomNm()) // 형식
|
||||
.acqsDe(record.getAcqsDe()) // 취득 일자
|
||||
.acqsEndDe(record.getAcqsEndDe()) // 취득 종료일자
|
||||
.yblMd(record.getYblMd()) // 제작 년월일
|
||||
.transrRegistDe(record.getTransrRegistDe()) // 이전 등록일
|
||||
.spcfRegistSttusCode(record.getSpcfRegistSttusCode()) // 제원 등록 상태 코드
|
||||
.colorNm(record.getColorNm()) // 색상명
|
||||
.mrtgCo(record.getMrtgCo()) // 저당수
|
||||
.seizrCo(record.getSeizrCo()) // 압류건수
|
||||
.stmdCo(record.getStmdCo()) // 구조변경수
|
||||
.nmplCsdyAt(record.getNmplCsdyAt()) // 번호판 영치 여부
|
||||
.nmplCsdyRemnrDe(record.getNmplCsdyRemnrDe()) // 번호판 영치 최고일
|
||||
.originSeCode(record.getOriginSeCode()) // 출처 구분 코드
|
||||
.nmplStndrdCode(record.getNmplStndrdCode()) // 번호판 규격 코드
|
||||
.acqsAmount(record.getAcqsAmount()) // 취득 금액
|
||||
.insptValidPdBgnde(record.getInsptValidPdBgnde()) // 검사 유효 기간 시작일
|
||||
.insptValidPdEndde(record.getInsptValidPdEndde()) // 검사 유효 기간 종료일
|
||||
.useStrnghldGrcCode(record.getUseStrnghldGrcCode()) // 사용 본거지 관청 코드
|
||||
.tkcarPscapCo(record.getTkcarPscapCo()) // 승차정원수
|
||||
.spmnno(record.getSpmnno()) // 제원관리번호
|
||||
.trvlDstnc(record.getTrvlDstnc()) // 주행거리
|
||||
.frstRegistRqrcno(record.getFrstRegistRqrcno()) // 최초 등록 접수번호
|
||||
.vlntErsrPrvntcNticeDe(record.getVlntErsrPrvntcNticeDe()) // 예고통지일
|
||||
.registInsttNm(record.getRegistInsttNm()) // 등록 기관명
|
||||
.processImprtyResnCode(record.getProcessImprtyResnCode()) // 처리 불가 사유 코드
|
||||
.processImprtyResnDtls(record.getProcessImprtyResnDtls()) // 처리 불가 사유 명세
|
||||
.cbdLt(record.getCbdLt()) // 차체 길이
|
||||
.cbdBt(record.getCbdBt()) // 차체 너비
|
||||
.cbdHg(record.getCbdHg()) // 차체 높이
|
||||
.frstMxmmLdg(record.getFrstMxmmLdg()) // 최초 최대 적재량
|
||||
.fuelCnsmpRt(record.getFuelCnsmpRt()) // 연료 소비율
|
||||
.elctyCmpndFuelCnsmpRt(record.getElctyCmpndFuelCnsmpRt()); // 전기 복합 연료 소비율
|
||||
}
|
||||
|
||||
/**
|
||||
* 자동차 기본 사항 조회 ID (PK)
|
||||
* 형식: CBMI000000000001
|
||||
*/
|
||||
private String carBassMatterInqireId;
|
||||
|
||||
// ===== 요청 정보 =====
|
||||
/**
|
||||
* 정보 시스템 ID
|
||||
*/
|
||||
private String infoSysId;
|
||||
|
||||
/**
|
||||
* 정보 시스템 IP
|
||||
*/
|
||||
private String infoSysIp;
|
||||
|
||||
/**
|
||||
* 시군구 코드
|
||||
*/
|
||||
private String sigunguCode;
|
||||
|
||||
/**
|
||||
* 연계 정보 코드
|
||||
*/
|
||||
private String cntcInfoCode;
|
||||
|
||||
/**
|
||||
* 담당자 ID
|
||||
*/
|
||||
private String chargerId;
|
||||
|
||||
/**
|
||||
* 담당자 IP
|
||||
*/
|
||||
private String chargerIp;
|
||||
|
||||
/**
|
||||
* 담당자명
|
||||
*/
|
||||
private String chargerNm;
|
||||
|
||||
/**
|
||||
* 요청 부과 기준일
|
||||
*/
|
||||
private String dmndLevyStdde;
|
||||
|
||||
/**
|
||||
* 요청 조회 구분 코드
|
||||
*/
|
||||
private String dmndInqireSeCode;
|
||||
|
||||
/**
|
||||
* 요청 자동차등록번호
|
||||
*/
|
||||
private String dmndVhrno;
|
||||
|
||||
/**
|
||||
* 요청 차대번호
|
||||
*/
|
||||
private String dmndVin;
|
||||
|
||||
// ===== 응답 정보 (결과 수신 시 UPDATE) =====
|
||||
/**
|
||||
* 연계 결과 코드
|
||||
*/
|
||||
private String cntcResultCode;
|
||||
|
||||
/**
|
||||
* 연계 결과 상세
|
||||
*/
|
||||
private String cntcResultDtls;
|
||||
|
||||
/**
|
||||
* 연식
|
||||
*/
|
||||
private String prye;
|
||||
|
||||
/**
|
||||
* 등록일
|
||||
*/
|
||||
private String registDe;
|
||||
|
||||
/**
|
||||
* 말소 등록 구분 코드
|
||||
*/
|
||||
private String ersrRegistSeCode;
|
||||
|
||||
/**
|
||||
* 말소 등록 구분명
|
||||
*/
|
||||
private String ersrRegistSeNm;
|
||||
|
||||
/**
|
||||
* 말소 등록일
|
||||
*/
|
||||
private String ersrRegistDe;
|
||||
|
||||
/**
|
||||
* 등록 상세 코드
|
||||
*/
|
||||
private String registDetailCode;
|
||||
|
||||
/**
|
||||
* 배기량
|
||||
*/
|
||||
private String dsplvl;
|
||||
|
||||
/**
|
||||
* 사용 본거지 법정동 코드
|
||||
*/
|
||||
private String useStrnghldLegaldongCode;
|
||||
|
||||
/**
|
||||
* 사용 본거지 행정동 코드
|
||||
*/
|
||||
private String useStrnghldAdstrdCode;
|
||||
|
||||
/**
|
||||
* 사용 본거지 산
|
||||
*/
|
||||
private String useStrnghldMntn;
|
||||
|
||||
/**
|
||||
* 사용 본거지 번지
|
||||
*/
|
||||
private String useStrnghldLnbr;
|
||||
|
||||
/**
|
||||
* 사용 본거지 호
|
||||
*/
|
||||
private String useStrnghldHo;
|
||||
|
||||
/**
|
||||
* 사용 본거지 상세주소
|
||||
*/
|
||||
private String useStrnghldAdresNm;
|
||||
|
||||
/**
|
||||
* 사용 본거지 도로명 코드
|
||||
*/
|
||||
private String useStrnghldRoadNmCode;
|
||||
|
||||
/**
|
||||
* 사용 본거지 지하 건물 구분 코드
|
||||
*/
|
||||
private String usgsrhldUndgrndBuldSeCode;
|
||||
|
||||
/**
|
||||
* 사용 본거지 건물 주요 번호
|
||||
*/
|
||||
private String useStrnghldBuldMainNo;
|
||||
|
||||
/**
|
||||
* 사용 본거지 건물 부 번호
|
||||
*/
|
||||
private String useStrnghldBuldSubNo;
|
||||
|
||||
/**
|
||||
* 사용 본거지 전체주소
|
||||
*/
|
||||
private String usgsrhldAdresFull;
|
||||
|
||||
/**
|
||||
* 대표소유자 회원 구분 코드
|
||||
*/
|
||||
private String mberSeCode;
|
||||
|
||||
/**
|
||||
* 대표소유자 회원 번호
|
||||
*/
|
||||
private String mberSeNo;
|
||||
|
||||
/**
|
||||
* 대표소유자 전화번호
|
||||
*/
|
||||
private String telno;
|
||||
|
||||
/**
|
||||
* 소유자 법정동 코드
|
||||
*/
|
||||
private String ownerLegaldongCode;
|
||||
|
||||
/**
|
||||
* 소유자 행정동 코드
|
||||
*/
|
||||
private String ownerAdstrdCode;
|
||||
|
||||
/**
|
||||
* 소유자 산
|
||||
*/
|
||||
private String ownerMntn;
|
||||
|
||||
/**
|
||||
* 소유자 번지
|
||||
*/
|
||||
private String ownerLnbr;
|
||||
|
||||
/**
|
||||
* 소유자 호
|
||||
*/
|
||||
private String ownerHo;
|
||||
|
||||
/**
|
||||
* 소유자 상세주소
|
||||
*/
|
||||
private String ownerAdresNm;
|
||||
|
||||
/**
|
||||
* 소유자 도로명 코드
|
||||
*/
|
||||
private String ownerRoadNmCode;
|
||||
|
||||
/**
|
||||
* 소유자 지하건물 구분 코드
|
||||
*/
|
||||
private String ownerUndgrndBuldSeCode;
|
||||
|
||||
/**
|
||||
* 소유자 건물 주요 번호
|
||||
*/
|
||||
private String ownerBuldMainNo;
|
||||
|
||||
/**
|
||||
* 소유자 건물 부 번호
|
||||
*/
|
||||
private String ownerBuldSubNo;
|
||||
|
||||
/**
|
||||
* 소유자 전체주소
|
||||
*/
|
||||
private String ownrWholaddr;
|
||||
|
||||
/**
|
||||
* 신 차량번호
|
||||
*/
|
||||
private String aftrVhrno;
|
||||
|
||||
/**
|
||||
* 사용 연료 코드
|
||||
*/
|
||||
private String useFuelCode;
|
||||
|
||||
/**
|
||||
* 용도 구분 코드
|
||||
*/
|
||||
private String prposSeCode;
|
||||
|
||||
/**
|
||||
* 원동기 형식명
|
||||
*/
|
||||
private String mtrsFomNm;
|
||||
|
||||
/**
|
||||
* 이전 차량번호
|
||||
*/
|
||||
private String frntVhrno;
|
||||
|
||||
/**
|
||||
* 차량번호
|
||||
*/
|
||||
private String vhrno;
|
||||
|
||||
/**
|
||||
* 차대번호
|
||||
*/
|
||||
private String vin;
|
||||
|
||||
/**
|
||||
* 차명
|
||||
*/
|
||||
private String cnm;
|
||||
|
||||
/**
|
||||
* 차량 총 중량
|
||||
*/
|
||||
private String vhcleTotWt;
|
||||
|
||||
/**
|
||||
* 차령 만료일자
|
||||
*/
|
||||
private String caagEndde;
|
||||
|
||||
/**
|
||||
* 차번호 변경시기
|
||||
*/
|
||||
private String changeDe;
|
||||
|
||||
/**
|
||||
* 차종 종별 코드
|
||||
*/
|
||||
private String vhctyAsortCode;
|
||||
|
||||
/**
|
||||
* 차종 유형 코드
|
||||
*/
|
||||
private String vhctyTyCode;
|
||||
|
||||
/**
|
||||
* 차종 분류 코드
|
||||
*/
|
||||
private String vhctySeCode;
|
||||
|
||||
/**
|
||||
* 최대 적재량
|
||||
*/
|
||||
private String mxmmLdg;
|
||||
|
||||
/**
|
||||
* 차종 종별명
|
||||
*/
|
||||
private String vhctyAsortNm;
|
||||
|
||||
/**
|
||||
* 차종 유형명
|
||||
*/
|
||||
private String vhctyTyNm;
|
||||
|
||||
/**
|
||||
* 차종 분류명
|
||||
*/
|
||||
private String vhctySeNm;
|
||||
|
||||
/**
|
||||
* 최초 등록일
|
||||
*/
|
||||
private String frstRegistDe;
|
||||
|
||||
/**
|
||||
* 형식
|
||||
*/
|
||||
private String fomNm;
|
||||
|
||||
/**
|
||||
* 취득 일자
|
||||
*/
|
||||
private String acqsDe;
|
||||
|
||||
/**
|
||||
* 취득 종료일자
|
||||
*/
|
||||
private String acqsEndDe;
|
||||
|
||||
/**
|
||||
* 제작 년월일
|
||||
*/
|
||||
private String yblMd;
|
||||
|
||||
/**
|
||||
* 이전 등록일
|
||||
*/
|
||||
private String transrRegistDe;
|
||||
|
||||
/**
|
||||
* 제원 등록 상태 코드
|
||||
*/
|
||||
private String spcfRegistSttusCode;
|
||||
|
||||
/**
|
||||
* 색상명
|
||||
*/
|
||||
private String colorNm;
|
||||
|
||||
/**
|
||||
* 저당수
|
||||
*/
|
||||
private String mrtgCo;
|
||||
|
||||
/**
|
||||
* 압류건수
|
||||
*/
|
||||
private String seizrCo;
|
||||
|
||||
/**
|
||||
* 구조변경수
|
||||
*/
|
||||
private String stmdCo;
|
||||
|
||||
/**
|
||||
* 번호판 영치 여부
|
||||
*/
|
||||
private String nmplCsdyAt;
|
||||
|
||||
/**
|
||||
* 번호판 영치 최고일
|
||||
*/
|
||||
private String nmplCsdyRemnrDe;
|
||||
|
||||
/**
|
||||
* 출처 구분 코드
|
||||
*/
|
||||
private String originSeCode;
|
||||
|
||||
/**
|
||||
* 번호판 규격 코드
|
||||
*/
|
||||
private String nmplStndrdCode;
|
||||
|
||||
/**
|
||||
* 취득 금액
|
||||
*/
|
||||
private String acqsAmount;
|
||||
|
||||
/**
|
||||
* 검사 유효 기간 시작일
|
||||
*/
|
||||
private String insptValidPdBgnde;
|
||||
|
||||
/**
|
||||
* 검사 유효 기간 종료일
|
||||
*/
|
||||
private String insptValidPdEndde;
|
||||
|
||||
/**
|
||||
* 사용 본거지 관청 코드
|
||||
*/
|
||||
private String useStrnghldGrcCode;
|
||||
|
||||
/**
|
||||
* 승차정원수
|
||||
*/
|
||||
private String tkcarPscapCo;
|
||||
|
||||
/**
|
||||
* 제원관리번호
|
||||
*/
|
||||
private String spmnno;
|
||||
|
||||
/**
|
||||
* 주행거리
|
||||
*/
|
||||
private String trvlDstnc;
|
||||
|
||||
/**
|
||||
* 최초 등록 접수번호
|
||||
*/
|
||||
private String frstRegistRqrcno;
|
||||
|
||||
/**
|
||||
* 예고통지일
|
||||
*/
|
||||
private String vlntErsrPrvntcNticeDe;
|
||||
|
||||
/**
|
||||
* 등록 기관명
|
||||
*/
|
||||
private String registInsttNm;
|
||||
|
||||
/**
|
||||
* 처리 불가 사유 코드
|
||||
*/
|
||||
private String processImprtyResnCode;
|
||||
|
||||
/**
|
||||
* 처리 불가 사유 명세
|
||||
*/
|
||||
private String processImprtyResnDtls;
|
||||
|
||||
/**
|
||||
* 차체 길이
|
||||
*/
|
||||
private String cbdLt;
|
||||
|
||||
/**
|
||||
* 차체 너비
|
||||
*/
|
||||
private String cbdBt;
|
||||
|
||||
/**
|
||||
* 차체 높이
|
||||
*/
|
||||
private String cbdHg;
|
||||
|
||||
/**
|
||||
* 최초 최대 적재량
|
||||
*/
|
||||
private String frstMxmmLdg;
|
||||
|
||||
/**
|
||||
* 연료 소비율
|
||||
*/
|
||||
private String fuelCnsmpRt;
|
||||
|
||||
/**
|
||||
* 전기 복합 연료 소비율
|
||||
*/
|
||||
private String elctyCmpndFuelCnsmpRt;
|
||||
|
||||
/**
|
||||
* 등록 일시
|
||||
*/
|
||||
private LocalDateTime regDt;
|
||||
|
||||
/**
|
||||
* 등록자
|
||||
*/
|
||||
private String rgtr;
|
||||
|
||||
/**
|
||||
* 대표소유자 성명
|
||||
*/
|
||||
private String mberNm;
|
||||
}
|
||||
@ -1,73 +0,0 @@
|
||||
package com.vmis.interfaceapp.model.ledger;
|
||||
|
||||
import com.vmis.interfaceapp.config.ApiConstant;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 자동차 등록 원부(갑) 상세 엔티티 VO
|
||||
*
|
||||
* <p>tb_car_ledger_frmbk_dtl 테이블 매핑</p>
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class CarLedgerFrmbkDtlVO {
|
||||
|
||||
// ==== Static factory/mapping methods (moved from Service) ====
|
||||
public static List<CarLedgerFrmbkDtlVO> listFromResponse(LedgerResponse res, String masterId) {
|
||||
List<CarLedgerFrmbkDtlVO> list = new ArrayList<>();
|
||||
if (res == null || res.getRecord() == null) return list;
|
||||
for (LedgerResponse.Record r : res.getRecord()) {
|
||||
CarLedgerFrmbkDtlVO vo = CarLedgerFrmbkDtlVO.builder()
|
||||
.carLedgerFrmbkId(masterId) // 원부 마스터 ID (FK)
|
||||
.mainchk(r.getMainchk()) // 주요 체크
|
||||
.changeJobSeCode(r.getChangeJobSeCode()) // 변경 작업 구분 코드
|
||||
.mainno(r.getMainno()) // 주번호
|
||||
.subno(r.getSubno()) // 부번호
|
||||
.dtls(r.getDtls()) // 상세 내역
|
||||
.rqrcno(r.getRqrcno()) // 접수번호
|
||||
.vhmno(r.getVhmno()) // 차량관리번호
|
||||
.ledgerGroupNo(r.getLedgerGroupNo()) // 원부 그룹 번호
|
||||
.ledgerIndvdlzNo(r.getLedgerIndvdlzNo()) // 원부 개별화 번호
|
||||
.gubunNm(r.getGubunNm()) // 구분명
|
||||
.changeDe(r.getChangeDe()) // 변경일자
|
||||
.detailSn(r.getDetailSn()) // 상세 순번
|
||||
.flag(r.getFlag()) // 플래그
|
||||
.rgtr(ApiConstant.DEFAULT_REGISTRANT) // 등록자
|
||||
.build();
|
||||
list.add(vo);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
// PK
|
||||
private String carLedgerFrmbkDtlId;
|
||||
|
||||
// FK
|
||||
private String carLedgerFrmbkId;
|
||||
|
||||
// 본문
|
||||
private String mainchk;
|
||||
private String changeJobSeCode;
|
||||
private String mainno;
|
||||
private String subno;
|
||||
private String dtls;
|
||||
private String rqrcno;
|
||||
private String vhmno;
|
||||
private String ledgerGroupNo;
|
||||
private String ledgerIndvdlzNo;
|
||||
private String gubunNm;
|
||||
private String changeDe;
|
||||
private String detailSn;
|
||||
private String flag;
|
||||
|
||||
// 감사
|
||||
private String rgtr;
|
||||
}
|
||||
@ -1,192 +0,0 @@
|
||||
package com.vmis.interfaceapp.model.ledger;
|
||||
|
||||
import com.vmis.interfaceapp.config.ApiConstant;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 자동차 등록 원부(갑) 마스터 엔티티 VO
|
||||
*
|
||||
* <p>tb_car_ledger_frmbk 테이블 매핑</p>
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class CarLedgerFrmbkVO {
|
||||
|
||||
// ==== Static factory/mapping methods (moved from Service) ====
|
||||
public static CarLedgerFrmbkVO fromRequest(com.vmis.interfaceapp.model.ledger.LedgerRequest request) {
|
||||
return CarLedgerFrmbkVO.builder()
|
||||
.infoSysId(request.getInfoSysId())
|
||||
.infoSysIp(request.getInfoSysIp())
|
||||
.sigunguCode(request.getSigunguCode())
|
||||
.cntcInfoCode(request.getCntcInfoCode())
|
||||
.chargerId(request.getChargerId())
|
||||
.chargerIp(request.getChargerIp())
|
||||
.chargerNm(request.getChargerNm())
|
||||
.dmndVhrno(request.getVhrno())
|
||||
.rgtr(ApiConstant.DEFAULT_REGISTRANT)
|
||||
.build();
|
||||
}
|
||||
|
||||
public static CarLedgerFrmbkVO fromResponseMaster(String id, com.vmis.interfaceapp.model.ledger.LedgerResponse res) {
|
||||
return CarLedgerFrmbkVO.builder()
|
||||
.carLedgerFrmbkId(id) // 등록원부 ID
|
||||
.cntcResultCode(res.getCntcResultCode()) // 연계 결과 코드
|
||||
.cntcResultDtls(res.getCntcResultDtls()) // 연계 결과 상세
|
||||
.ledgerGroupNo(res.getLedgerGroupNo()) // 원부 그룹 번호
|
||||
.ledgerIndvdlzNo(res.getLedgerIndvdlzNo()) // 원부 개별화 번호
|
||||
.vhmno(res.getVhmno()) // 차량관리번호
|
||||
.vhrno(res.getVhrno()) // 차량번호
|
||||
.vin(res.getVin()) // 차대번호
|
||||
.vhctyAsortCode(res.getVhctyAsortCode()) // 차종 종별 코드
|
||||
.vhctyAsortNm(res.getVhctyAsortNm()) // 차종 종별명
|
||||
.cnm(res.getCnm()) // 차명
|
||||
.colorCode(res.getColorCode()) // 색상 코드
|
||||
.colorNm(res.getColorNm()) // 색상명
|
||||
.nmplStndrdCode(res.getNmplStndrdCode()) // 번호판 규격 코드
|
||||
.nmplStndrdNm(res.getNmplStndrdNm()) // 번호판 규격명
|
||||
.prposSeCode(res.getPrposSeCode()) // 용도 구분 코드
|
||||
.prposSeNm(res.getPrposSeNm()) // 용도 구분명
|
||||
.mtrsFomNm(res.getMtrsFomNm()) // 원동기 형식명
|
||||
.fomNm(res.getFomNm()) // 형식명
|
||||
.acqsAmount(res.getAcqsAmount()) // 취득 금액
|
||||
.registDetailCode(res.getRegistDetailCode()) // 등록 상세 코드
|
||||
.registDetailNm(res.getRegistDetailNm()) // 등록 상세명
|
||||
.frstRegistDe(res.getFrstRegistDe()) // 최초 등록일
|
||||
.caagEndde(res.getCaagEndde()) // 차령 만료일자
|
||||
.prye(res.getPrye()) // 연식
|
||||
.spmnno1(res.getSpmnno1()) // 제원관리번호1
|
||||
.spmnno2(res.getSpmnno2()) // 제원관리번호2
|
||||
.yblMd(res.getYblMd()) // 제작 년월일
|
||||
.trvlDstnc(res.getTrvlDstnc()) // 주행거리
|
||||
.insptValidPdBgnde(res.getInsptValidPdBgnde()) // 검사 유효 기간 시작일
|
||||
.insptValidPdEndde(res.getInsptValidPdEndde()) // 검사 유효 기간 종료일
|
||||
.chckValidPdBgnde(res.getChckValidPdBgnde()) // 점검 유효 기간 시작일
|
||||
.chckValidPdEndde(res.getChckValidPdEndde()) // 점검 유효 기간 종료일
|
||||
.registReqstSeNm(res.getRegistReqstSeNm()) // 등록 청구 구분명
|
||||
.frstRegistRqrcno(res.getFrstRegistRqrcno()) // 최초 등록 접수번호
|
||||
.nmplCsdyRemnrDe(res.getNmplCsdyRemnrDe()) // 번호판 영치 최고일
|
||||
.nmplCsdyAt(res.getNmplCsdyAt()) // 번호판 영치 여부
|
||||
.bssUsePd(res.getBssUsePd()) // 사업용 기간
|
||||
.octhtErsrPrvntcNticeDe(res.getOcthtErsrPrvntcNticeDe()) // 직권말소 예고통지일
|
||||
.ersrRegistDe(res.getErsrRegistDe()) // 말소 등록일
|
||||
.ersrRegistSeCode(res.getErsrRegistSeCode()) // 말소 등록 구분 코드
|
||||
.ersrRegistSeNm(res.getErsrRegistSeNm()) // 말소 등록 구분명
|
||||
.mrtgcnt(res.getMrtgcnt()) // 저당건수
|
||||
.vhclecnt(res.getVhclecnt()) // 압류건수
|
||||
.stmdcnt(res.getStmdcnt()) // 구조변경건수
|
||||
.adres1(res.getAdres1()) // 주소1
|
||||
.adresNm1(res.getAdresNm1()) // 주소명1
|
||||
.adres(res.getAdres()) // 주소
|
||||
.adresNm(res.getAdresNm()) // 주소명
|
||||
.indvdlBsnmAt(res.getIndvdlBsnmAt()) // 개인사업자 여부
|
||||
.telno(res.getTelno()) // 전화번호
|
||||
.mberNm(res.getMberNm()) // 소유자명
|
||||
.mberSeCode(res.getMberSeCode()) // 소유자 구분 코드
|
||||
.mberSeNo(res.getMberSeNo()) // 소유자 번호
|
||||
.taxxmptTrgterSeCode(res.getTaxxmptTrgterSeCode()) // 면세 대상 구분 코드
|
||||
.taxxmptTrgterSeCodeNm(res.getTaxxmptTrgterSeCodeNm()) // 면세 대상 구분명
|
||||
.cntMatter(res.getCntMatter()) // 내용 사항
|
||||
.emdNm(res.getEmdNm()) // 읍면동명
|
||||
.prvntccnt(res.getPrvntccnt()) // 예방건수
|
||||
.xportFlflAtSttemntDe(res.getXportFlflAtSttemntDe()) // 수출이행신고일
|
||||
.partnRqrcno(res.getPartnRqrcno()) // 협력업체 접수번호
|
||||
.build();
|
||||
}
|
||||
|
||||
// PK
|
||||
private String carLedgerFrmbkId;
|
||||
|
||||
// 요청(헤더/본문) 정보
|
||||
private String infoSysId;
|
||||
private String infoSysIp;
|
||||
private String sigunguCode;
|
||||
private String cntcInfoCode;
|
||||
private String chargerId;
|
||||
private String chargerIp;
|
||||
private String chargerNm;
|
||||
|
||||
// 요청 본문
|
||||
private String dmndVhrno;
|
||||
private String dmndOnesInformationOpen;
|
||||
private String dmndCpttrNm;
|
||||
private String dmndCpttrIhidnum;
|
||||
private String dmndCpttrLegaldongCode;
|
||||
private String dmndRouteSeCode;
|
||||
private String dmndDetailExpression;
|
||||
private String dmndInqireSeCode;
|
||||
|
||||
// 응답 요약 정보
|
||||
private String cntcResultCode;
|
||||
private String cntcResultDtls;
|
||||
|
||||
// 응답 본문(마스터)
|
||||
private String ledgerGroupNo;
|
||||
private String ledgerIndvdlzNo;
|
||||
private String vhmno;
|
||||
private String vhrno;
|
||||
private String vin;
|
||||
private String vhctyAsortCode;
|
||||
private String vhctyAsortNm;
|
||||
private String cnm;
|
||||
private String colorCode;
|
||||
private String colorNm;
|
||||
private String nmplStndrdCode;
|
||||
private String nmplStndrdNm;
|
||||
private String prposSeCode;
|
||||
private String prposSeNm;
|
||||
private String mtrsFomNm;
|
||||
private String fomNm;
|
||||
private String acqsAmount;
|
||||
private String registDetailCode;
|
||||
private String registDetailNm;
|
||||
private String frstRegistDe;
|
||||
private String caagEndde;
|
||||
private String prye;
|
||||
private String spmnno1;
|
||||
private String spmnno2;
|
||||
private String yblMd;
|
||||
private String trvlDstnc;
|
||||
private String insptValidPdBgnde;
|
||||
private String insptValidPdEndde;
|
||||
private String chckValidPdBgnde;
|
||||
private String chckValidPdEndde;
|
||||
private String registReqstSeNm;
|
||||
private String frstRegistRqrcno;
|
||||
private String nmplCsdyRemnrDe;
|
||||
private String nmplCsdyAt;
|
||||
private String bssUsePd;
|
||||
private String octhtErsrPrvntcNticeDe;
|
||||
private String ersrRegistDe;
|
||||
private String ersrRegistSeCode;
|
||||
private String ersrRegistSeNm;
|
||||
private String mrtgcnt;
|
||||
private String vhclecnt;
|
||||
private String stmdcnt;
|
||||
private String adres1;
|
||||
private String adresNm1;
|
||||
private String adres;
|
||||
private String adresNm;
|
||||
private String indvdlBsnmAt;
|
||||
private String telno;
|
||||
private String mberNm;
|
||||
private String mberSeCode;
|
||||
private String mberSeNo;
|
||||
private String taxxmptTrgterSeCode;
|
||||
private String taxxmptTrgterSeCodeNm;
|
||||
private String cntMatter;
|
||||
private String emdNm;
|
||||
private String prvntccnt;
|
||||
private String xportFlflAtSttemntDe;
|
||||
private String partnRqrcno;
|
||||
private String frstTrnsfrDe;
|
||||
private String processImprtyResnCode;
|
||||
private String processImprtyResnDtls;
|
||||
|
||||
// 감사
|
||||
private String rgtr;
|
||||
}
|
||||
@ -1,79 +0,0 @@
|
||||
package com.vmis.interfaceapp.model.ledger;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.Size;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
@Schema(description = "자동차등록원부(갑) 요청 항목")
|
||||
@Getter
|
||||
@Setter
|
||||
public class LedgerRequest {
|
||||
|
||||
// 본문 공통 메타 (application.yml에서 자동 설정)
|
||||
@Schema(description = "정보시스템ID (자동설정: vmis.system.infoSysId)", example = "41-345")
|
||||
@JsonProperty("INFO_SYS_ID")
|
||||
private String infoSysId;
|
||||
|
||||
@Schema(description = "정보시스템IP (자동설정: vmis.system.infoSysIp)", example = "105.19.10.135")
|
||||
@JsonProperty("INFO_SYS_IP")
|
||||
private String infoSysIp;
|
||||
|
||||
@Schema(description = "시군구코드 (자동설정: vmis.system.sigunguCode)", example = "41460")
|
||||
@JsonProperty("SIGUNGU_CODE")
|
||||
private String sigunguCode;
|
||||
|
||||
// 서비스별 필드 (application.yml에서 자동 설정)
|
||||
@Schema(description = "연계정보코드 (자동설정: vmis.gov.services.ledger.cntcInfoCode)", example = "AC1_FD11_02")
|
||||
@JsonProperty("CNTC_INFO_CODE")
|
||||
private String cntcInfoCode;
|
||||
|
||||
@Schema(description = "담당자ID (자동설정: vmis.system.chargerId)", example = "")
|
||||
@JsonProperty("CHARGER_ID")
|
||||
private String chargerId;
|
||||
|
||||
@Schema(description = "담당자IP (자동설정: vmis.system.chargerIp)", example = "")
|
||||
@JsonProperty("CHARGER_IP")
|
||||
private String chargerIp;
|
||||
|
||||
@Schema(description = "담당자명(사용자) (자동설정: vmis.system.chargerNm)", example = "")
|
||||
@JsonProperty("CHARGER_NM")
|
||||
private String chargerNm;
|
||||
|
||||
@Schema(description = "자동차등록번호")
|
||||
@JsonProperty("VHRNO")
|
||||
private String vhrno;
|
||||
|
||||
@Schema(description = "개인정보공개 {1:소유자공개, 2:비공개, 3:비공개(주민등록번호), 4:비공개(사용본거지)}")
|
||||
@JsonProperty("ONES_INFORMATION_OPEN")
|
||||
private String onesInformationOpen;
|
||||
|
||||
@Schema(description = "민원인성명")
|
||||
@JsonProperty("CPTTR_NM")
|
||||
private String cpttrNm;
|
||||
|
||||
@Schema(description = "민원인주민번호")
|
||||
@JsonProperty("CPTTR_IHIDNUM")
|
||||
@Size(max = 13)
|
||||
private String cpttrIhidnum;
|
||||
|
||||
@Schema(description = "민원인법정동코드")
|
||||
@JsonProperty("CPTTR_LEGALDONG_CODE")
|
||||
private String cpttrLegaldongCode;
|
||||
|
||||
@Schema(description = "경로구분코드 고정코드:3")
|
||||
@JsonProperty("ROUTE_SE_CODE")
|
||||
private String routeSeCode;
|
||||
|
||||
@Schema(description = "내역표시 {1:전체내역, 2:최종내역}")
|
||||
@JsonProperty("DETAIL_EXPRESSION")
|
||||
private String detailExpression;
|
||||
|
||||
@Schema(description = "조회구분코드 (자동설정: 1:열람 고정)")
|
||||
@JsonProperty("INQIRE_SE_CODE")
|
||||
private String inqireSeCode;
|
||||
|
||||
}
|
||||
@ -1,223 +0,0 @@
|
||||
package com.vmis.interfaceapp.model.ledger;
|
||||
|
||||
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;
|
||||
|
||||
@JsonProperty("SPMNNO1")
|
||||
private String spmnno1;
|
||||
|
||||
@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;
|
||||
|
||||
@JsonProperty("ADRES1")
|
||||
private String adres1;
|
||||
|
||||
@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;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,79 @@
|
||||
package com.vmis.interfaceapp.model.ledger;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.Size;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
@Schema(description = "자동차등록원부(갑) 요청 항목 (신버전)")
|
||||
@Getter
|
||||
@Setter
|
||||
public class NewLedgerRequest {
|
||||
|
||||
// 본문 공통 메타 (application.yml에서 자동 설정)
|
||||
@Schema(description = "정보시스템ID (자동설정: new.vmis.system.infoSysId)", example = "41-345")
|
||||
@JsonProperty("INFO_SYS_ID")
|
||||
private String infoSysId;
|
||||
|
||||
@Schema(description = "정보시스템IP주소 (자동설정: new.vmis.system.infoSysIpAddr)", example = "105.19.10.135")
|
||||
@JsonProperty("INFO_SYS_IP_ADDR")
|
||||
private String infoSysIpAddr;
|
||||
|
||||
@Schema(description = "시군구코드 (자동설정: new.vmis.system.sggCd)", example = "41460")
|
||||
@JsonProperty("SGG_CD")
|
||||
private String sggCd;
|
||||
|
||||
// 서비스별 필드 (application.yml에서 자동 설정)
|
||||
@Schema(description = "연계정보코드 (자동설정: new.vmis.gov.services.ledger.linkInfoCd)", example = "AC1_FD11_02")
|
||||
@JsonProperty("LINK_INFO_CD")
|
||||
private String linkInfoCd;
|
||||
|
||||
@Schema(description = "담당자ID (자동설정: new.vmis.system.picId)", example = "")
|
||||
@JsonProperty("PIC_ID")
|
||||
private String picId;
|
||||
|
||||
@Schema(description = "담당자IP주소 (자동설정: new.vmis.system.picIpAddr)", example = "")
|
||||
@JsonProperty("PIC_IP_ADDR")
|
||||
private String picIpAddr;
|
||||
|
||||
@Schema(description = "담당자명 (자동설정: new.vmis.system.picNm)", example = "")
|
||||
@JsonProperty("PIC_NM")
|
||||
private String picNm;
|
||||
|
||||
@Schema(description = "자동차등록번호")
|
||||
@JsonProperty("VHRNO")
|
||||
private String vhrno;
|
||||
|
||||
@Schema(description = "개인정보공개 {1:소유자공개, 2:비공개, 3:비공개(주민등록번호), 4:비공개(사용본거지)}")
|
||||
@JsonProperty("PRVC_RLS")
|
||||
private String prvcRls;
|
||||
|
||||
@Schema(description = "민원인성명")
|
||||
@JsonProperty("CVLPR_NM")
|
||||
private String cvlprNm;
|
||||
|
||||
@Schema(description = "민원인주민번호")
|
||||
@JsonProperty("CVLPR_IDECNO")
|
||||
@Size(max = 13)
|
||||
private String cvlprIdecno;
|
||||
|
||||
@Schema(description = "민원인법정동코드")
|
||||
@JsonProperty("CVLPR_STDG_CD")
|
||||
private String cvlprStdgCd;
|
||||
|
||||
@Schema(description = "경로구분코드 고정코드:3")
|
||||
@JsonProperty("PATH_SE_CD")
|
||||
private String pathSeCd;
|
||||
|
||||
@Schema(description = "내역표시 {1:전체내역, 2:최종내역}")
|
||||
@JsonProperty("DSCTN_INDCT")
|
||||
private String dsctnIndct;
|
||||
|
||||
@Schema(description = "조회구분코드 (자동설정: 1:열람 고정)")
|
||||
@JsonProperty("INQ_SE_CD")
|
||||
private String inqSeCd;
|
||||
|
||||
}
|
||||
@ -0,0 +1,343 @@
|
||||
package com.vmis.interfaceapp.model.ledger;
|
||||
|
||||
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 NewLedgerResponse {
|
||||
|
||||
@JsonProperty("CNTC_RESULT_CODE")
|
||||
private String cntcResultCode;
|
||||
|
||||
@JsonProperty("CNTC_RESULT_DTLS")
|
||||
private String cntcResultDtls;
|
||||
|
||||
/** 원부그룹번호 */
|
||||
@JsonProperty("LEDGER_GROUP_NO")
|
||||
private String ledgerGroupNo;
|
||||
|
||||
/** 원부개별번호 */
|
||||
@JsonProperty("LEDGER_INDIV_NO")
|
||||
private String ledgerIndivNo;
|
||||
|
||||
/** 차량관리번호 */
|
||||
@JsonProperty("VHMNO")
|
||||
private String vhmno;
|
||||
|
||||
/** 차량등록번호 */
|
||||
@JsonProperty("VHRNO")
|
||||
private String vhrno;
|
||||
|
||||
/** 차대번호 */
|
||||
@JsonProperty("VIN")
|
||||
private String vin;
|
||||
|
||||
/** 차종종별코드 */
|
||||
@JsonProperty("CARMDL_ASORT_CD")
|
||||
private String carmdlAsortCd;
|
||||
|
||||
/** 차종종별명 */
|
||||
@JsonProperty("CARMDL_ASORT_NM")
|
||||
private String carmdlAsortNm;
|
||||
|
||||
/** 차명 */
|
||||
@JsonProperty("ATMB_NM")
|
||||
private String atmbNm;
|
||||
|
||||
/** 색상코드 */
|
||||
@JsonProperty("COLOR_CD")
|
||||
private String colorCd;
|
||||
|
||||
/** 색상명 */
|
||||
@JsonProperty("COLOR_NM")
|
||||
private String colorNm;
|
||||
|
||||
/** 번호판규격코드 */
|
||||
@JsonProperty("NOPLT_SPCFCT_CD")
|
||||
private String nopltSpcfctCd;
|
||||
|
||||
/** 번호판규격명 */
|
||||
@JsonProperty("NOPLT_SPCFCT_NM")
|
||||
private String nopltSpcfctNm;
|
||||
|
||||
/** 용도구분코드 */
|
||||
@JsonProperty("USG_SE_CD")
|
||||
private String usgSeCd;
|
||||
|
||||
/** 용도구분명 */
|
||||
@JsonProperty("USG_SE_NM")
|
||||
private String usgSeNm;
|
||||
|
||||
/** 원동기형식명 */
|
||||
@JsonProperty("MTRS_FOM_NM")
|
||||
private String mtrsFomNm;
|
||||
|
||||
/** 형식명 */
|
||||
@JsonProperty("FOM_NM")
|
||||
private String fomNm;
|
||||
|
||||
/** 취득금액 */
|
||||
@JsonProperty("ACQS_AMT")
|
||||
private String acqsAmt;
|
||||
|
||||
/** 등록상세코드 */
|
||||
@JsonProperty("REG_DTL_CD")
|
||||
private String regDtlCd;
|
||||
|
||||
/** 등록상세명 */
|
||||
@JsonProperty("REG_DTL_NM")
|
||||
private String regDtlNm;
|
||||
|
||||
/** 최초등록일 */
|
||||
@JsonProperty("FRST_REG_YMD")
|
||||
private String frstRegYmd;
|
||||
|
||||
/** 차령종료일 */
|
||||
@JsonProperty("VEAG_END_YMD")
|
||||
private String veagEndYmd;
|
||||
|
||||
/** 연식 */
|
||||
@JsonProperty("YRIDNW")
|
||||
private String yridnw;
|
||||
|
||||
/** 제원관리번호1 */
|
||||
@JsonProperty("SPMNNO_1")
|
||||
private String spmnno1;
|
||||
|
||||
/** 제원관리번호2 */
|
||||
@JsonProperty("SPMNNO_2")
|
||||
private String spmnno2;
|
||||
|
||||
/** 제작년월일 */
|
||||
@JsonProperty("FBCTN_YMD")
|
||||
private String fbctnYmd;
|
||||
|
||||
/** 주행거리 */
|
||||
@JsonProperty("DRVNG_DSTNC")
|
||||
private String drvngDstnc;
|
||||
|
||||
/** 검사유효기간시작일 */
|
||||
@JsonProperty("INSP_VLD_PD_BGNG_YMD")
|
||||
private String inspVldPdBgngYmd;
|
||||
|
||||
/** 검사유효기간종료일 */
|
||||
@JsonProperty("INSP_VLD_PD_END_YMD")
|
||||
private String inspVldPdEndYmd;
|
||||
|
||||
/** 점검유효기간시작일 */
|
||||
@JsonProperty("CHCK_VLD_PD_BGNG_YMD")
|
||||
private String chckVldPdBgngYmd;
|
||||
|
||||
/** 점검유효기간종료일 */
|
||||
@JsonProperty("CHCK_VLD_PD_END_YMD")
|
||||
private String chckVldPdEndYmd;
|
||||
|
||||
/** 등록신청구분명 */
|
||||
@JsonProperty("REG_APLY_SE_NM")
|
||||
private String regAplySeNm;
|
||||
|
||||
/** 최초등록접수번호 */
|
||||
@JsonProperty("FRST_REG_APLY_RCPT_NO")
|
||||
private String frstRegAplyRcptNo;
|
||||
|
||||
/** 번호판영치최고일 */
|
||||
@JsonProperty("NOPLT_CSDY_AVTSMT_YMD")
|
||||
private String nopltCsdyAvtsmtYmd;
|
||||
|
||||
/** 번호판영치여부 */
|
||||
@JsonProperty("NOPLT_CSDY_YN")
|
||||
private String nopltCsdyYn;
|
||||
|
||||
/** 사업용사용기간 */
|
||||
@JsonProperty("BSS_USE_PD_YMD")
|
||||
private String bssUsePdYmd;
|
||||
|
||||
/** 직권말소예고통지일 */
|
||||
@JsonProperty("OCTHT_ERSR_PRVNTC_AVTSMT_YMD")
|
||||
private String octhtErsrPrvntcAvtsmtYmd;
|
||||
|
||||
/** 말소등록일 */
|
||||
@JsonProperty("ERSR_REG_YMD")
|
||||
private String ersrRegYmd;
|
||||
|
||||
/** 말소등록구분코드 */
|
||||
@JsonProperty("ERSR_REG_SE_CD")
|
||||
private String ersrRegSeCd;
|
||||
|
||||
/** 말소등록구분명 */
|
||||
@JsonProperty("ERSR_REG_SE_NM")
|
||||
private String ersrRegSeNm;
|
||||
|
||||
/** 저당수 */
|
||||
@JsonProperty("MRTG_CNT")
|
||||
private String mrtgCnt;
|
||||
|
||||
/** 압류건수 */
|
||||
@JsonProperty("SZR_CNT")
|
||||
private String szrCnt;
|
||||
|
||||
/** 구조변경수 */
|
||||
@JsonProperty("STRCT_CHG_CNT")
|
||||
private String strctChgCnt;
|
||||
|
||||
/** 사용본거지주소 */
|
||||
@JsonProperty("USGSRHLD_ADDR_1")
|
||||
private String usgsrhldAddr1;
|
||||
|
||||
/** 사용본거지주소상세 */
|
||||
@JsonProperty("USGSRHLD_ADDR_DTL_1")
|
||||
private String usgsrhldAddrDtl1;
|
||||
|
||||
/** 소유자주소 */
|
||||
@JsonProperty("OWNR_ADDR")
|
||||
private String ownrAddr;
|
||||
|
||||
/** 소유자주소상세 */
|
||||
@JsonProperty("OWNR_ADDR_DTL")
|
||||
private String ownrAddrDtl;
|
||||
|
||||
/** 개인사업자여부 */
|
||||
@JsonProperty("INDVDL_BZMN_YN")
|
||||
private String indvdlBzmnYn;
|
||||
|
||||
/** 대표소유자전화번호 */
|
||||
@JsonProperty("RPRS_OWNR_TELNO")
|
||||
private String rprsOwnrTelno;
|
||||
|
||||
/** 대표소유자성명 */
|
||||
@JsonProperty("RPRS_OWNR_NM")
|
||||
private String rprsOwnrNm;
|
||||
|
||||
/** 대표소유자회원구분코드 */
|
||||
@JsonProperty("RPRS_OWNR_MBR_SE_CD")
|
||||
private String rprsOwnrMbrSeCd;
|
||||
|
||||
/** 대표소유자회원번호 */
|
||||
@JsonProperty("RPRSV_OWNR_IDECNO")
|
||||
private String rprsvOwnrIdecno;
|
||||
|
||||
/** 비과세대상구분코드명 */
|
||||
@JsonProperty("TAXXMPT_APLCN_SE_CD")
|
||||
private String taxxmptAplcnSeCd;
|
||||
|
||||
/** 비과세대상구분코드 */
|
||||
@JsonProperty("TAXXMPT_TRPR_SE_CD")
|
||||
private String taxxmptTrprSeCd;
|
||||
|
||||
/** 특기사항건수 */
|
||||
@JsonProperty("SPCABL_MTTR_CNT")
|
||||
private String spcablMttrCnt;
|
||||
|
||||
/** 사용본거지행정동명 */
|
||||
@JsonProperty("USGSRHLD_DONG_NM")
|
||||
private String usgsrhldDongNm;
|
||||
|
||||
/** 예고수 */
|
||||
@JsonProperty("PRVNTC_CNT")
|
||||
private String prvntcCnt;
|
||||
|
||||
/** 수출이행여부신고일 */
|
||||
@JsonProperty("XPORT_FLFL_YN_DCLR_YMD")
|
||||
private String xportFlflYnDclrYmd;
|
||||
|
||||
/** 발급번호 */
|
||||
@JsonProperty("ISSU_NO")
|
||||
private String issuNo;
|
||||
|
||||
/** 최초양도일 */
|
||||
@JsonProperty("FRST_TRNSFR_YMD")
|
||||
private String frstTrnsfrYmd;
|
||||
|
||||
/** 구동축전지식별번호 */
|
||||
@JsonProperty("DRIV_SRGBTRY_IDNTF_NO")
|
||||
private String drivSrgbtryIdntfNo;
|
||||
|
||||
/** 처리불가사유코드 */
|
||||
@JsonProperty("PROCESS_IMPRTY_RESN_CODE")
|
||||
private String processImprtyResnCode;
|
||||
|
||||
/** 처리불가사유상세 */
|
||||
@JsonProperty("PROCESS_IMPRTY_RESN_DTLS")
|
||||
private String processImprtyResnDtls;
|
||||
|
||||
@JsonProperty("record")
|
||||
private List<Record> record;
|
||||
|
||||
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
@Schema(name = "NewLedgerRecord", description = "원부 변경내역 record (신버전)")
|
||||
@Getter
|
||||
@Setter
|
||||
public static class Record {
|
||||
/** 해제여부 */
|
||||
@JsonProperty("SZR_RMV_DTL_SN")
|
||||
private String szrRmvDtlSn;
|
||||
|
||||
/** 변경업무구분코드 */
|
||||
@JsonProperty("CHG_TASK_SE_CD")
|
||||
private String chgTaskSeCd;
|
||||
|
||||
/** 주번호 */
|
||||
@JsonProperty("MAIN_NO")
|
||||
private String mainNo;
|
||||
|
||||
/** 부번호 */
|
||||
@JsonProperty("SNO")
|
||||
private String sno;
|
||||
|
||||
/** 사항란 */
|
||||
@JsonProperty("SPCABL_MTTR")
|
||||
private String spcablMttr;
|
||||
|
||||
/** 세대주명 */
|
||||
@JsonProperty("HSHLDR_NM")
|
||||
private String hshldrNm;
|
||||
|
||||
/** 세대주개인암호화번호 */
|
||||
@JsonProperty("HSHLDR_IDECNO")
|
||||
private String hshldrIdecno;
|
||||
|
||||
/** 접수번호 */
|
||||
@JsonProperty("APLY_RCPT_NO")
|
||||
private String aplyRcptNo;
|
||||
|
||||
/** 차량관리번호 */
|
||||
@JsonProperty("VHMNO")
|
||||
private String vhmno;
|
||||
|
||||
/** 원부그룹번호 */
|
||||
@JsonProperty("LEDGER_GROUP_NO")
|
||||
private String ledgerGroupNo;
|
||||
|
||||
/** 원부개별번호 */
|
||||
@JsonProperty("LEDGER_INDIV_NO")
|
||||
private String ledgerIndivNo;
|
||||
|
||||
/** 변경업무구분명 */
|
||||
@JsonProperty("CHG_TASK_SE_NM")
|
||||
private String chgTaskSeNm;
|
||||
|
||||
/** 변경일자 */
|
||||
@JsonProperty("CHG_YMD")
|
||||
private String chgYmd;
|
||||
|
||||
/** 상세순번 */
|
||||
@JsonProperty("DTL_SN")
|
||||
private String dtlSn;
|
||||
|
||||
/** 표기여부 */
|
||||
@JsonProperty("FLAG")
|
||||
private String flag;
|
||||
}
|
||||
}
|
||||
@ -1,82 +0,0 @@
|
||||
package com.vmis.interfaceapp.service;
|
||||
|
||||
import com.vmis.interfaceapp.client.GovernmentApi;
|
||||
import com.vmis.interfaceapp.model.basic.BasicRequest;
|
||||
import com.vmis.interfaceapp.model.basic.BasicResponse;
|
||||
import com.vmis.interfaceapp.model.common.Envelope;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 자동차 기본 사항 조회 서비스
|
||||
*
|
||||
* <p>API 호출 정보를 관리하는 서비스 클래스입니다.</p>
|
||||
* <ul>
|
||||
* <li>최초 요청: createInitialRequest() - 시퀀스로 ID 생성 후 INSERT</li>
|
||||
* <li>결과 업데이트: updateResponse() - 응답 데이터 UPDATE</li>
|
||||
* </ul>
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class CarBassMatterInqireService {
|
||||
|
||||
private final GovernmentApi governmentApi;
|
||||
private final RequestEnricher enricher;
|
||||
//private final CarBassMatterInqireLogService logService;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 자동차 기본사항 조회: 보강 -> 최초요청로그 -> 외부호출 -> 응답로그.
|
||||
*/
|
||||
public ResponseEntity<Envelope<BasicResponse>> basic(Envelope<BasicRequest> envelope) {
|
||||
// 1) 요청 보강
|
||||
enricher.enrichBasic(envelope);
|
||||
|
||||
String generatedId = null;
|
||||
try {
|
||||
// 2) 최초 요청 로그 저장 (첫 번째 데이터 기준)
|
||||
/*if (envelope.getData() != null && !envelope.getData().isEmpty()) {
|
||||
BasicRequest req = envelope.getData().get(0);
|
||||
CarBassMatterInqireVO logEntity = CarBassMatterInqireVO.fromRequest(req);
|
||||
generatedId = logService.createInitialRequestNewTx(logEntity);
|
||||
}*/
|
||||
|
||||
// 3) 외부 API 호출
|
||||
ResponseEntity<Envelope<BasicResponse>> response = governmentApi.callBasic(envelope);
|
||||
|
||||
// 4) 응답 로그 업데이트
|
||||
// 원본 소스, 정상적인 호출, 리턴(에러 리턴포함) 일 경우에만 에러 로그 남김
|
||||
/*if (generatedId != null && response.getBody() != null) {
|
||||
CarBassMatterInqireVO update = CarBassMatterInqireVO.fromResponse(generatedId, response.getBody());
|
||||
if (update != null) {
|
||||
logService.updateResponseNewTx(update);
|
||||
}
|
||||
}*/
|
||||
|
||||
return response;
|
||||
} catch (Exception e) {
|
||||
// 5) 오류 로그 업데이트
|
||||
/*if (generatedId != null) {
|
||||
try {
|
||||
String detail = ExceptionDetailUtil.buildForLog(e);
|
||||
CarBassMatterInqireVO errorLog = CarBassMatterInqireVO.builder()
|
||||
.carBassMatterInqireId(generatedId) // 자동차기본사항조회 ID (PK)
|
||||
.cntcResultCode(ApiConstant.CNTC_RESULT_CODE_ERROR) // 연계결과코드 (에러)
|
||||
.cntcResultDtls(detail) // 연계결과상세 (에러 메시지)
|
||||
.build();
|
||||
logService.updateResponseNewTx(errorLog);
|
||||
log.error("[BASIC-ERR-LOG] API 호출 에러 정보 저장 완료(별도TX) - ID: {}, detail: {}", generatedId, detail, e);
|
||||
} catch (Exception ignore) {
|
||||
log.error("[BASIC-ERR-LOG] 에러 로그 저장 실패 - ID: {}", generatedId, ignore);
|
||||
}
|
||||
}*/
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,70 +0,0 @@
|
||||
package com.vmis.interfaceapp.service;
|
||||
|
||||
import com.vmis.interfaceapp.client.GovernmentApi;
|
||||
import com.vmis.interfaceapp.model.common.Envelope;
|
||||
import com.vmis.interfaceapp.model.ledger.LedgerRequest;
|
||||
import com.vmis.interfaceapp.model.ledger.LedgerResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 자동차 등록 원부(갑) 서비스 (오케스트레이션)
|
||||
* - 요청 보강, 외부 API 호출, 로그 서비스 위임
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class CarLedgerFrmbkService {
|
||||
|
||||
private final GovernmentApi governmentApi;
|
||||
private final RequestEnricher enricher;
|
||||
|
||||
/**
|
||||
* 자동차 등록원부(갑) 조회: 보강 -> 최초요청로그(별도TX) -> 외부호출 -> 응답로그(마스터/상세, 별도TX) -> 오류 시 에러로그(별도TX).
|
||||
*/
|
||||
public ResponseEntity<Envelope<LedgerResponse>> ledger(Envelope<LedgerRequest> envelope) {
|
||||
// 1) 요청 보강
|
||||
enricher.enrichLedger(envelope);
|
||||
|
||||
String generatedId = null;
|
||||
try {
|
||||
|
||||
// 3) 외부 API 호출
|
||||
ResponseEntity<Envelope<LedgerResponse>> response = governmentApi.callLedger(envelope);
|
||||
|
||||
// 4) 응답 로그 업데이트 (마스터 + 상세)
|
||||
/*if (generatedId != null && response.getBody() != null &&
|
||||
response.getBody().getData() != null && !response.getBody().getData().isEmpty()) {
|
||||
LedgerResponse body = response.getBody().getData().get(0);
|
||||
CarLedgerFrmbkVO masterUpdate = CarLedgerFrmbkVO.fromResponseMaster(generatedId, body);
|
||||
logService.updateResponseNewTx(masterUpdate);
|
||||
|
||||
List<CarLedgerFrmbkDtlVO> details = CarLedgerFrmbkDtlVO.listFromResponse(body, generatedId);
|
||||
if (details != null && !details.isEmpty()) {
|
||||
logService.saveDetailsNewTx(generatedId, details);
|
||||
}
|
||||
}*/
|
||||
|
||||
return response;
|
||||
} catch (Exception e) {
|
||||
// 5) 오류 로그 업데이트
|
||||
/*if (generatedId != null) {
|
||||
try {
|
||||
String detail = ExceptionDetailUtil.buildForLog(e);
|
||||
CarLedgerFrmbkVO errorLog = CarLedgerFrmbkVO.builder()
|
||||
.carLedgerFrmbkId(generatedId)
|
||||
.cntcResultCode(ApiConstant.CNTC_RESULT_CODE_ERROR)
|
||||
.cntcResultDtls(detail)
|
||||
.build();
|
||||
logService.updateResponseNewTx(errorLog);
|
||||
log.error("[LEDGER-ERR-LOG] API 호출 에러 정보 저장 완료(별도TX) - ID: {}, detail: {}", generatedId, detail, e);
|
||||
} catch (Exception ignore) {
|
||||
log.error("[LEDGER-ERR-LOG] 에러 로그 저장 실패 - ID: {}", generatedId, ignore);
|
||||
}
|
||||
}*/
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,33 @@
|
||||
package com.vmis.interfaceapp.service;
|
||||
|
||||
import com.vmis.interfaceapp.client.GovernmentApi;
|
||||
import com.vmis.interfaceapp.model.common.Envelope;
|
||||
import com.vmis.interfaceapp.model.ledger.NewLedgerRequest;
|
||||
import com.vmis.interfaceapp.model.ledger.NewLedgerResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 자동차 등록 원부(갑) 서비스 (신버전)
|
||||
* - 요청 보강, 외부 API 호출, 로그 서비스 위임
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class NewCarLedgerFrmbkService {
|
||||
|
||||
private final GovernmentApi governmentApi;
|
||||
private final RequestEnricher enricher;
|
||||
|
||||
public ResponseEntity<Envelope<NewLedgerResponse>> ledger(Envelope<NewLedgerRequest> envelope) {
|
||||
// 1) 요청 보강
|
||||
enricher.enrichNewLedger(envelope);
|
||||
|
||||
// 2) 외부 API 호출
|
||||
ResponseEntity<Envelope<NewLedgerResponse>> response = governmentApi.callNewLedger(envelope);
|
||||
|
||||
return response;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,37 @@
|
||||
package com.vmis.interfaceapp.service;
|
||||
|
||||
import com.vmis.interfaceapp.client.GovernmentApi;
|
||||
import com.vmis.interfaceapp.model.basic.OldBasicRequest;
|
||||
import com.vmis.interfaceapp.model.basic.OldBasicResponse;
|
||||
import com.vmis.interfaceapp.model.common.Envelope;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 자동차 기본 사항 조회 서비스 (구버전)
|
||||
*
|
||||
* <p>API 호출 정보를 관리하는 서비스 클래스입니다.</p>
|
||||
* <ul>
|
||||
* <li>최초 요청: createInitialRequest() - 시퀀스로 ID 생성 후 INSERT</li>
|
||||
* <li>결과 업데이트: updateResponse() - 응답 데이터 UPDATE</li>
|
||||
* </ul>
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class OldCarBassMatterInqireService {
|
||||
|
||||
private final GovernmentApi governmentApi;
|
||||
private final RequestEnricher enricher;
|
||||
|
||||
public ResponseEntity<Envelope<OldBasicResponse>> basic(Envelope<OldBasicRequest> envelope) {
|
||||
// 1) 요청 보강
|
||||
enricher.enrichOldBasic(envelope);
|
||||
// 2) 외부 API 호출
|
||||
ResponseEntity<Envelope<OldBasicResponse>> response = governmentApi.callOldBasic(envelope);
|
||||
return response;
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue