|
|
|
|
@ -12,6 +12,7 @@ import go.kr.project.api.service.VmisCarBassMatterInqireLogService;
|
|
|
|
|
import go.kr.project.api.service.VmisCarLedgerFrmbkLogService;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
|
|
|
|
|
import org.springframework.core.ParameterizedTypeReference;
|
|
|
|
|
import org.springframework.http.*;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
@ -28,54 +29,13 @@ import java.util.List;
|
|
|
|
|
@Service
|
|
|
|
|
@RequiredArgsConstructor
|
|
|
|
|
@Slf4j
|
|
|
|
|
public class ExternalVehicleApiServiceImpl implements ExternalVehicleApiService {
|
|
|
|
|
public class ExternalVehicleApiServiceImpl extends EgovAbstractServiceImpl implements ExternalVehicleApiService {
|
|
|
|
|
|
|
|
|
|
private final RestTemplate restTemplate;
|
|
|
|
|
private final VmisProperties vmisProperties; // 프로퍼티 주입 (외부 API URL 구성에 사용)
|
|
|
|
|
private final VmisCarBassMatterInqireLogService bassMatterLogService; // 기본사항 조회 로그 서비스
|
|
|
|
|
private final VmisCarLedgerFrmbkLogService ledgerLogService; // 등록원부 로그 서비스
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<VehicleApiResponseVO> getVehiclesInfo(List<String> vehicleNumbers) {
|
|
|
|
|
log.info("차량 정보 일괄 조회 시작 - 대상 차량 수: {}", vehicleNumbers.size());
|
|
|
|
|
|
|
|
|
|
List<VehicleApiResponseVO> responses = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
for (String vehicleNumber : vehicleNumbers) {
|
|
|
|
|
try {
|
|
|
|
|
VehicleApiResponseVO response = getVehicleInfo(vehicleNumber);
|
|
|
|
|
responses.add(response);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
log.error("차량번호 {} 조회 중 오류 발생: {}", vehicleNumber, e.getMessage(), e);
|
|
|
|
|
|
|
|
|
|
// 오류 발생 시에도 응답 객체 생성하여 추가
|
|
|
|
|
VehicleApiResponseVO errorResponse = VehicleApiResponseVO.builder()
|
|
|
|
|
.vhrno(vehicleNumber)
|
|
|
|
|
.success(false)
|
|
|
|
|
.message("조회 실패: " + e.getMessage())
|
|
|
|
|
.build();
|
|
|
|
|
responses.add(errorResponse);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
log.info("차량 정보 일괄 조회 완료 - 성공: {}, 실패: {}",
|
|
|
|
|
responses.stream().filter(VehicleApiResponseVO::isSuccess).count(),
|
|
|
|
|
responses.stream().filter(r -> !r.isSuccess()).count());
|
|
|
|
|
|
|
|
|
|
return responses;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public VehicleApiResponseVO getVehicleInfo(String vehicleNumber) {
|
|
|
|
|
log.info("차량 정보 조회 시작 - 차량번호: {}", vehicleNumber);
|
|
|
|
|
|
|
|
|
|
// 차량번호만으로 BasicRequest 생성
|
|
|
|
|
BasicRequest basicRequest = new BasicRequest();
|
|
|
|
|
basicRequest.setVhrno(vehicleNumber);
|
|
|
|
|
|
|
|
|
|
// BasicRequest를 받는 오버로딩 메서드 호출
|
|
|
|
|
return getVehicleInfo(basicRequest);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public VehicleApiResponseVO getVehicleInfo(BasicRequest basicRequest) {
|
|
|
|
|
@ -88,12 +48,12 @@ public class ExternalVehicleApiServiceImpl implements ExternalVehicleApiService
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
// 1. 차량 기본정보 조회
|
|
|
|
|
// 중요 로직: BasicRequest 전체를 사용하여 조회 (RequestEnricher가 나머지 채움)
|
|
|
|
|
// 중요 로직: BasicRequest 전체를 사용하여 조회
|
|
|
|
|
BasicResponse basicInfo = getBasicInfo(basicRequest);
|
|
|
|
|
response.setBasicInfo(basicInfo);
|
|
|
|
|
|
|
|
|
|
// 2. 자동차 등록원부 조회
|
|
|
|
|
// 중요 로직: 통합 조회 시에는 차량번호와 기본정보를 바탕으로 LedgerRequest 생성 (RequestEnricher가 나머지 채움)
|
|
|
|
|
// 중요 로직: 통합 조회 시에는 차량번호와 기본정보를 바탕으로 LedgerRequest 생성
|
|
|
|
|
LedgerRequest ledgerRequest = new LedgerRequest();
|
|
|
|
|
ledgerRequest.setVhrno(vehicleNumber);
|
|
|
|
|
ledgerRequest.setOnesInformationOpen("1"); //개인정보공개 {1:소유자공개, 2:비공개, 3:비공개(주민등록번호), 4:비공개(사용본거지)}
|
|
|
|
|
@ -104,12 +64,10 @@ public class ExternalVehicleApiServiceImpl implements ExternalVehicleApiService
|
|
|
|
|
ledgerRequest.setCpttrNm(record.getMberNm()); // 민원인성명
|
|
|
|
|
ledgerRequest.setCpttrIhidnum(record.getMberSeNo()); // 민원인주민번호
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 고정값 설정
|
|
|
|
|
ledgerRequest.setCpttrLegaldongCode(null); // 민원인법정동코드
|
|
|
|
|
ledgerRequest.setRouteSeCode("3"); // 경로구분코드
|
|
|
|
|
ledgerRequest.setDetailExpression("1"); // 내역표시 (전체내역)
|
|
|
|
|
// INQIRE_SE_CODE는 VmisRequestEnricher에서 자동으로 "1"(열람)로 설정됨
|
|
|
|
|
|
|
|
|
|
LedgerResponse ledgerInfo = getLedgerInfo(ledgerRequest);
|
|
|
|
|
response.setLedgerInfo(ledgerInfo);
|
|
|
|
|
|