전체적인 old, new 구조로 변경 및 통합model 적용 진행중...

main
박성영 4 weeks ago
parent fb29fc8b31
commit f6f2cc5a16

@ -1,6 +1,8 @@
package go.kr.project.api.model;
import go.kr.project.api.model.request.NewBasicRequest;
import go.kr.project.api.model.request.OldBasicRequest;
import go.kr.project.api.model.response.NewBasicResponse;
import go.kr.project.api.model.response.OldBasicResponse;
import lombok.AllArgsConstructor;
import lombok.Builder;
@ -696,4 +698,164 @@ public class CarBassMatterInqireVO {
return builder.build();
}
/**
* NewBasicRequest VO ( )
*
* @param request API
* @return VO
*/
public static CarBassMatterInqireVO fromNewRequest(NewBasicRequest request) {
if (request == null) {
return null;
}
// 공통 메타 정보 매핑
CarBassMatterInqireVO.CarBassMatterInqireVOBuilder builder = CarBassMatterInqireVO.builder()
.infoSysId(request.getInfoSysId())
.infoSysIpAddr(request.getInfoSysIpAddr())
.sggCd(request.getSggCd())
.linkInfoCd(request.getLinkInfoCd())
.picId(request.getPicId())
.picIpAddr(request.getPicIpAddr())
.picNm(request.getPicNm());
// record가 있는 경우 첫 번째 record의 요청 정보 매핑
if (request.getRecord() != null && !request.getRecord().isEmpty()) {
NewBasicRequest.Record record = request.getRecord().get(0);
builder
.dmndLevyCrtrYmd(record.getLevyCrtrYmd()) // 과태료 기준일자
.dmndInqSeCd(record.getInqSeCd()) // 조회 구분 코드
.dmndVhrno(record.getVhrno()) // 차량번호
.dmndVin(record.getVin()); // 차대번호
}
return builder.build();
}
/**
* ApiExchangeEnvelope<NewBasicRequest, NewBasicResponse> VO ( )
*
* @param generatedId PK ID
* @param envelope API Envelope
* @return VO
*/
public static CarBassMatterInqireVO fromNewExchange(
String generatedId,
ApiExchangeEnvelope<NewBasicRequest, NewBasicResponse> envelope) {
if (envelope == null || envelope.getResponse() == null) {
return null;
}
Envelope<NewBasicResponse> response = envelope.getResponse();
List<NewBasicResponse> data = response.getData();
if (data == null || data.isEmpty()) {
return null;
}
NewBasicResponse firstData = data.get(0);
List<NewBasicResponse.Record> records = firstData.getRecord();
// 응답 정보 업데이트용 VO 빌드
CarBassMatterInqireVO.CarBassMatterInqireVOBuilder builder = CarBassMatterInqireVO.builder()
.carBassMatterInqireId(generatedId)
.txId(envelope.getTxId())
.linkRsltCd(firstData.getLinkRsltCd())
.linkRsltDtl(firstData.getLinkRsltDtl());
// record가 있는 경우 첫 번째 record의 상세 정보 매핑
if (records != null && !records.isEmpty()) {
NewBasicResponse.Record record = records.get(0);
builder
.yridnw(record.getYridnw())
.regYmd(record.getRegYmd())
.ersrRegSeCd(record.getErsrRegSeCd())
.ersrRegSeNm(record.getErsrRegSeNm())
.ersrRegYmd(record.getErsrRegYmd())
.regDtlCd(record.getRegDtlCd())
.dsplvl(record.getDsplvl())
.usgsrhldStdgCd(record.getUsgsrhldStdgCd())
.usgsrhldDongCd(record.getUsgsrhldDongCd())
.usgsrhldMtnYn(record.getUsgsrhldMtnYn())
.usgsrhldLnbr(record.getUsgsrhldLnbr())
.usgsrhldHo(record.getUsgsrhldHo())
.usgsrhldAddrNm(record.getUsgsrhldAddrNm())
.usgsrhldRoadNmCd(record.getUsgsrhldRoadNmCd())
.usgsrhldUdgdBldgSeCd(record.getUsgsrhldUdgdBldgSeCd())
.usgsrhldBmno(record.getUsgsrhldBmno())
.usgsrhldBsno(record.getUsgsrhldBsno())
.usgsrhldWholAddr(record.getUsgsrhldWholAddr())
.rprsOwnrMbrSeCd(record.getRprsOwnrMbrSeCd())
.rprsOwnrNm(record.getRprsOwnrNm())
.rprsvOwnrIdecno(record.getRprsvOwnrIdecno())
.rprsOwnrTelno(record.getRprsOwnrTelno())
.ownrStdgCd(record.getOwnrStdgCd())
.ownrDongCd(record.getOwnrDongCd())
.ownrMtnYn(record.getOwnrMtnYn())
.ownrLnbr(record.getOwnrLnbr())
.ownrHo(record.getOwnrHo())
.ownrAddrNm(record.getOwnrAddrNm())
.ownrRoadNmCd(record.getOwnrRoadNmCd())
.ownrUdgdBldgSeCd(record.getOwnrUdgdBldgSeCd())
.ownrBmno(record.getOwnrBmno())
.ownrBsno(record.getOwnrBsno())
.ownrWholaddr(record.getOwnrWholAddr())
.rearVhrno(record.getRearVhrno())
.useFuelCd(record.getUseFuelCd())
.usgSeCd(record.getUsgSeCd())
.mtrsFomNm(record.getMtrsFomNm())
.bfrVhrno(record.getBfrVhrno())
.vhrno(record.getVhrno())
.vin(record.getVin())
.atmbNm(record.getAtmbNm())
.vhclTotlWt(record.getVhclTotlWt())
.veagEndYmd(record.getVeagEndYmd())
.chgYmd(record.getChgYmd())
.carmdlAsortCd(record.getCarmdlAsortCd())
.carmdlTypeCd(record.getCarmdlTypeCd())
.carmdlSeCd(record.getCarmdlSeCd())
.mxmmLdg(record.getMxmmLdg())
.carmdlAsortNm(record.getCarmdlAsortNm())
.carmdlTypeNm(record.getCarmdlTypeNm())
.carmdlClsfNm(record.getCarmdlClsfNm())
.frstRegYmd(record.getFrstRegYmd())
.fomNm(record.getFomNm())
.acqsYmd(record.getAcqsYmd())
.acqsEndYmd(record.getAcqsEndYmd())
.fbctnYmd(record.getFbctnYmd())
.transrRegYmd(record.getTransrRegYmd())
.spcfRegSttsCd(record.getSpcfRegSttsCd())
.colorNm(record.getColorNm())
.mrtgCnt(record.getMrtgCnt())
.szrCnt(record.getSzrCnt())
.strctChgCnt(record.getStrctChgCnt())
.nopltCsdyYn(record.getNoplTcsdyYn())
.nopltCsdyAvtsmtYmd(record.getNoplTcsdyAvtsmtYmd())
.srcSeCd(record.getSrcSeCd())
.nopltSpcfctCd(record.getNoplTSpcfctCd())
.acqsAmt(record.getAcqsAmt())
.inspVldPdBgngYmd(record.getInspVldPdBgngYmd())
.inspVldPdEndYmd(record.getInspVldPdEndYmd())
.usgsrhldGrcCd(record.getUsgsrhldGrcCd())
.rdcpctCnt(record.getRdcpctCnt())
.spmnno(record.getSpmnno())
.drvngDstnc(record.getDrvngDstnc())
.frstRegAplyRcptNo(record.getFrstRegAplyRcptNo())
.vlntErsrPrvntcAvtsmtYmd(record.getVlntErsrPrvntcAvtsmtYmd())
.ognzNm(record.getOgnzNm())
.prcsImprtyRsnCd(record.getPrcsImprtyRsnCd())
.prcsImprtyRsnDtls(record.getPrcsImprtyRsnDtls())
.cbdLt(record.getCbdLt())
.cbdBt(record.getCbdBt())
.cbdHg(record.getCbdHg())
.frstMxmmLdg(record.getFrstMxmmLdg())
.fuelCnsmprt(record.getFuelCnsmprt())
.elctyCmpndFuelCnsmprt(record.getElctyCmpndFuelCnsmprt());
}
return builder.build();
}
}

@ -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;
}
}

@ -175,7 +175,7 @@ vmis:
external:
api:
url:
base: "http://localhost:18080/api/v1/vehicles" # VMIS-interface 서버 URL (운영)
base: "http://localhost:8081/api/v1/vehicles" # VMIS-interface 서버 URL (운영)
basic:
old-or-new: "old" # 과거 신규 API 선택
old-url: "/old-basic" # 자동차기본정보

@ -135,7 +135,7 @@
<if test="cbdHg != null">CBD_HG = #{cbdHg},</if>
<if test="frstMxmmLdg != null">FRST_MXMM_LDG = #{frstMxmmLdg},</if>
<if test="fuelCnsmprt != null">FUEL_CNSMPRT = #{fuelCnsmprt},</if>
<if test="elctyCmpndfuelCnsmprt != null">ELCTY_CMPND_FUEL_CNSMPRT = #{elctyCmpndfuelCnsmprt},</if>
<if test="elctyCmpndFuelCnsmprt != null">ELCTY_CMPND_FUEL_CNSMPRT = #{elctyCmpndFuelCnsmprt},</if>
<if test="rprsOwnrNm != null">RPRS_OWNR_NM = #{rprsOwnrNm},</if>
<if test="carFfnlgTrgtId != null">CAR_FFNLG_TRGT_ID = #{carFfnlgTrgtId}</if>
</set>

Loading…
Cancel
Save