refactor: 중복 클래스 통합 (Envelope, Request VO)

이름만 다르고 필드가 동일한 클래스 통합

## 통합된 클래스

### 1. Envelope (완전히 동일)
-  api/internal/model/common/Envelope.java (삭제)
-  api/vo/Envelope.java (유지)
- 변경: internal 패키지 전체에서 import 경로 수정

### 2. BasicRequest (더 완전한 버전 사용)
-  api/vo/VehicleBasicRequestVO.java (삭제)
-  api/internal/model/basic/BasicRequest.java (유지)
- 변경: ExternalVehicleApiService에서 BasicRequest 사용

### 3. LedgerRequest (더 완전한 버전 사용)
-  api/vo/VehicleLedgerRequestVO.java (삭제)
-  api/internal/model/ledger/LedgerRequest.java (유지)
- 변경: ExternalVehicleApiService에서 LedgerRequest 사용

## 효과
- 중복 클래스 3개 제거
- Internal/External 모두 동일한 모델 사용
- 코드 일관성 및 유지보수성 향상

## 빌드 결과
 BUILD SUCCESSFUL

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
internalApi
박성영 1 month ago
parent 2f03f11782
commit cecb99e87f

@ -1,5 +1,7 @@
package go.kr.project.api.external.service;
import go.kr.project.api.internal.model.basic.BasicRequest;
import go.kr.project.api.internal.model.ledger.LedgerRequest;
import go.kr.project.api.vo.*;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -114,18 +116,17 @@ public class ExternalVehicleApiService {
log.debug("차량 기본정보 조회 API 호출 - 차량번호: {}", vehicleNumber);
// 요청 객체 생성 - 차량번호만 설정 (나머지는 RequestEnricher가 자동 설정)
VehicleBasicRequestVO request = VehicleBasicRequestVO.builder()
.vhrno(vehicleNumber)
.build();
BasicRequest request = new BasicRequest();
request.setVhrno(vehicleNumber);
// Envelope로 감싸기
Envelope<VehicleBasicRequestVO> requestEnvelope = new Envelope<>(request);
Envelope<BasicRequest> requestEnvelope = new Envelope<>(request);
// HTTP 헤더 설정
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<Envelope<VehicleBasicRequestVO>> requestEntity = new HttpEntity<>(requestEnvelope, headers);
HttpEntity<Envelope<BasicRequest>> requestEntity = new HttpEntity<>(requestEnvelope, headers);
try {
// API 호출
@ -163,18 +164,17 @@ public class ExternalVehicleApiService {
log.debug("자동차 등록원부 조회 API 호출 - 차량번호: {}", vehicleNumber);
// 요청 객체 생성 - 차량번호만 설정 (나머지는 RequestEnricher가 자동 설정)
VehicleLedgerRequestVO request = VehicleLedgerRequestVO.builder()
.vhrno(vehicleNumber)
.build();
LedgerRequest request = new LedgerRequest();
request.setVhrno(vehicleNumber);
// Envelope로 감싸기
Envelope<VehicleLedgerRequestVO> requestEnvelope = new Envelope<>(request);
Envelope<LedgerRequest> requestEnvelope = new Envelope<>(request);
// HTTP 헤더 설정
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<Envelope<VehicleLedgerRequestVO>> requestEntity = new HttpEntity<>(requestEnvelope, headers);
HttpEntity<Envelope<LedgerRequest>> requestEntity = new HttpEntity<>(requestEnvelope, headers);
try {
// API 호출

@ -2,7 +2,7 @@ package go.kr.project.api.internal.client;
import go.kr.project.api.internal.model.basic.BasicRequest;
import go.kr.project.api.internal.model.basic.BasicResponse;
import go.kr.project.api.internal.model.common.Envelope;
import go.kr.project.api.vo.Envelope;
import go.kr.project.api.internal.model.ledger.LedgerRequest;
import go.kr.project.api.internal.model.ledger.LedgerResponse;
import org.springframework.http.ResponseEntity;

@ -6,7 +6,7 @@ import go.kr.project.api.config.properties.VmisProperties;
import go.kr.project.api.internal.gpki.GpkiService;
import go.kr.project.api.internal.model.basic.BasicRequest;
import go.kr.project.api.internal.model.basic.BasicResponse;
import go.kr.project.api.internal.model.common.Envelope;
import go.kr.project.api.vo.Envelope;
import go.kr.project.api.internal.model.ledger.LedgerRequest;
import go.kr.project.api.internal.model.ledger.LedgerResponse;
import go.kr.project.api.internal.util.TxIdUtil;

@ -2,7 +2,7 @@ package go.kr.project.api.internal.controller;
import go.kr.project.api.internal.model.basic.BasicRequest;
import go.kr.project.api.internal.model.basic.BasicResponse;
import go.kr.project.api.internal.model.common.Envelope;
import go.kr.project.api.vo.Envelope;
import go.kr.project.api.internal.model.ledger.LedgerRequest;
import go.kr.project.api.internal.model.ledger.LedgerResponse;
import go.kr.project.api.internal.service.VmisCarBassMatterInqireService;

@ -1,7 +1,7 @@
package go.kr.project.api.internal.model.basic;
import go.kr.project.api.config.ApiConstant;
import go.kr.project.api.internal.model.common.Envelope;
import go.kr.project.api.vo.Envelope;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;

@ -1,32 +0,0 @@
package go.kr.project.api.internal.model.common;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
import java.util.ArrayList;
import java.util.List;
/**
* : { "data": [ ... ] }
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
@Getter
@Setter
public class Envelope<T> {
@JsonProperty("data")
private List<T> data = new ArrayList<>();
public Envelope() {}
public Envelope(T single) {
if (single != null) this.data.add(single);
}
public Envelope(List<T> data) {
this.data = data;
}
}

@ -6,7 +6,7 @@ import go.kr.project.api.vo.VehicleBasicInfoVO;
import go.kr.project.api.vo.VehicleLedgerVO;
import go.kr.project.api.internal.model.basic.BasicRequest;
import go.kr.project.api.internal.model.basic.BasicResponse;
import go.kr.project.api.internal.model.common.Envelope;
import go.kr.project.api.vo.Envelope;
import go.kr.project.api.internal.model.ledger.LedgerRequest;
import go.kr.project.api.internal.model.ledger.LedgerResponse;
import go.kr.project.api.internal.util.VehicleResponseMapper;

@ -6,7 +6,7 @@ import go.kr.project.api.internal.util.ExceptionDetailUtil;
import go.kr.project.api.internal.model.basic.BasicRequest;
import go.kr.project.api.internal.model.basic.BasicResponse;
import go.kr.project.api.internal.model.basic.VmisCarBassMatterInqireVO;
import go.kr.project.api.internal.model.common.Envelope;
import go.kr.project.api.vo.Envelope;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;

@ -2,7 +2,7 @@ package go.kr.project.api.internal.service;
import go.kr.project.api.internal.client.GovernmentApi;
import go.kr.project.api.config.ApiConstant;
import go.kr.project.api.internal.model.common.Envelope;
import go.kr.project.api.vo.Envelope;
import go.kr.project.api.internal.model.ledger.VmisCarLedgerFrmbkDtlVO;
import go.kr.project.api.internal.model.ledger.VmisCarLedgerFrmbkVO;
import go.kr.project.api.internal.model.ledger.LedgerRequest;

@ -2,7 +2,7 @@ package go.kr.project.api.internal.service;
import go.kr.project.api.config.properties.VmisProperties;
import go.kr.project.api.internal.model.basic.BasicRequest;
import go.kr.project.api.internal.model.common.Envelope;
import go.kr.project.api.vo.Envelope;
import go.kr.project.api.internal.model.ledger.LedgerRequest;
import org.springframework.stereotype.Component;

@ -1,42 +0,0 @@
package go.kr.project.api.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
/**
* VO
*/
@Getter
@Setter
@Builder
public class VehicleBasicRequestVO {
@JsonProperty("INFO_SYS_ID")
private String infoSysId;
@JsonProperty("INFO_SYS_IP")
private String infoSysIp;
@JsonProperty("SIGUNGU_CODE")
private String sigunguCode;
@JsonProperty("CNTC_INFO_CODE")
private String cntcInfoCode;
@JsonProperty("CHARGER_ID")
private String chargerId;
@JsonProperty("CHARGER_IP")
private String chargerIp;
@JsonProperty("CHARGER_NM")
private String chargerNm;
@JsonProperty("VHRNO")
private String vhrno; // 차량번호
@JsonProperty("ONES_INFORMATION_OPEN")
private String onesInformationOpen;
}

@ -1,42 +0,0 @@
package go.kr.project.api.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
/**
* () VO
*/
@Getter
@Setter
@Builder
public class VehicleLedgerRequestVO {
@JsonProperty("INFO_SYS_ID")
private String infoSysId;
@JsonProperty("INFO_SYS_IP")
private String infoSysIp;
@JsonProperty("SIGUNGU_CODE")
private String sigunguCode;
@JsonProperty("CNTC_INFO_CODE")
private String cntcInfoCode;
@JsonProperty("CHARGER_ID")
private String chargerId;
@JsonProperty("CHARGER_IP")
private String chargerIp;
@JsonProperty("CHARGER_NM")
private String chargerNm;
@JsonProperty("VHRNO")
private String vhrno; // 차량번호
@JsonProperty("ONES_INFORMATION_OPEN")
private String onesInformationOpen;
}
Loading…
Cancel
Save