refactor: VehicleBasicInfoVO, VehicleLedgerVO 제거하고 BasicResponse, LedgerResponse 직접 사용
중복 VO 제거 및 응답 모델 단순화 ## 제거된 파일 - ❌ VehicleBasicInfoVO.java - ❌ VehicleLedgerVO.java - ❌ VehicleResponseMapper.java (변환 로직 제거) ## 변경된 사용처 - VehicleApiResponseVO: BasicResponse, LedgerResponse 직접 사용 - InternalVehicleInfoServiceImpl: Mapper 제거하고 BasicResponse/LedgerResponse 직접 반환 - ExternalVehicleApiService: 동일하게 BasicResponse/LedgerResponse 사용 ## 최종 모델 구조 (9개) ``` api/model/ ├── Envelope.java # 공통 Envelope ├── VehicleApiResponseVO.java # 최상위 응답 ├── request/ # 요청 (2개) │ ├── BasicRequest.java │ └── LedgerRequest.java └── response/ # 응답 (5개) ├── BasicResponse.java ⭐ 클라이언트 응답용 ├── LedgerResponse.java ⭐ 클라이언트 응답용 ├── VmisCarBassMatterInqireVO.java # DB 저장용 ├── VmisCarLedgerFrmbkVO.java # DB 저장용 └── VmisCarLedgerFrmbkDtlVO.java # DB 저장용 ``` ## 효과 - 중복 모델 제거 (3개 파일 삭제) - 변환 레이어 제거 (VehicleResponseMapper 삭제) - Internal/External 모두 동일한 응답 모델 사용 - 코드 간소화 및 유지보수성 향상 ## 빌드 결과 ✅ BUILD SUCCESSFUL 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>internalApi
parent
8c16d6cdf6
commit
ad07645bb6
@ -1,165 +0,0 @@
|
||||
package go.kr.project.api.internal.util;
|
||||
|
||||
import go.kr.project.api.model.response.VehicleBasicInfoVO;
|
||||
import go.kr.project.api.model.response.VehicleLedgerVO;
|
||||
import go.kr.project.api.model.response.BasicResponse;
|
||||
import go.kr.project.api.model.response.LedgerResponse;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 차량 응답 모델 변환 유틸리티
|
||||
*
|
||||
* <p>내부 VMIS 모델(BasicResponse, LedgerResponse)을
|
||||
* 외부 API VO(VehicleBasicInfoVO, VehicleLedgerVO)로 변환합니다.</p>
|
||||
*/
|
||||
public class VehicleResponseMapper {
|
||||
|
||||
/**
|
||||
* BasicResponse를 VehicleBasicInfoVO로 변환
|
||||
*
|
||||
* @param basicResponse 내부 기본정보 응답
|
||||
* @return 외부 API용 기본정보 VO
|
||||
*/
|
||||
public static VehicleBasicInfoVO toVehicleBasicInfoVO(BasicResponse basicResponse) {
|
||||
if (basicResponse == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
VehicleBasicInfoVO vo = new VehicleBasicInfoVO();
|
||||
vo.setCntcResultCode(basicResponse.getCntcResultCode());
|
||||
vo.setCntcResultDtls(basicResponse.getCntcResultDtls());
|
||||
|
||||
// record 변환
|
||||
if (basicResponse.getRecord() != null && !basicResponse.getRecord().isEmpty()) {
|
||||
List<VehicleBasicInfoVO.Record> records = new ArrayList<VehicleBasicInfoVO.Record>();
|
||||
for (BasicResponse.Record src : basicResponse.getRecord()) {
|
||||
VehicleBasicInfoVO.Record dest = new VehicleBasicInfoVO.Record();
|
||||
|
||||
// 주요 필드 매핑
|
||||
dest.setVhrno(src.getVhrno());
|
||||
dest.setVin(src.getVin());
|
||||
dest.setCnm(src.getCnm());
|
||||
dest.setMberNm(src.getMberNm());
|
||||
dest.setMberSeNo(src.getMberSeNo());
|
||||
dest.setMberSeCode(src.getMberSeCode());
|
||||
dest.setTelno(src.getTelno());
|
||||
dest.setPrye(src.getPrye());
|
||||
dest.setRegistDe(src.getRegistDe());
|
||||
dest.setFrstRegistDe(src.getFrstRegistDe());
|
||||
dest.setColorNm(src.getColorNm());
|
||||
dest.setDsplvl(src.getDsplvl());
|
||||
dest.setVhctyAsortNm(src.getVhctyAsortNm());
|
||||
dest.setVhctyTyNm(src.getVhctyTyNm());
|
||||
dest.setVhctySeNm(src.getVhctySeNm());
|
||||
dest.setInsptValidPdBgnde(src.getInsptValidPdBgnde());
|
||||
dest.setInsptValidPdEndde(src.getInsptValidPdEndde());
|
||||
dest.setUsgsrhldAdresFull(src.getUsgsrhldAdresFull());
|
||||
dest.setOwnerAdresFull(src.getOwnerAdresFull());
|
||||
|
||||
// 추가 필드
|
||||
dest.setErsrRegistSeCode(src.getErsrRegistSeCode());
|
||||
dest.setErsrRegistSeNm(src.getErsrRegistSeNm());
|
||||
dest.setErsrRegistDe(src.getErsrRegistDe());
|
||||
dest.setRegistDetailCode(src.getRegistDetailCode());
|
||||
dest.setUseStrnghldLegaldongCode(src.getUseStrnghldLegaldongCode());
|
||||
dest.setUseStrnghldAdstrdCode(src.getUseStrnghldAdstrdCode());
|
||||
dest.setUseStrnghldMntn(src.getUseStrnghldMntn());
|
||||
dest.setUseStrnghldLnbr(src.getUseStrnghldLnbr());
|
||||
dest.setUseStrnghldHo(src.getUseStrnghldHo());
|
||||
dest.setUseStrnghldAdresNm(src.getUseStrnghldAdresNm());
|
||||
dest.setVhcleTotWt(src.getVhcleTotWt());
|
||||
dest.setCaagEndde(src.getCaagEndde());
|
||||
dest.setVhctyAsortCode(src.getVhctyAsortCode());
|
||||
dest.setVhctyTyCode(src.getVhctyTyCode());
|
||||
dest.setVhctySeCode(src.getVhctySeCode());
|
||||
dest.setMxmmLdg(src.getMxmmLdg());
|
||||
dest.setFomNm(src.getFomNm());
|
||||
dest.setUseFuelCode(src.getUseFuelCode());
|
||||
dest.setPrposSeCode(src.getPrposSeCode());
|
||||
dest.setMtrsFomNm(src.getMtrsFomNm());
|
||||
dest.setAcqsAmount(src.getAcqsAmount());
|
||||
dest.setTkcarPscapCo(src.getTkcarPscapCo());
|
||||
dest.setSpmnno(src.getSpmnno());
|
||||
dest.setTrvlDstnc(src.getTrvlDstnc());
|
||||
|
||||
records.add(dest);
|
||||
}
|
||||
vo.setRecord(records);
|
||||
}
|
||||
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
* LedgerResponse를 VehicleLedgerVO로 변환
|
||||
*
|
||||
* @param ledgerResponse 내부 등록원부 응답
|
||||
* @return 외부 API용 등록원부 VO
|
||||
*/
|
||||
public static VehicleLedgerVO toLedgerVO(LedgerResponse ledgerResponse) {
|
||||
if (ledgerResponse == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
VehicleLedgerVO vo = new VehicleLedgerVO();
|
||||
|
||||
// 연계 결과
|
||||
vo.setCntcResultCode(ledgerResponse.getCntcResultCode());
|
||||
vo.setCntcResultDtls(ledgerResponse.getCntcResultDtls());
|
||||
|
||||
// 마스터 정보 (VehicleLedgerVO에 실제 존재하는 필드만 설정)
|
||||
vo.setLedgerGroupNo(ledgerResponse.getLedgerGroupNo());
|
||||
vo.setLedgerIndvdlzNo(ledgerResponse.getLedgerIndvdlzNo());
|
||||
vo.setVhmno(ledgerResponse.getVhmno());
|
||||
vo.setVhrno(ledgerResponse.getVhrno());
|
||||
vo.setVin(ledgerResponse.getVin());
|
||||
vo.setVhctyAsortCode(ledgerResponse.getVhctyAsortCode());
|
||||
vo.setVhctyAsortNm(ledgerResponse.getVhctyAsortNm());
|
||||
vo.setCnm(ledgerResponse.getCnm());
|
||||
vo.setColorNm(ledgerResponse.getColorNm());
|
||||
vo.setPrposSeCode(ledgerResponse.getPrposSeCode());
|
||||
vo.setPrposSeNm(ledgerResponse.getPrposSeNm());
|
||||
vo.setMtrsFomNm(ledgerResponse.getMtrsFomNm());
|
||||
vo.setFomNm(ledgerResponse.getFomNm());
|
||||
vo.setAcqsAmount(ledgerResponse.getAcqsAmount());
|
||||
vo.setFrstRegistDe(ledgerResponse.getFrstRegistDe());
|
||||
vo.setCaagEndde(ledgerResponse.getCaagEndde());
|
||||
vo.setPrye(ledgerResponse.getPrye());
|
||||
vo.setYblMd(ledgerResponse.getYblMd());
|
||||
vo.setTrvlDstnc(ledgerResponse.getTrvlDstnc());
|
||||
vo.setInsptValidPdBgnde(ledgerResponse.getInsptValidPdBgnde());
|
||||
vo.setInsptValidPdEndde(ledgerResponse.getInsptValidPdEndde());
|
||||
vo.setNmplCsdyAt(ledgerResponse.getNmplCsdyAt());
|
||||
vo.setErsrRegistDe(ledgerResponse.getErsrRegistDe());
|
||||
vo.setErsrRegistSeCode(ledgerResponse.getErsrRegistSeCode());
|
||||
vo.setErsrRegistSeNm(ledgerResponse.getErsrRegistSeNm());
|
||||
vo.setAdres(ledgerResponse.getAdres());
|
||||
vo.setAdresNm(ledgerResponse.getAdresNm());
|
||||
vo.setTelno(ledgerResponse.getTelno());
|
||||
vo.setMberNm(ledgerResponse.getMberNm());
|
||||
vo.setMberSeCode(ledgerResponse.getMberSeCode());
|
||||
vo.setMberSeNo(ledgerResponse.getMberSeNo());
|
||||
|
||||
// record 변경내역 변환
|
||||
if (ledgerResponse.getRecord() != null && !ledgerResponse.getRecord().isEmpty()) {
|
||||
List<VehicleLedgerVO.Record> records = new ArrayList<VehicleLedgerVO.Record>();
|
||||
for (LedgerResponse.Record src : ledgerResponse.getRecord()) {
|
||||
VehicleLedgerVO.Record dest = new VehicleLedgerVO.Record();
|
||||
dest.setMainchk(src.getMainchk());
|
||||
dest.setChangeJobSeCode(src.getChangeJobSeCode());
|
||||
dest.setMainno(src.getMainno());
|
||||
dest.setSubno(src.getSubno());
|
||||
dest.setDtls(src.getDtls());
|
||||
dest.setChangeDe(src.getChangeDe());
|
||||
dest.setGubunNm(src.getGubunNm());
|
||||
records.add(dest);
|
||||
}
|
||||
vo.setRecord(records);
|
||||
}
|
||||
|
||||
return vo;
|
||||
}
|
||||
}
|
||||
@ -1,80 +0,0 @@
|
||||
package go.kr.project.api.model.response;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 차량 기본정보 조회 응답 VO
|
||||
*/
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
@Getter
|
||||
@Setter
|
||||
public class VehicleBasicInfoVO {
|
||||
|
||||
@JsonProperty("CNTC_RESULT_CODE")
|
||||
private String cntcResultCode;
|
||||
|
||||
@JsonProperty("CNTC_RESULT_DTLS")
|
||||
private String cntcResultDtls;
|
||||
|
||||
@JsonProperty("record")
|
||||
private List<Record> record;
|
||||
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
@Getter
|
||||
@Setter
|
||||
public static class Record {
|
||||
@JsonProperty("VHRNO") private String vhrno; // 차량번호
|
||||
@JsonProperty("VIN") private String vin; // 차대번호
|
||||
@JsonProperty("CNM") private String cnm; // 차명
|
||||
@JsonProperty("MBER_NM") private String mberNm; // 소유자명
|
||||
@JsonProperty("MBER_SE_NO") private String mberSeNo; // 소유자번호
|
||||
@JsonProperty("TELNO") private String telno; // 전화번호
|
||||
@JsonProperty("PRYE") private String prye; // 연식
|
||||
@JsonProperty("REGIST_DE") private String registDe; // 등록일
|
||||
@JsonProperty("FRST_REGIST_DE") private String frstRegistDe; // 최초등록일
|
||||
@JsonProperty("COLOR_NM") private String colorNm; // 색상명
|
||||
@JsonProperty("DSPLVL") private String dsplvl; // 배기량
|
||||
@JsonProperty("VHCTY_ASORT_NM") private String vhctyAsortNm; // 차종종별명
|
||||
@JsonProperty("VHCTY_TY_NM") private String vhctyTyNm; // 차종유형명
|
||||
@JsonProperty("VHCTY_SE_NM") private String vhctySeNm; // 차종분류명
|
||||
@JsonProperty("INSPT_VALID_PD_BGNDE") private String insptValidPdBgnde; // 검사유효기간시작일
|
||||
@JsonProperty("INSPT_VALID_PD_ENDDE") private String insptValidPdEndde; // 검사유효기간종료일
|
||||
@JsonProperty("USGSRHLD_ADRES_FULL") private String usgsrhldAdresFull; // 사용본거지전체주소
|
||||
@JsonProperty("OWNER_ADRES_FULL") private String ownerAdresFull; // 소유자전체주소
|
||||
|
||||
// 추가 필드들
|
||||
@JsonProperty("ERSR_REGIST_SE_CODE") private String ersrRegistSeCode;
|
||||
@JsonProperty("ERSR_REGIST_SE_NM") private String ersrRegistSeNm;
|
||||
@JsonProperty("ERSR_REGIST_DE") private String ersrRegistDe;
|
||||
@JsonProperty("REGIST_DETAIL_CODE") private String registDetailCode;
|
||||
@JsonProperty("USE_STRNGHLD_LEGALDONG_CODE") private String useStrnghldLegaldongCode;
|
||||
@JsonProperty("USE_STRNGHLD_ADSTRD_CODE") private String useStrnghldAdstrdCode;
|
||||
@JsonProperty("USE_STRNGHLD_MNTN") private String useStrnghldMntn;
|
||||
@JsonProperty("USE_STRNGHLD_LNBR") private String useStrnghldLnbr;
|
||||
@JsonProperty("USE_STRNGHLD_HO") private String useStrnghldHo;
|
||||
@JsonProperty("USE_STRNGHLD_ADRES_NM") private String useStrnghldAdresNm;
|
||||
@JsonProperty("MBER_SE_CODE") private String mberSeCode;
|
||||
@JsonProperty("VHCLE_TOT_WT") private String vhcleTotWt;
|
||||
@JsonProperty("CAAG_ENDDE") private String caagEndde;
|
||||
@JsonProperty("VHCTY_ASORT_CODE") private String vhctyAsortCode;
|
||||
@JsonProperty("VHCTY_TY_CODE") private String vhctyTyCode;
|
||||
@JsonProperty("VHCTY_SE_CODE") private String vhctySeCode;
|
||||
@JsonProperty("MXMM_LDG") private String mxmmLdg;
|
||||
@JsonProperty("FOM_NM") private String fomNm;
|
||||
@JsonProperty("USE_FUEL_CODE") private String useFuelCode;
|
||||
@JsonProperty("PRPOS_SE_CODE") private String prposSeCode;
|
||||
@JsonProperty("MTRS_FOM_NM") private String mtrsFomNm;
|
||||
@JsonProperty("ACQS_AMOUNT") private String acqsAmount;
|
||||
@JsonProperty("TKCAR_PSCAP_CO") private String tkcarPscapCo;
|
||||
@JsonProperty("SPMNNO") private String spmnno;
|
||||
@JsonProperty("TRVL_DSTNC") private String trvlDstnc;
|
||||
}
|
||||
}
|
||||
@ -1,103 +0,0 @@
|
||||
package go.kr.project.api.model.response;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 자동차 등록원부(갑) 조회 응답 VO
|
||||
*/
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
@Getter
|
||||
@Setter
|
||||
public class VehicleLedgerVO {
|
||||
|
||||
@JsonProperty("CNTC_RESULT_CODE")
|
||||
private String cntcResultCode;
|
||||
|
||||
@JsonProperty("CNTC_RESULT_DTLS")
|
||||
private String cntcResultDtls;
|
||||
|
||||
@JsonProperty("VHRNO")
|
||||
private String vhrno; // 차량번호
|
||||
|
||||
@JsonProperty("VIN")
|
||||
private String vin; // 차대번호
|
||||
|
||||
@JsonProperty("CNM")
|
||||
private String cnm; // 차명
|
||||
|
||||
@JsonProperty("COLOR_NM")
|
||||
private String colorNm; // 색상명
|
||||
|
||||
@JsonProperty("PRYE")
|
||||
private String prye; // 연식
|
||||
|
||||
@JsonProperty("FRST_REGIST_DE")
|
||||
private String frstRegistDe; // 최초등록일
|
||||
|
||||
@JsonProperty("MBER_NM")
|
||||
private String mberNm; // 소유자명
|
||||
|
||||
@JsonProperty("MBER_SE_CODE")
|
||||
private String mberSeCode; // 회원구분코드
|
||||
|
||||
@JsonProperty("MBER_SE_NO")
|
||||
private String mberSeNo; // 회원번호
|
||||
|
||||
@JsonProperty("TELNO")
|
||||
private String telno; // 전화번호
|
||||
|
||||
@JsonProperty("INSPT_VALID_PD_BGNDE")
|
||||
private String insptValidPdBgnde; // 검사유효기간시작일
|
||||
|
||||
@JsonProperty("INSPT_VALID_PD_ENDDE")
|
||||
private String insptValidPdEndde; // 검사유효기간종료일
|
||||
|
||||
@JsonProperty("ADRES")
|
||||
private String adres; // 주소
|
||||
|
||||
@JsonProperty("ADRES_NM")
|
||||
private String adresNm; // 상세주소
|
||||
|
||||
@JsonProperty("record")
|
||||
private List<Record> record;
|
||||
|
||||
// 추가 필드들
|
||||
@JsonProperty("LEDGER_GROUP_NO") private String ledgerGroupNo;
|
||||
@JsonProperty("LEDGER_INDVDLZ_NO") private String ledgerIndvdlzNo;
|
||||
@JsonProperty("VHMNO") private String vhmno;
|
||||
@JsonProperty("VHCTY_ASORT_CODE") private String vhctyAsortCode;
|
||||
@JsonProperty("VHCTY_ASORT_NM") private String vhctyAsortNm;
|
||||
@JsonProperty("PRPOS_SE_CODE") private String prposSeCode;
|
||||
@JsonProperty("PRPOS_SE_NM") private String prposSeNm;
|
||||
@JsonProperty("MTRS_FOM_NM") private String mtrsFomNm;
|
||||
@JsonProperty("FOM_NM") private String fomNm;
|
||||
@JsonProperty("ACQS_AMOUNT") private String acqsAmount;
|
||||
@JsonProperty("CAAG_ENDDE") private String caagEndde;
|
||||
@JsonProperty("YBL_MD") private String yblMd;
|
||||
@JsonProperty("TRVL_DSTNC") private String trvlDstnc;
|
||||
@JsonProperty("ERSR_REGIST_DE") private String ersrRegistDe;
|
||||
@JsonProperty("ERSR_REGIST_SE_CODE") private String ersrRegistSeCode;
|
||||
@JsonProperty("ERSR_REGIST_SE_NM") private String ersrRegistSeNm;
|
||||
@JsonProperty("NMPL_CSDY_AT") private String nmplCsdyAt;
|
||||
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
@Getter
|
||||
@Setter
|
||||
public static class Record {
|
||||
@JsonProperty("MAINCHK") private String mainchk;
|
||||
@JsonProperty("CHANGE_JOB_SE_CODE") private String changeJobSeCode;
|
||||
@JsonProperty("MAINNO") private String mainno;
|
||||
@JsonProperty("SUBNO") private String subno;
|
||||
@JsonProperty("DTLS") private String dtls;
|
||||
@JsonProperty("CHANGE_DE") private String changeDe;
|
||||
@JsonProperty("GUBUN_NM") private String gubunNm;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue