@ -1,5 +1,6 @@
package go.kr.project.api.internal.service.impl ;
import go.kr.project.api.config.ApiConstant ;
import go.kr.project.api.service.VehicleInfoService ;
import go.kr.project.api.internal.service.VmisCarBassMatterInqireService ;
import go.kr.project.api.internal.service.VmisCarLedgerFrmbkService ;
@ -59,20 +60,53 @@ public class InternalVehicleInfoServiceImpl implements VehicleInfoService {
public VehicleApiResponseVO getVehicleInfo ( String vehicleNumber ) {
log . info ( "[Internal Mode] 차량 정보 조회 시작 - 차량번호: {}" , vehicleNumber ) ;
// 차량번호만으로 BasicRequest 생성
BasicRequest basicRequest = new BasicRequest ( ) ;
basicRequest . setVhrno ( vehicleNumber ) ;
// BasicRequest를 받는 오버로딩 메서드 호출
return getVehicleInfo ( basicRequest ) ;
}
@Override
public VehicleApiResponseVO getVehicleInfo ( BasicRequest basicRequest ) {
String vehicleNumber = basicRequest . getVhrno ( ) ;
log . info ( "[Internal Mode] 차량 정보 조회 시작 - 차량번호: {}, 부과기준일: {}, 조회구분: {}" ,
vehicleNumber , basicRequest . getLevyStdde ( ) , basicRequest . getInqireSeCode ( ) ) ;
VehicleApiResponseVO response = new VehicleApiResponseVO ( ) ;
response . setVhrno ( vehicleNumber ) ;
try {
// 1. 차량 기본정보 조회
BasicResponse basicInfo = getBasicInfo ( vehicleNumber ) ;
// 중요 로직: BasicRequest 전체를 사용하여 조회 (RequestEnricher가 나머지 채움)
BasicResponse basicInfo = getBasicInfo ( basicRequest ) ;
response . setBasicInfo ( basicInfo ) ;
// 2. 자동차 등록원부 조회
LedgerResponse ledgerInfo = getLedgerInfo ( vehicleNumber ) ;
// 중요 로직: 통합 조회 시에는 차량번호와 기본정보를 바탕으로 LedgerRequest 생성 (RequestEnricher가 나머지 채움)
LedgerRequest ledgerRequest = new LedgerRequest ( ) ;
ledgerRequest . setVhrno ( vehicleNumber ) ;
ledgerRequest . setOnesInformationOpen ( "1" ) ; //개인정보공개 {1:소유자공개, 2:비공개, 3:비공개(주민등록번호), 4:비공개(사용본거지)}
// basicInfo에서 민원인 정보 가져오기
if ( basicInfo ! = null & & basicInfo . getRecord ( ) ! = null & & ! basicInfo . getRecord ( ) . isEmpty ( ) ) {
BasicResponse . Record record = basicInfo . getRecord ( ) . get ( 0 ) ;
ledgerRequest . setCpttrNm ( record . getMberNm ( ) ) ; // 민원인성명
ledgerRequest . setCpttrIhidnum ( record . getMberSeNo ( ) ) ; // 민원인주민번호
}
// 고정값 설정
ledgerRequest . setCpttrLegaldongCode ( null ) ; // 민원인법정동코드
ledgerRequest . setRouteSeCode ( "3" ) ; // 경로구분코드
ledgerRequest . setDetailExpression ( "2" ) ; // 내역표시 (최종내역)
ledgerRequest . setInqireSeCode ( "1" ) ; // 조회구분코드 (열람)
LedgerResponse ledgerInfo = getLedgerInfo ( ledgerRequest ) ;
response . setLedgerInfo ( ledgerInfo ) ;
// 3. 결과 검증
if ( basicInfo ! = null & & "00" . equals ( basicInfo . getCntcResultCode ( ) ) ) {
if ( basicInfo ! = null & & ApiConstant . CNTC_RESULT_CODE_SUCCESS . equals ( basicInfo . getCntcResultCode ( ) ) ) {
response . setSuccess ( true ) ;
response . setMessage ( "조회 성공" ) ;
log . info ( "[Internal Mode] 차량번호 {} 조회 성공" , vehicleNumber ) ;
@ -123,19 +157,16 @@ public class InternalVehicleInfoServiceImpl implements VehicleInfoService {
/ * *
* 차 량 기 본 정 보 조 회 ( 내 부 모 듈 직 접 호 출 )
* 중 요 로 직 : 기 본 정 보 조 회 는 BasicRequest 전 체 를 받 아 서 내 부 서 비 스 에 전 달
*
* @param vehicleNumber 차 량 번 호
* @param request 기 본 정 보 조 회 요 청 ( 차 량 번 호 , 부 과 기 준 일 , 조 회 구 분 등 포 함 )
* @return 차 량 기 본 정 보 응 답
* /
@Override
public BasicResponse getBasicInfo ( String vehicleNumber ) {
log . debug ( "[Internal Mode] 차량 기본정보 조회 - 차량번호: {}" , vehicleNumber ) ;
public BasicResponse getBasicInfo ( BasicRequest request ) {
log . debug ( "[Internal Mode] 차량 기본정보 조회 - 차량번호: {}" , request. getVhrno ( ) ) ;
// 요청 객체 생성 - 차량번호만 설정 (나머지는 RequestEnricher가 자동 설정)
BasicRequest request = new BasicRequest ( ) ;
request . setVhrno ( vehicleNumber ) ;
// Envelope로 감싸기
// Envelope로 감싸기 (요청 객체는 이미 모든 필수 파라미터를 포함)
Envelope < BasicRequest > requestEnvelope = new Envelope < BasicRequest > ( ) ;
requestEnvelope . setData ( Collections . singletonList ( request ) ) ;
@ -151,30 +182,27 @@ public class InternalVehicleInfoServiceImpl implements VehicleInfoService {
return responseEntity . getBody ( ) . getData ( ) . get ( 0 ) ;
}
log . warn ( "[Internal Mode] 차량 기본정보 조회 응답이 비어있음 - 차량번호: {}" , vehicleNumber ) ;
log . warn ( "[Internal Mode] 차량 기본정보 조회 응답이 비어있음 - 차량번호: {}" , request. getVhrno ( ) ) ;
return null ;
} catch ( Exception e ) {
log . error ( "[Internal Mode] 차량 기본정보 조회 실패 - 차량번호: {}" , vehicleNumber , e ) ;
log . error ( "[Internal Mode] 차량 기본정보 조회 실패 - 차량번호: {}" , request. getVhrno ( ) , e ) ;
throw new RuntimeException ( "차량 기본정보 조회 실패: " + e . getMessage ( ) , e ) ;
}
}
/ * *
* 자 동 차 등 록 원 부 ( 갑 ) 조 회 ( 내 부 모 듈 직 접 호 출 )
* 중 요 로 직 : 등 록 원 부 조 회 는 LedgerRequest 전 체 를 받 아 서 내 부 서 비 스 에 전 달
*
* @param vehicleNumber 차 량 번 호
* @param request 등 록 원 부 조 회 요 청 ( 차 량 번 호 , 소 유 자 정 보 , 조 회 구 분 등 포 함 )
* @return 등 록 원 부 정 보 응 답
* /
@Override
public LedgerResponse getLedgerInfo ( String vehicleNumber ) {
log . debug ( "[Internal Mode] 자동차 등록원부 조회 - 차량번호: {}" , vehicleNumber ) ;
// 요청 객체 생성 - 차량번호만 설정 (나머지는 RequestEnricher가 자동 설정)
LedgerRequest request = new LedgerRequest ( ) ;
request . setVhrno ( vehicleNumber ) ;
public LedgerResponse getLedgerInfo ( LedgerRequest request ) {
log . debug ( "[Internal Mode] 자동차 등록원부 조회 - 차량번호: {}" , request . getVhrno ( ) ) ;
// Envelope로 감싸기
// Envelope로 감싸기 (요청 객체는 이미 모든 필수 파라미터를 포함)
Envelope < LedgerRequest > requestEnvelope = new Envelope < LedgerRequest > ( ) ;
requestEnvelope . setData ( Collections . singletonList ( request ) ) ;
@ -190,11 +218,11 @@ public class InternalVehicleInfoServiceImpl implements VehicleInfoService {
return responseEntity . getBody ( ) . getData ( ) . get ( 0 ) ;
}
log . warn ( "[Internal Mode] 자동차 등록원부 조회 응답이 비어있음 - 차량번호: {}" , vehicleNumber ) ;
log . warn ( "[Internal Mode] 자동차 등록원부 조회 응답이 비어있음 - 차량번호: {}" , request. getVhrno ( ) ) ;
return null ;
} catch ( Exception e ) {
log . error ( "[Internal Mode] 자동차 등록원부 조회 실패 - 차량번호: {}" , vehicleNumber , e ) ;
log . error ( "[Internal Mode] 자동차 등록원부 조회 실패 - 차량번호: {}" , request. getVhrno ( ) , e ) ;
throw new RuntimeException ( "자동차 등록원부 조회 실패: " + e . getMessage ( ) , e ) ;
}
}