|
|
|
|
@ -64,7 +64,7 @@ public class ExternalVehicleApiServiceImpl extends EgovAbstractServiceImpl imple
|
|
|
|
|
log.debug("[AUTO-LEDGER] YAML 설정에 따른 API 버전: {}", apiVersion);
|
|
|
|
|
|
|
|
|
|
if ("old".equalsIgnoreCase(apiVersion)) {
|
|
|
|
|
return callOldLedgerApi(request);
|
|
|
|
|
return null;
|
|
|
|
|
} else {
|
|
|
|
|
return callNewLedgerApi(request);
|
|
|
|
|
}
|
|
|
|
|
@ -89,20 +89,25 @@ public class ExternalVehicleApiServiceImpl extends EgovAbstractServiceImpl imple
|
|
|
|
|
headers.setContentType(MediaType.APPLICATION_JSON);
|
|
|
|
|
HttpEntity<Envelope<OldBasicRequest>> requestEntity = new HttpEntity<>(requestEnvelope, headers);
|
|
|
|
|
|
|
|
|
|
ResponseEntity<ApiExchangeEnvelope<OldBasicRequest, NewBasicResponse>> responseEntity = restTemplate.exchange(
|
|
|
|
|
ResponseEntity<ApiExchangeEnvelope<OldBasicRequest, OldBasicResponse>> responseEntity = restTemplate.exchange(
|
|
|
|
|
vmisProperties.getExternal().getApi().getUrl().buildOldBasicUrl(),
|
|
|
|
|
HttpMethod.POST,
|
|
|
|
|
requestEntity,
|
|
|
|
|
new ParameterizedTypeReference<ApiExchangeEnvelope<OldBasicRequest, NewBasicResponse>>() {}
|
|
|
|
|
new ParameterizedTypeReference<ApiExchangeEnvelope<OldBasicRequest, OldBasicResponse>>() {}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (responseEntity.getStatusCode() == HttpStatus.OK && responseEntity.getBody() != null) {
|
|
|
|
|
ApiExchangeEnvelope<OldBasicRequest, NewBasicResponse> body = responseEntity.getBody();
|
|
|
|
|
List<NewBasicResponse> data = (body.getResponse() != null) ? body.getResponse().getData() : null;
|
|
|
|
|
ApiExchangeEnvelope<OldBasicRequest, OldBasicResponse> env = responseEntity.getBody();
|
|
|
|
|
List<OldBasicResponse> data = (env.getResponse() != null) ? env.getResponse().getData() : null;
|
|
|
|
|
if (data != null && !data.isEmpty()) {
|
|
|
|
|
// 로그 저장 로직은 기존과 동일하게 유지 (OldBasicResponse 기반)
|
|
|
|
|
log.debug("[OLD-BASIC] txId: {}", body.getTxId());
|
|
|
|
|
return data.get(0);
|
|
|
|
|
OldBasicResponse oldBody = data.get(0);
|
|
|
|
|
// 응답 정보 업데이트 (txId 포함)
|
|
|
|
|
CarBassMatterInqireVO responseUpdate = CarBassMatterInqireVO.fromOldExchange(generatedId, env);
|
|
|
|
|
bassMatterLogService.updateResponseNewTx(responseUpdate);
|
|
|
|
|
|
|
|
|
|
log.debug("[OLD-BASIC] txId: {}", env.getTxId());
|
|
|
|
|
// OldBasicResponse를 NewBasicResponse로 변환하여 반환
|
|
|
|
|
return convertToNewBasicResponse(oldBody);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -135,9 +140,7 @@ public class ExternalVehicleApiServiceImpl extends EgovAbstractServiceImpl imple
|
|
|
|
|
|
|
|
|
|
String generatedId = null;
|
|
|
|
|
try {
|
|
|
|
|
// NewBasicRequest를 사용하여 로그 저장 (임시로 OldBasicRequest로 변환)
|
|
|
|
|
OldBasicRequest tempForLog = convertToOldBasicRequest(request);
|
|
|
|
|
CarBassMatterInqireVO logEntity = CarBassMatterInqireVO.fromOldRequest(tempForLog);
|
|
|
|
|
CarBassMatterInqireVO logEntity = CarBassMatterInqireVO.fromNewRequest(request);
|
|
|
|
|
generatedId = bassMatterLogService.createInitialRequestNewTx(logEntity);
|
|
|
|
|
|
|
|
|
|
Envelope<NewBasicRequest> requestEnvelope = new Envelope<>(request);
|
|
|
|
|
@ -153,12 +156,16 @@ public class ExternalVehicleApiServiceImpl extends EgovAbstractServiceImpl imple
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (responseEntity.getStatusCode() == HttpStatus.OK && responseEntity.getBody() != null) {
|
|
|
|
|
ApiExchangeEnvelope<NewBasicRequest, NewBasicResponse> body = responseEntity.getBody();
|
|
|
|
|
List<NewBasicResponse> data = (body.getResponse() != null) ? body.getResponse().getData() : null;
|
|
|
|
|
ApiExchangeEnvelope<NewBasicRequest, NewBasicResponse> env = responseEntity.getBody();
|
|
|
|
|
List<NewBasicResponse> data = (env.getResponse() != null) ? env.getResponse().getData() : null;
|
|
|
|
|
if (data != null && !data.isEmpty()) {
|
|
|
|
|
// 로그 저장 로직은 기존과 동일하게 유지
|
|
|
|
|
log.debug("[NEW-BASIC] txId: {}", body.getTxId());
|
|
|
|
|
return data.get(0);
|
|
|
|
|
NewBasicResponse body = data.get(0);
|
|
|
|
|
// 응답 정보 업데이트 (txId 포함)
|
|
|
|
|
CarBassMatterInqireVO responseUpdate = CarBassMatterInqireVO.fromNewExchange(generatedId, env);
|
|
|
|
|
bassMatterLogService.updateResponseNewTx(responseUpdate);
|
|
|
|
|
|
|
|
|
|
log.debug("[NEW-BASIC] txId: {}", env.getTxId());
|
|
|
|
|
return body;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -183,70 +190,6 @@ public class ExternalVehicleApiServiceImpl extends EgovAbstractServiceImpl imple
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 구 등록원부 API 호출 (내부용)
|
|
|
|
|
*/
|
|
|
|
|
private NewLedgerResponse callOldLedgerApi(NewLedgerRequest request) {
|
|
|
|
|
log.debug("[OLD-LEDGER] 자동차 등록원부 조회 API 호출");
|
|
|
|
|
|
|
|
|
|
String generatedId = null;
|
|
|
|
|
try {
|
|
|
|
|
CarLedgerFrmbkVO init = CarLedgerFrmbkVO.fromNewRequest(request);
|
|
|
|
|
generatedId = ledgerLogService.createInitialRequestNewTx(init);
|
|
|
|
|
|
|
|
|
|
Envelope<NewLedgerRequest> requestEnvelope = new Envelope<>(request);
|
|
|
|
|
HttpHeaders headers = new HttpHeaders();
|
|
|
|
|
headers.setContentType(MediaType.APPLICATION_JSON);
|
|
|
|
|
HttpEntity<Envelope<NewLedgerRequest>> requestEntity = new HttpEntity<>(requestEnvelope, headers);
|
|
|
|
|
|
|
|
|
|
ResponseEntity<ApiExchangeEnvelope<NewLedgerRequest, NewLedgerResponse>> responseEntity = restTemplate.exchange(
|
|
|
|
|
vmisProperties.getExternal().getApi().getUrl().buildOldLedgerUrl(),
|
|
|
|
|
HttpMethod.POST,
|
|
|
|
|
requestEntity,
|
|
|
|
|
new ParameterizedTypeReference<ApiExchangeEnvelope<NewLedgerRequest, NewLedgerResponse>>() {}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (responseEntity.getStatusCode() == HttpStatus.OK && responseEntity.getBody() != null) {
|
|
|
|
|
ApiExchangeEnvelope<NewLedgerRequest, NewLedgerResponse> env = responseEntity.getBody();
|
|
|
|
|
List<NewLedgerResponse> data = (env.getResponse() != null) ? env.getResponse().getData() : null;
|
|
|
|
|
if (data != null && !data.isEmpty()) {
|
|
|
|
|
NewLedgerResponse body = data.get(0);
|
|
|
|
|
CarLedgerFrmbkVO masterUpdate = CarLedgerFrmbkVO.fromNewResponseMaster(generatedId, body);
|
|
|
|
|
masterUpdate.setTxId(env.getTxId());
|
|
|
|
|
ledgerLogService.updateResponseNewTx(masterUpdate);
|
|
|
|
|
|
|
|
|
|
List<CarLedgerFrmbkDtlVO> details = CarLedgerFrmbkDtlVO.listNewFromExchange(env, generatedId);
|
|
|
|
|
if (details != null && !details.isEmpty()) {
|
|
|
|
|
ledgerLogService.saveDetailsNewTx(generatedId, details);
|
|
|
|
|
}
|
|
|
|
|
log.debug("[OLD-LEDGER] txId: {}", env.getTxId());
|
|
|
|
|
return body;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
log.warn("[OLD-LEDGER] 자동차 등록원부 조회 응답이 비어있음");
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
if (generatedId != null) {
|
|
|
|
|
try {
|
|
|
|
|
String detail = ExceptionDetailUtil.buildForLog(e);
|
|
|
|
|
CarLedgerFrmbkVO errorLog = CarLedgerFrmbkVO.builder()
|
|
|
|
|
.carLedgerFrmbkId(generatedId)
|
|
|
|
|
.linkRsltCd(ApiConstant.CNTC_RESULT_CODE_ERROR)
|
|
|
|
|
.linkRsltDtl(detail)
|
|
|
|
|
.build();
|
|
|
|
|
ledgerLogService.updateResponseNewTx(errorLog);
|
|
|
|
|
log.error("[EXTERNAL-OLD-LEDGER-ERR-LOG] API 호출 에러 정보 저장 완료(별도TX) - ID: {}, detail: {}", generatedId, detail, e);
|
|
|
|
|
} catch (Exception ignore) {
|
|
|
|
|
log.error("[EXTERNAL-OLD-LEDGER-ERR-LOG] 에러 로그 저장 실패 - ID: {}", generatedId, ignore);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
log.error("[OLD-LEDGER] 자동차 등록원부 조회 API 호출 실패", e);
|
|
|
|
|
throw new MessageException("[OLD-LEDGER] 자동차 등록원부 조회 실패: " + e.getMessage(), e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 신 등록원부 API 호출 (내부용)
|
|
|
|
|
*/
|
|
|
|
|
@ -348,4 +291,130 @@ public class ExternalVehicleApiServiceImpl extends EgovAbstractServiceImpl imple
|
|
|
|
|
oldRecord.setVin(newRecord.getVin());
|
|
|
|
|
return oldRecord;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* OldBasicResponse를 NewBasicResponse로 변환
|
|
|
|
|
*
|
|
|
|
|
* @param oldResponse 구 API 응답 객체
|
|
|
|
|
* @return 신 API 응답 형식의 객체
|
|
|
|
|
*/
|
|
|
|
|
private NewBasicResponse convertToNewBasicResponse(OldBasicResponse oldResponse) {
|
|
|
|
|
if (oldResponse == null) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
NewBasicResponse newResponse = new NewBasicResponse();
|
|
|
|
|
|
|
|
|
|
// 공통 응답 필드 변환 (필드명이 다름)
|
|
|
|
|
newResponse.setLinkRsltCd(oldResponse.getCntcResultCode());
|
|
|
|
|
newResponse.setLinkRsltDtl(oldResponse.getCntcResultDtls());
|
|
|
|
|
|
|
|
|
|
// Record 변환
|
|
|
|
|
if (oldResponse.getRecord() != null && !oldResponse.getRecord().isEmpty()) {
|
|
|
|
|
List<NewBasicResponse.Record> newRecords = oldResponse.getRecord().stream()
|
|
|
|
|
.map(this::convertOldRecordToNewRecord)
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
newResponse.setRecord(newRecords);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return newResponse;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* OldBasicResponse.Record를 NewBasicResponse.Record로 변환
|
|
|
|
|
*
|
|
|
|
|
* @param oldRecord 구 API Record 객체
|
|
|
|
|
* @return 신 API Record 객체
|
|
|
|
|
*/
|
|
|
|
|
private NewBasicResponse.Record convertOldRecordToNewRecord(OldBasicResponse.Record oldRecord) {
|
|
|
|
|
NewBasicResponse.Record newRecord = new NewBasicResponse.Record();
|
|
|
|
|
|
|
|
|
|
// 필드명 매핑 (구 → 신)
|
|
|
|
|
newRecord.setYridnw(oldRecord.getPrye());
|
|
|
|
|
newRecord.setRegYmd(oldRecord.getRegistDe());
|
|
|
|
|
newRecord.setErsrRegSeCd(oldRecord.getErsrRegistSeCode());
|
|
|
|
|
newRecord.setErsrRegSeNm(oldRecord.getErsrRegistSeNm());
|
|
|
|
|
newRecord.setErsrRegYmd(oldRecord.getErsrRegistDe());
|
|
|
|
|
newRecord.setRegDtlCd(oldRecord.getRegistDetailCode());
|
|
|
|
|
newRecord.setDsplvl(oldRecord.getDsplvl());
|
|
|
|
|
newRecord.setUsgsrhldStdgCd(oldRecord.getUseStrnghldLegaldongCode());
|
|
|
|
|
newRecord.setUsgsrhldDongCd(oldRecord.getUseStrnghldAdstrdCode());
|
|
|
|
|
newRecord.setUsgsrhldMtnYn(oldRecord.getUseStrnghldMntn());
|
|
|
|
|
newRecord.setUsgsrhldLnbr(oldRecord.getUseStrnghldLnbr());
|
|
|
|
|
newRecord.setUsgsrhldHo(oldRecord.getUseStrnghldHo());
|
|
|
|
|
newRecord.setUsgsrhldAddrNm(oldRecord.getUseStrnghldAdresNm());
|
|
|
|
|
newRecord.setUsgsrhldRoadNmCd(oldRecord.getUseStrnghldRoadNmCode());
|
|
|
|
|
newRecord.setUsgsrhldUdgdBldgSeCd(oldRecord.getUsgsrhldUndgrndBuldSeCode());
|
|
|
|
|
newRecord.setUsgsrhldBmno(oldRecord.getUseStrnghldBuldMainNo());
|
|
|
|
|
newRecord.setUsgsrhldBsno(oldRecord.getUseStrnghldBuldSubNo());
|
|
|
|
|
newRecord.setUsgsrhldWholAddr(oldRecord.getUsgsrhldAdresFull());
|
|
|
|
|
newRecord.setRprsOwnrMbrSeCd(oldRecord.getMberSeCode());
|
|
|
|
|
newRecord.setRprsOwnrNm(oldRecord.getMberNm());
|
|
|
|
|
newRecord.setRprsvOwnrIdecno(oldRecord.getMberSeNo());
|
|
|
|
|
newRecord.setRprsOwnrTelno(oldRecord.getTelno());
|
|
|
|
|
newRecord.setOwnrStdgCd(oldRecord.getOwnerLegaldongCode());
|
|
|
|
|
newRecord.setOwnrDongCd(oldRecord.getOwnerAdstrdCode());
|
|
|
|
|
newRecord.setOwnrMtnYn(oldRecord.getOwnerMntn());
|
|
|
|
|
newRecord.setOwnrLnbr(oldRecord.getOwnerLnbr());
|
|
|
|
|
newRecord.setOwnrHo(oldRecord.getOwnerHo());
|
|
|
|
|
newRecord.setOwnrAddrNm(oldRecord.getOwnerAdresNm());
|
|
|
|
|
newRecord.setOwnrRoadNmCd(oldRecord.getOwnerRoadNmCode());
|
|
|
|
|
newRecord.setOwnrUdgdBldgSeCd(oldRecord.getOwnerUndgrndBuldSeCode());
|
|
|
|
|
newRecord.setOwnrBmno(oldRecord.getOwnerBuldMainNo());
|
|
|
|
|
newRecord.setOwnrBsno(oldRecord.getOwnerBuldSubNo());
|
|
|
|
|
newRecord.setOwnrWholAddr(oldRecord.getOwnerAdresFull());
|
|
|
|
|
newRecord.setRearVhrno(oldRecord.getAftrVhrno());
|
|
|
|
|
newRecord.setUseFuelCd(oldRecord.getUseFuelCode());
|
|
|
|
|
newRecord.setUsgSeCd(oldRecord.getPrposSeCode());
|
|
|
|
|
newRecord.setMtrsFomNm(oldRecord.getMtrsFomNm());
|
|
|
|
|
newRecord.setBfrVhrno(oldRecord.getFrntVhrno());
|
|
|
|
|
newRecord.setVhrno(oldRecord.getVhrno());
|
|
|
|
|
newRecord.setVin(oldRecord.getVin());
|
|
|
|
|
newRecord.setAtmbNm(oldRecord.getCnm());
|
|
|
|
|
newRecord.setVhclTotlWt(oldRecord.getVhcleTotWt());
|
|
|
|
|
newRecord.setVeagEndYmd(oldRecord.getCaagEndde());
|
|
|
|
|
newRecord.setChgYmd(oldRecord.getChangeDe());
|
|
|
|
|
newRecord.setCarmdlAsortCd(oldRecord.getVhctyAsortCode());
|
|
|
|
|
newRecord.setCarmdlTypeCd(oldRecord.getVhctyTyCode());
|
|
|
|
|
newRecord.setCarmdlSeCd(oldRecord.getVhctySeCode());
|
|
|
|
|
newRecord.setMxmmLdg(oldRecord.getMxmmLdg());
|
|
|
|
|
newRecord.setCarmdlAsortNm(oldRecord.getVhctyAsortNm());
|
|
|
|
|
newRecord.setCarmdlTypeNm(oldRecord.getVhctyTyNm());
|
|
|
|
|
newRecord.setCarmdlClsfNm(oldRecord.getVhctySeNm());
|
|
|
|
|
newRecord.setFrstRegYmd(oldRecord.getFrstRegistDe());
|
|
|
|
|
newRecord.setFomNm(oldRecord.getFomNm());
|
|
|
|
|
newRecord.setAcqsYmd(oldRecord.getAcqsDe());
|
|
|
|
|
newRecord.setAcqsEndYmd(oldRecord.getAcqsEndDe());
|
|
|
|
|
newRecord.setFbctnYmd(oldRecord.getYblMd());
|
|
|
|
|
newRecord.setTransrRegYmd(oldRecord.getTransrRegistDe());
|
|
|
|
|
newRecord.setSpcfRegSttsCd(oldRecord.getSpcfRegistSttusCode());
|
|
|
|
|
newRecord.setColorNm(oldRecord.getColorNm());
|
|
|
|
|
newRecord.setMrtgCnt(oldRecord.getMrtgCo());
|
|
|
|
|
newRecord.setSzrCnt(oldRecord.getSeizrCo());
|
|
|
|
|
newRecord.setStrctChgCnt(oldRecord.getStmdCo());
|
|
|
|
|
newRecord.setNoplTcsdyYn(oldRecord.getNmplCsdyAt());
|
|
|
|
|
newRecord.setNoplTcsdyAvtsmtYmd(oldRecord.getNmplCsdyRemnrDe());
|
|
|
|
|
newRecord.setSrcSeCd(oldRecord.getOriginSeCode());
|
|
|
|
|
newRecord.setNoplTSpcfctCd(oldRecord.getNmplStndrdCode());
|
|
|
|
|
newRecord.setAcqsAmt(oldRecord.getAcqsAmount());
|
|
|
|
|
newRecord.setInspVldPdBgngYmd(oldRecord.getInsptValidPdBgnde());
|
|
|
|
|
newRecord.setInspVldPdEndYmd(oldRecord.getInsptValidPdEndde());
|
|
|
|
|
newRecord.setUsgsrhldGrcCd(oldRecord.getUseStrnghldGrcCode());
|
|
|
|
|
newRecord.setRdcpctCnt(oldRecord.getTkcarPscapCo());
|
|
|
|
|
newRecord.setSpmnno(oldRecord.getSpmnno());
|
|
|
|
|
newRecord.setDrvngDstnc(oldRecord.getTrvlDstnc());
|
|
|
|
|
newRecord.setFrstRegAplyRcptNo(oldRecord.getFrstRegistRqrcno());
|
|
|
|
|
newRecord.setVlntErsrPrvntcAvtsmtYmd(oldRecord.getVlntErsrPrvntcNticeDe());
|
|
|
|
|
newRecord.setOgnzNm(oldRecord.getRegistInsttNm());
|
|
|
|
|
newRecord.setPrcsImprtyRsnCd(oldRecord.getProcessImprtyResnCode());
|
|
|
|
|
newRecord.setPrcsImprtyRsnDtls(oldRecord.getProcessImprtyResnDtls());
|
|
|
|
|
newRecord.setCbdLt(oldRecord.getCbdLt());
|
|
|
|
|
newRecord.setCbdBt(oldRecord.getCbdBt());
|
|
|
|
|
newRecord.setCbdHg(oldRecord.getCbdHg());
|
|
|
|
|
newRecord.setFrstMxmmLdg(oldRecord.getFrstMxmmLdg());
|
|
|
|
|
newRecord.setFuelCnsmprt(oldRecord.getFuelCnsmpRt());
|
|
|
|
|
newRecord.setElctyCmpndFuelCnsmprt(oldRecord.getElctyCmpndFuelCnsmpRt());
|
|
|
|
|
|
|
|
|
|
return newRecord;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|