diff --git a/src/main/java/go/kr/project/carInspectionPenalty/callApi/controller/VehicleInquiryController.java b/src/main/java/go/kr/project/carInspectionPenalty/callApi/controller/VehicleInquiryController.java
index 4e218ac..b73026c 100644
--- a/src/main/java/go/kr/project/carInspectionPenalty/callApi/controller/VehicleInquiryController.java
+++ b/src/main/java/go/kr/project/carInspectionPenalty/callApi/controller/VehicleInquiryController.java
@@ -55,16 +55,22 @@ public class VehicleInquiryController {
log.info("조회구분코드: {}", request.getInqireSeCode());
log.info("차대번호: {}", request.getVin());
- // 입력값 검증
- if (!StringUtils.hasText(request.getVhrno())) {
- log.warn("차량번호가 입력되지 않았습니다.");
- return ApiResponseUtil.error("차량번호를 입력해주세요.");
+ // 입력값 검증 - 부과기준일 필수
+ if (!StringUtils.hasText(request.getLevyStdde())) {
+ log.warn("부과기준일이 입력되지 않았습니다.");
+ return ApiResponseUtil.error("부과기준일을 입력해주세요.");
+ }
+
+ // 입력값 검증 - 차량번호 또는 차대번호 중 하나 필수
+ if (!StringUtils.hasText(request.getVhrno()) && !StringUtils.hasText(request.getVin())) {
+ log.warn("차량번호 또는 차대번호가 입력되지 않았습니다.");
+ return ApiResponseUtil.error("차량번호 또는 차대번호 중 하나를 입력해주세요.");
}
// 차량 기본정보 조회
BasicResponse response = service.getBasicInfo(request);
- log.info("자동차 기본사항 조회 성공 - 차량번호: {}", request.getVhrno());
+ log.info("자동차 기본사항 조회 성공 - 차량번호: {}, 차대번호: {}", request.getVhrno(), request.getVin());
log.info("========== 자동차 기본사항 조회 완료 ==========");
return ApiResponseUtil.success(response, "자동차 기본사항 조회가 완료되었습니다.");
@@ -84,13 +90,26 @@ public class VehicleInquiryController {
log.info("요청 차량번호: {}", request.getVhrno());
log.info("조회구분코드: {}", request.getInqireSeCode());
log.info("민원인성명: {}", request.getCpttrNm());
+ log.info("민원인주민번호: {}", request.getCpttrIhidnum() != null ? "********" : null);
- // 입력값 검증
+ // 입력값 검증 - 차량번호 필수
if (!StringUtils.hasText(request.getVhrno())) {
log.warn("차량번호가 입력되지 않았습니다.");
return ApiResponseUtil.error("차량번호를 입력해주세요.");
}
+ // 입력값 검증 - 소유자명 필수
+ if (!StringUtils.hasText(request.getCpttrNm())) {
+ log.warn("소유자명이 입력되지 않았습니다.");
+ return ApiResponseUtil.error("소유자명을 입력해주세요.");
+ }
+
+ // 입력값 검증 - 주민번호 필수
+ if (!StringUtils.hasText(request.getCpttrIhidnum())) {
+ log.warn("주민번호가 입력되지 않았습니다.");
+ return ApiResponseUtil.error("주민번호를 입력해주세요.");
+ }
+
// 차량 등록원부 조회
LedgerResponse response = service.getLedgerInfo(request);
diff --git a/src/main/webapp/WEB-INF/views/carInspectionPenalty/callApi/inquiry.jsp b/src/main/webapp/WEB-INF/views/carInspectionPenalty/callApi/inquiry.jsp
index 3628852..b4b42a0 100644
--- a/src/main/webapp/WEB-INF/views/carInspectionPenalty/callApi/inquiry.jsp
+++ b/src/main/webapp/WEB-INF/views/carInspectionPenalty/callApi/inquiry.jsp
@@ -23,32 +23,51 @@
-
@@ -188,272 +207,18 @@
var VehicleInquiry = {
/**
- * 샘플 데이터 1: 기본정보 조회
- */
- getSampleData1: function() {
- return {
- prye: "2021",
- registDe: "20210315",
- ersrRegistSeCode: "",
- ersrRegistSeNm: "정상",
- ersrRegistDe: "",
- registDetailCode: "01",
- dsplvl: "2497",
- useStrnghldLegaldongCode: "1168010100",
- useStrnghldAdstrdCode: "1168010100",
- useStrnghldMntn: "0",
- useStrnghldLnbr: "123",
- useStrnghldHo: "1002",
- useStrnghldAdresNm: "역삼동",
- useStrnghldRoadNmCode: "116804100001",
- usgsrhldUndgrndBuldSeCode: "0",
- useStrnghldBuldMainNo: "123",
- useStrnghldBuldSubNo: "0",
- usgsrhldAdresFull: "서울특별시 강남구 테헤란로 123 (역삼동)",
- mberSeCode: "01",
- mberNm: "홍길동",
- mberSeNo: "800101-1234567",
- telno: "010-1234-5678",
- ownerLegaldongCode: "1168010100",
- ownerAdstrdCode: "1168010100",
- ownerMntn: "0",
- ownerLnbr: "123",
- ownerHo: "1002",
- ownerAdresNm: "역삼동",
- ownerRoadNmCode: "116804100001",
- ownerUndgrndBuldSeCode: "0",
- ownerBuldMainNo: "123",
- ownerBuldSubNo: "0",
- ownerAdresFull: "서울특별시 강남구 테헤란로 123 (역삼동) 101동 1002호",
- aftrVhrno: "",
- useFuelCode: "G",
- prposSeCode: "B",
- mtrsFomNm: "G2.5 GDI",
- frntVhrno: "",
- vhrno: "12가3456",
- vin: "KMHCT41CBEU123456",
- cnm: "쏘나타 DN8 2.5 가솔린",
- vhcleTotWt: "1755",
- caagEndde: "20341231",
- changeDe: "20240301",
- vhctyAsortCode: "A01",
- vhctyTyCode: "M02",
- vhctySeCode: "S01",
- mxmmLdg: "",
- vhctyAsortNm: "승용",
- vhctyTyNm: "중형",
- vhctySeNm: "승용차",
- frstRegistDe: "20210315",
- fomNm: "DN8",
- acqsDe: "20210310",
- acqsEndDe: "",
- yblMd: "202102",
- transrRegistDe: "",
- spcfRegistSttusCode: "",
- colorNm: "검정",
- mrtgCo: "0",
- seizrCo: "0",
- stmdCo: "0",
- nmplCsdyAt: "N",
- nmplCsdyRemnrDe: "",
- originSeCode: "01",
- nmplStndrdCode: "01",
- acqsAmount: "28500000",
- insptValidPdBgnde: "20240301",
- insptValidPdEndde: "20250228",
- useStrnghldGrcCode: "06234",
- tkcarPscapCo: "5",
- spmnno: "DN82021001",
- trvlDstnc: "45320",
- frstRegistRqrcno: "2021031500001",
- vlntErsrPrvntcNticeDe: "",
- registInsttNm: "서울강남구청",
- processImprtyResnCode: "",
- processImprtyResnDtls: "",
- cbdLt: "4900",
- cbdBt: "1860",
- cbdHg: "1445",
- frstMxmmLdg: "",
- fuelCnsmpRt: "11.2",
- elctyCmpndFuelCnsmpRt: ""
- };
- },
-
- /**
- * 샘플 데이터 2: 등록원부 조회 (변경 이력 포함)
- */
- getSampleData2: function() {
- return {
- cntcResultCode: "00",
- cntcResultDtls: "정상",
- ledgerGroupNo: "9876543210",
- ledgerIndvdlzNo: "002",
- vhmno: "V201909200002",
- vhrno: "34나5678",
- vin: "KNAGT811ABV567890",
- vhctyAsortCode: "A01",
- vhctyAsortNm: "승용",
- cnm: "K5 DL3 2.0 가솔린",
- colorCode: "02",
- colorNm: "흰색",
- nmplStndrdCode: "02",
- nmplStndrdNm: "일반(중형)",
- prposSeCode: "B",
- prposSeNm: "비사업용",
- mtrsFomNm: "G2.0 MPI",
- fomNm: "DL3",
- acqsAmount: "22000000",
- registDetailCode: "01",
- registDetailNm: "신규등록",
- frstRegistDe: "20190920",
- caagEndde: "20321231",
- prye: "2019",
- spmnno1: "DL32019002",
- spmnno2: "LPG2021001",
- yblMd: "20190801",
- trvlDstnc: "89540",
- insptValidPdBgnde: "20240801",
- insptValidPdEndde: "20250731",
- chckValidPdBgnde: "20230901",
- chckValidPdEndde: "20240831",
- registReqstSeNm: "신규등록",
- frstRegistRqrcno: "2019092000002",
- nmplCsdyRemnrDe: "",
- nmplCsdyAt: "N",
- bssUsePd: "",
- octhtErsrPrvntcNticeDe: "",
- ersrRegistDe: "",
- ersrRegistSeCode: "",
- ersrRegistSeNm: "정상",
- mrtgcnt: "0",
- vhclecnt: "0",
- stmdcnt: "1",
- adres1: "26000",
- adresNm1: "부산광역시 해운대구 센텀중앙로 78 (우동)",
- adres: "26000",
- adresNm: "부산광역시 해운대구 센텀중앙로 78 (우동) 201동 505호",
- indvdlBsnmAt: "1",
- telno: "010-9876-5432",
- mberNm: "김철수",
- mberSeCode: "01",
- mberSeNo: "750515-1234567",
- taxxmptTrgterSeCode: "",
- taxxmptTrgterSeCodeNm: "",
- cntMatter: "",
- emdNm: "우동",
- prvntccnt: "0",
- xportFlflAtSttemntDe: "",
- partnRqrcno: "",
- record: [
- {
- mainchk: "Y",
- changeJobSeCode: "01",
- mainno: "001",
- subno: "001",
- dtls: "신규등록 - 차량번호: 34나5678, 소유자: 김철수",
- rqrcno: "2019092000002",
- vhmno: "V201909200002",
- ledgerGroupNo: "9876543210",
- ledgerIndvdlzNo: "002",
- gubunNm: "신규",
- changeDe: "20190920",
- detailSn: "001",
- flag: "N"
- },
- {
- mainchk: "N",
- changeJobSeCode: "02",
- mainno: "001",
- subno: "002",
- dtls: "주소변경 - 이전: 부산광역시 해운대구 해운대로 100 -> 변경: 부산광역시 해운대구 센텀중앙로 78",
- rqrcno: "2020011500001",
- vhmno: "V201909200002",
- ledgerGroupNo: "9876543210",
- ledgerIndvdlzNo: "002",
- gubunNm: "변경",
- changeDe: "20200115",
- detailSn: "002",
- flag: "N"
- },
- {
- mainchk: "N",
- changeJobSeCode: "02",
- mainno: "001",
- subno: "003",
- dtls: "구조변경 - LPG 겸용 엔진으로 변경",
- rqrcno: "2021063000003",
- vhmno: "V201909200002",
- ledgerGroupNo: "9876543210",
- ledgerIndvdlzNo: "002",
- gubunNm: "변경",
- changeDe: "20210630",
- detailSn: "003",
- flag: "N"
- },
- {
- mainchk: "N",
- changeJobSeCode: "02",
- mainno: "001",
- subno: "004",
- dtls: "전화번호 변경 - 이전: 010-1111-2222 -> 변경: 010-9876-5432",
- rqrcno: "2022031000004",
- vhmno: "V201909200002",
- ledgerGroupNo: "9876543210",
- ledgerIndvdlzNo: "002",
- gubunNm: "변경",
- changeDe: "20220310",
- detailSn: "004",
- flag: "N"
- },
- {
- mainchk: "N",
- changeJobSeCode: "03",
- mainno: "001",
- subno: "005",
- dtls: "정기검사 합격 - 검사유효기간: 20230815 ~ 20240814",
- rqrcno: "",
- vhmno: "V201909200002",
- ledgerGroupNo: "9876543210",
- ledgerIndvdlzNo: "002",
- gubunNm: "검사",
- changeDe: "20230815",
- detailSn: "005",
- flag: "N"
- },
- {
- mainchk: "N",
- changeJobSeCode: "03",
- mainno: "001",
- subno: "006",
- dtls: "정기검사 합격 - 검사유효기간: 20240801 ~ 20250731",
- rqrcno: "",
- vhmno: "V201909200002",
- ledgerGroupNo: "9876543210",
- ledgerIndvdlzNo: "002",
- gubunNm: "검사",
- changeDe: "20240801",
- detailSn: "006",
- flag: "N"
- }
- ]
- };
- },
-
- /**
- * 조회 구분 변경 시 필드 표시/숨김
+ * 조회 구분 변경 시 검색 영역 표시/숨김
*/
onInqryTypeChange: function() {
var inqryType = $("#inqryType").val();
- // 모든 필드 초기화
- $(".basicField").hide();
- $(".ledgerField").hide();
-
- // 조회 구분에 따른 필드 표시
+ // 조회 구분에 따른 검색 영역 표시
if (inqryType === "basic") {
- $(".basicField").show();
+ $("#basicSearchArea").show();
+ $("#ledgerSearchArea").hide();
} else if (inqryType === "ledger") {
- $(".ledgerField").show();
+ $("#basicSearchArea").hide();
+ $("#ledgerSearchArea").show();
}
},
@@ -463,19 +228,51 @@
executeSearch: function() {
var self = this;
var inqryType = $("#inqryType").val();
- var vhrno = $.trim($("#vhrno").val());
-
- // 차량번호 검증
- if (!vhrno) {
- alert("차량번호를 입력해주세요.");
- $("#vhrno").focus();
- return;
- }
- // 조회 타입에 따라 처리
+ // 조회 타입에 따라 유효성 검사 및 처리
if (inqryType === "basic") {
+ // 기본정보: 부과기준일 필수, 차량번호 or 차대번호 중 하나 필수
+ var levyStdde = $.trim($("#levyStdde").val());
+ var vhrno = $.trim($("#vhrno").val());
+ var vin = $.trim($("#vin").val());
+
+ if (!levyStdde) {
+ alert("부과기준일을 입력해주세요.");
+ $("#levyStdde").focus();
+ return;
+ }
+
+ if (!vhrno && !vin) {
+ alert("차량번호 또는 차대번호 중 하나를 입력해주세요.");
+ $("#vhrno").focus();
+ return;
+ }
+
self.callBasicApi();
} else if (inqryType === "ledger") {
+ // 등록원부: 차량번호, 소유자명, 주민번호 필수
+ var ledgerVhrno = $.trim($("#ledgerVhrno").val());
+ var cpttrNm = $.trim($("#cpttrNm").val());
+ var cpttrIhidnum = $.trim($("#cpttrIhidnum").val());
+
+ if (!ledgerVhrno) {
+ alert("차량번호를 입력해주세요.");
+ $("#ledgerVhrno").focus();
+ return;
+ }
+
+ if (!cpttrNm) {
+ alert("소유자명을 입력해주세요.");
+ $("#cpttrNm").focus();
+ return;
+ }
+
+ if (!cpttrIhidnum) {
+ alert("주민번호를 입력해주세요.");
+ $("#cpttrIhidnum").focus();
+ return;
+ }
+
self.callLedgerApi();
}
},
@@ -527,22 +324,26 @@
*/
callLedgerApi: function() {
var self = this;
- var vhrno = $.trim($("#vhrno").val());
+ var vhrno = $.trim($("#ledgerVhrno").val());
var cpttrNm = $.trim($("#cpttrNm").val());
var cpttrIhidnum = $.trim($("#cpttrIhidnum").val());
+ var cpttrLegaldongCode = $.trim($("#cpttrLegaldongCode").val());
+ var routeSeCode = $("#routeSeCode").val();
+ var detailExpression = $("#detailExpression").val();
// LedgerRequest의 @JsonProperty에 맞춰 대문자 키 사용
// INQIRE_SE_CODE는 VmisRequestEnricher에서 자동으로 "1"(열람)로 설정됨
var params = {
- VHRNO: vhrno
+ VHRNO: vhrno,
+ CPTTR_NM: cpttrNm,
+ CPTTR_IHIDNUM: cpttrIhidnum,
+ ROUTE_SE_CODE: routeSeCode,
+ DETAIL_EXPRESSION: detailExpression
};
- if (cpttrNm) {
- params.CPTTR_NM = cpttrNm;
- }
-
- if (cpttrIhidnum) {
- params.CPTTR_IHIDNUM = cpttrIhidnum;
+ // 선택 필드 추가
+ if (cpttrLegaldongCode) {
+ params.CPTTR_LEGALDONG_CODE = cpttrLegaldongCode;
}
$.ajax({
@@ -829,11 +630,18 @@
// 초기화 버튼 클릭 이벤트
$("#reset_btn").on('click', function() {
- $("#vhrno").val("");
+ // 기본정보 조회 필드 초기화
$("#levyStdde").val("${dateUtil:getCurrentDateTime('yyyy-MM-dd')}");
+ $("#vhrno").val("");
$("#vin").val("");
+ // 등록원부 조회 필드 초기화
+ $("#ledgerVhrno").val("");
$("#cpttrNm").val("");
$("#cpttrIhidnum").val("");
+ $("#cpttrLegaldongCode").val("");
+ $("#routeSeCode").val("3");
+ $("#detailExpression").val("1");
+ // 결과 영역 초기화
$("#resultContent").html('
조회 버튼을 클릭하여 차량 정보를 조회하세요.
');
$("#btnResultClose").hide();
});
@@ -845,29 +653,13 @@
});
// 엔터키 검색
- $("#vhrno, #vin, #cpttrNm, #cpttrIhidnum").on('keypress', function(e) {
+ $("#vhrno, #vin, #ledgerVhrno, #cpttrNm, #cpttrIhidnum, #cpttrLegaldongCode").on('keypress', function(e) {
if (e.which === 13) {
e.preventDefault();
$("#search_btn").trigger('click');
}
});
- // 샘플1 버튼 클릭 이벤트 (기본정보)
- $("#sample1_btn").on('click', function() {
- console.log("샘플 데이터 1 로드 (기본정보)");
- var sampleData = self.getSampleData1();
- self.displayBasicResult(sampleData);
- $("#btnResultClose").show();
- });
-
- // 샘플2 버튼 클릭 이벤트 (등록원부 + 변경이력)
- $("#sample2_btn").on('click', function() {
- console.log("샘플 데이터 2 로드 (등록원부 + 변경이력)");
- var sampleData = self.getSampleData2();
- self.displayLedgerResult(sampleData);
- $("#btnResultClose").show();
- });
-
// 섹션 접기/펼치기 이벤트
$("#resultContent").on('click', '.collapsible-title', function() {
var targetId = $(this).data('target');