refactor: VMIS 패키지 클래스에 Vmis prefix 추가 (Bean 충돌 해결)

VO, Service, Mapper 클래스 이름 충돌 문제 해결

## 문제
- history 패키지와 vmis 패키지에 동일한 이름의 VO 클래스 존재
- CarBassMatterInqireVO, CarLedgerFrmbkVO, CarLedgerFrmbkDtlVO 충돌
- Bean 생성 오류 발생

## 해결
모든 VMIS 패키지 클래스에 Vmis prefix 추가:

### VO 클래스 (충돌 해결)
- CarBassMatterInqireVO → VmisCarBassMatterInqireVO
- CarLedgerFrmbkVO → VmisCarLedgerFrmbkVO
- CarLedgerFrmbkDtlVO → VmisCarLedgerFrmbkDtlVO

### Service 클래스
- CarBassMatterInqireService → VmisCarBassMatterInqireService
- CarBassMatterInqireLogService → VmisCarBassMatterInqireLogService
- CarLedgerFrmbkService → VmisCarLedgerFrmbkService
- CarLedgerFrmbkLogService → VmisCarLedgerFrmbkLogService
- RequestEnricher → VmisRequestEnricher

### Mapper 클래스
- CarBassMatterInqireMapper → VmisCarBassMatterInqireMapper
- CarLedgerFrmbkMapper → VmisCarLedgerFrmbkMapper

### MyBatis XML 업데이트
- mapper namespace 및 resultType 변경
- CarBassMatterInqireMapper_maria.xml
- CarLedgerFrmbkMapper_maria.xml

## 빌드 성공 확인 
- Bean 충돌 완전 해결
- 전체 컴파일 성공

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

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

@ -5,8 +5,8 @@ import go.kr.project.vmis.model.basic.BasicResponse;
import go.kr.project.vmis.model.common.Envelope; import go.kr.project.vmis.model.common.Envelope;
import go.kr.project.vmis.model.ledger.LedgerRequest; import go.kr.project.vmis.model.ledger.LedgerRequest;
import go.kr.project.vmis.model.ledger.LedgerResponse; import go.kr.project.vmis.model.ledger.LedgerResponse;
import go.kr.project.vmis.service.CarBassMatterInqireService; import go.kr.project.vmis.service.VmisCarBassMatterInqireService;
import go.kr.project.vmis.service.CarLedgerFrmbkService; import go.kr.project.vmis.service.VmisCarLedgerFrmbkService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.ExampleObject; import io.swagger.v3.oas.annotations.media.ExampleObject;
@ -55,8 +55,8 @@ import org.springframework.web.bind.annotation.*;
@Tag(name = "Vehicle Interfaces", description = "시군구연계 자동차 정보 연계 API") @Tag(name = "Vehicle Interfaces", description = "시군구연계 자동차 정보 연계 API")
public class VehicleInterfaceController { public class VehicleInterfaceController {
private final CarBassMatterInqireService carBassMatterInqireService; private final VmisCarBassMatterInqireService carBassMatterInqireService;
private final CarLedgerFrmbkService carLedgerFrmbkService; private final VmisCarLedgerFrmbkService carLedgerFrmbkService;
/** /**

@ -1,6 +1,6 @@
package go.kr.project.vmis.mapper; package go.kr.project.vmis.mapper;
import go.kr.project.vmis.model.basic.CarBassMatterInqireVO; import go.kr.project.vmis.model.basic.VmisCarBassMatterInqireVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/** /**
@ -13,7 +13,7 @@ import org.apache.ibatis.annotations.Mapper;
* </ul> * </ul>
*/ */
@Mapper @Mapper
public interface CarBassMatterInqireMapper { public interface VmisCarBassMatterInqireMapper {
/** /**
* 퀀 ID . * 퀀 ID .
@ -32,7 +32,7 @@ public interface CarBassMatterInqireMapper {
* @param carBassMatterInqireVO * @param carBassMatterInqireVO
* @return * @return
*/ */
int insertCarBassMatterInqire(CarBassMatterInqireVO carBassMatterInqireVO); int insertCarBassMatterInqire(VmisCarBassMatterInqireVO carBassMatterInqireVO);
/** /**
* API . * API .
@ -42,7 +42,7 @@ public interface CarBassMatterInqireMapper {
* @param carBassMatterInqireVO (carBassMatterInqire ) * @param carBassMatterInqireVO (carBassMatterInqire )
* @return * @return
*/ */
int updateCarBassMatterInqire(CarBassMatterInqireVO carBassMatterInqireVO); int updateCarBassMatterInqire(VmisCarBassMatterInqireVO carBassMatterInqireVO);
/** /**
* ID . * ID .
@ -50,5 +50,5 @@ public interface CarBassMatterInqireMapper {
* @param carBassMatterInqire ID * @param carBassMatterInqire ID
* @return * @return
*/ */
CarBassMatterInqireVO selectCarBassMatterInqireById(String carBassMatterInqire); VmisCarBassMatterInqireVO selectCarBassMatterInqireById(String carBassMatterInqire);
} }

@ -1,7 +1,7 @@
package go.kr.project.vmis.mapper; package go.kr.project.vmis.mapper;
import go.kr.project.vmis.model.ledger.CarLedgerFrmbkDtlVO; import go.kr.project.vmis.model.ledger.VmisCarLedgerFrmbkDtlVO;
import go.kr.project.vmis.model.ledger.CarLedgerFrmbkVO; import go.kr.project.vmis.model.ledger.VmisCarLedgerFrmbkVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List; import java.util.List;
@ -10,19 +10,19 @@ import java.util.List;
* () Mapper * () Mapper
*/ */
@Mapper @Mapper
public interface CarLedgerFrmbkMapper { public interface VmisCarLedgerFrmbkMapper {
// ID 시퀀스 // ID 시퀀스
String selectNextCarLedgerFrmbkId(); String selectNextCarLedgerFrmbkId();
String selectNextCarLedgerFrmbkDtlId(); String selectNextCarLedgerFrmbkDtlId();
// 마스터 INSERT/UPDATE/SELECT // 마스터 INSERT/UPDATE/SELECT
int insertCarLedgerFrmbk(CarLedgerFrmbkVO vo); int insertCarLedgerFrmbk(VmisCarLedgerFrmbkVO vo);
int updateCarLedgerFrmbk(CarLedgerFrmbkVO vo); int updateCarLedgerFrmbk(VmisCarLedgerFrmbkVO vo);
CarLedgerFrmbkVO selectCarLedgerFrmbkById(String carLedgerFrmbkId); VmisCarLedgerFrmbkVO selectCarLedgerFrmbkById(String carLedgerFrmbkId);
// 상세 INSERT (단건) // 상세 INSERT (단건)
int insertCarLedgerFrmbkDtl(CarLedgerFrmbkDtlVO vo); int insertCarLedgerFrmbkDtl(VmisCarLedgerFrmbkDtlVO vo);
// 편의: 상세 일괄 (MyBatis foreach를 XML에서 사용할 수도 있으나, 여기서는 단건 호출을 반복) // 편의: 상세 일괄 (MyBatis foreach를 XML에서 사용할 수도 있으나, 여기서는 단건 호출을 반복)
} }

@ -19,11 +19,11 @@ import java.time.LocalDateTime;
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class CarBassMatterInqireVO { public class VmisCarBassMatterInqireVO {
// ==== Static factory/mapping methods (moved from Service) ==== // ==== Static factory/mapping methods (moved from Service) ====
public static CarBassMatterInqireVO fromRequest(BasicRequest request) { public static VmisCarBassMatterInqireVO fromRequest(BasicRequest request) {
return CarBassMatterInqireVO.builder() return VmisCarBassMatterInqireVO.builder()
.infoSysId(request.getInfoSysId()) .infoSysId(request.getInfoSysId())
.infoSysIp(request.getInfoSysIp()) .infoSysIp(request.getInfoSysIp())
.sigunguCode(request.getSigunguCode()) .sigunguCode(request.getSigunguCode())
@ -39,10 +39,10 @@ public class CarBassMatterInqireVO {
.build(); .build();
} }
public static CarBassMatterInqireVO fromResponse(String id, Envelope<BasicResponse> envelope) { public static VmisCarBassMatterInqireVO fromResponse(String id, Envelope<BasicResponse> envelope) {
if (envelope == null || envelope.getData() == null || envelope.getData().isEmpty()) return null; if (envelope == null || envelope.getData() == null || envelope.getData().isEmpty()) return null;
BasicResponse response = envelope.getData().get(0); BasicResponse response = envelope.getData().get(0);
CarBassMatterInqireVO.CarBassMatterInqireVOBuilder builder = CarBassMatterInqireVO.builder() VmisCarBassMatterInqireVO.VmisCarBassMatterInqireVOBuilder builder = VmisCarBassMatterInqireVO.builder()
.carBassMatterInqire(id) .carBassMatterInqire(id)
.cntcResultCode(response.getCntcResultCode()) .cntcResultCode(response.getCntcResultCode())
.cntcResultDtls(response.getCntcResultDtls()); .cntcResultDtls(response.getCntcResultDtls());
@ -53,7 +53,7 @@ public class CarBassMatterInqireVO {
return builder.build(); return builder.build();
} }
private static void applyRecord(CarBassMatterInqireVO.CarBassMatterInqireVOBuilder builder, BasicResponse.Record record) { private static void applyRecord(VmisCarBassMatterInqireVO.VmisCarBassMatterInqireVOBuilder builder, BasicResponse.Record record) {
builder builder
.prye(record.getPrye()) // 연식 .prye(record.getPrye()) // 연식
.registDe(record.getRegistDe()) // 등록일 .registDe(record.getRegistDe()) // 등록일

@ -18,14 +18,14 @@ import java.util.List;
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class CarLedgerFrmbkDtlVO { public class VmisCarLedgerFrmbkDtlVO {
// ==== Static factory/mapping methods (moved from Service) ==== // ==== Static factory/mapping methods (moved from Service) ====
public static List<CarLedgerFrmbkDtlVO> listFromResponse(LedgerResponse res, String masterId) { public static List<VmisCarLedgerFrmbkDtlVO> listFromResponse(LedgerResponse res, String masterId) {
List<CarLedgerFrmbkDtlVO> list = new ArrayList<>(); List<VmisCarLedgerFrmbkDtlVO> list = new ArrayList<>();
if (res == null || res.getRecord() == null) return list; if (res == null || res.getRecord() == null) return list;
for (LedgerResponse.Record r : res.getRecord()) { for (LedgerResponse.Record r : res.getRecord()) {
CarLedgerFrmbkDtlVO vo = CarLedgerFrmbkDtlVO.builder() VmisCarLedgerFrmbkDtlVO vo = VmisCarLedgerFrmbkDtlVO.builder()
.carLedgerFrmbkId(masterId) // 원부 마스터 ID (FK) .carLedgerFrmbkId(masterId) // 원부 마스터 ID (FK)
.mainchk(r.getMainchk()) // 주요 체크 .mainchk(r.getMainchk()) // 주요 체크
.changeJobSeCode(r.getChangeJobSeCode()) // 변경 작업 구분 코드 .changeJobSeCode(r.getChangeJobSeCode()) // 변경 작업 구분 코드

@ -15,11 +15,11 @@ import lombok.NoArgsConstructor;
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class CarLedgerFrmbkVO { public class VmisCarLedgerFrmbkVO {
// ==== Static factory/mapping methods (moved from Service) ==== // ==== Static factory/mapping methods (moved from Service) ====
public static CarLedgerFrmbkVO fromRequest(go.kr.project.vmis.model.ledger.LedgerRequest request) { public static VmisCarLedgerFrmbkVO fromRequest(go.kr.project.vmis.model.ledger.LedgerRequest request) {
return CarLedgerFrmbkVO.builder() return VmisCarLedgerFrmbkVO.builder()
.infoSysId(request.getInfoSysId()) .infoSysId(request.getInfoSysId())
.infoSysIp(request.getInfoSysIp()) .infoSysIp(request.getInfoSysIp())
.sigunguCode(request.getSigunguCode()) .sigunguCode(request.getSigunguCode())
@ -32,8 +32,8 @@ public class CarLedgerFrmbkVO {
.build(); .build();
} }
public static CarLedgerFrmbkVO fromResponseMaster(String id, go.kr.project.vmis.model.ledger.LedgerResponse res) { public static VmisCarLedgerFrmbkVO fromResponseMaster(String id, go.kr.project.vmis.model.ledger.LedgerResponse res) {
return CarLedgerFrmbkVO.builder() return VmisCarLedgerFrmbkVO.builder()
.carLedgerFrmbkId(id) // 등록원부 ID .carLedgerFrmbkId(id) // 등록원부 ID
.cntcResultCode(res.getCntcResultCode()) // 연계 결과 코드 .cntcResultCode(res.getCntcResultCode()) // 연계 결과 코드
.cntcResultDtls(res.getCntcResultDtls()) // 연계 결과 상세 .cntcResultDtls(res.getCntcResultDtls()) // 연계 결과 상세

@ -37,15 +37,15 @@ import java.util.List;
* <h3> :</h3> * <h3> :</h3>
* <ol> * <ol>
* <li> BasicRequest, LedgerRequest </li> * <li> BasicRequest, LedgerRequest </li>
* <li>CarBassMatterInqireService.basic() ()</li> * <li>VmisCarBassMatterInqireService.basic() ()</li>
* <li>CarLedgerFrmbkService.ledger() ()</li> * <li>VmisCarLedgerFrmbkService.ledger() ()</li>
* <li> VO (VehicleResponseMapper )</li> * <li> VO (VehicleResponseMapper )</li>
* <li>VehicleApiResponseVO </li> * <li>VehicleApiResponseVO </li>
* </ol> * </ol>
* *
* @see VehicleInfoService * @see VehicleInfoService
* @see CarBassMatterInqireService * @see VmisCarBassMatterInqireService
* @see CarLedgerFrmbkService * @see VmisCarLedgerFrmbkService
*/ */
@Slf4j @Slf4j
@Service @Service
@ -53,8 +53,8 @@ import java.util.List;
@ConditionalOnProperty(name = "vmis.integration.mode", havingValue = "internal") @ConditionalOnProperty(name = "vmis.integration.mode", havingValue = "internal")
public class InternalVehicleInfoServiceImpl implements VehicleInfoService { public class InternalVehicleInfoServiceImpl implements VehicleInfoService {
private final CarBassMatterInqireService carBassMatterInqireService; private final VmisCarBassMatterInqireService carBassMatterInqireService;
private final CarLedgerFrmbkService carLedgerFrmbkService; private final VmisCarLedgerFrmbkService carLedgerFrmbkService;
@Override @Override
public VehicleApiResponseVO getVehicleInfo(String vehicleNumber) { public VehicleApiResponseVO getVehicleInfo(String vehicleNumber) {

@ -1,7 +1,7 @@
package go.kr.project.vmis.service; package go.kr.project.vmis.service;
import go.kr.project.vmis.mapper.CarBassMatterInqireMapper; import go.kr.project.vmis.mapper.VmisCarBassMatterInqireMapper;
import go.kr.project.vmis.model.basic.CarBassMatterInqireVO; import go.kr.project.vmis.model.basic.VmisCarBassMatterInqireVO;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -17,9 +17,9 @@ import org.springframework.transaction.annotation.Transactional;
@Slf4j @Slf4j
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class CarBassMatterInqireLogService { public class VmisCarBassMatterInqireLogService {
private final CarBassMatterInqireMapper carBassMatterInqireMapper; private final VmisCarBassMatterInqireMapper carBassMatterInqireMapper;
/** /**
* API . (REQUIRES_NEW) * API . (REQUIRES_NEW)
@ -27,7 +27,7 @@ public class CarBassMatterInqireLogService {
* @return ID * @return ID
*/ */
@Transactional(propagation = Propagation.REQUIRES_NEW) @Transactional(propagation = Propagation.REQUIRES_NEW)
public String createInitialRequestNewTx(CarBassMatterInqireVO request) { public String createInitialRequestNewTx(VmisCarBassMatterInqireVO request) {
String generatedId = carBassMatterInqireMapper.selectNextCarBassMatterInqireId(); String generatedId = carBassMatterInqireMapper.selectNextCarBassMatterInqireId();
request.setCarBassMatterInqire(generatedId); request.setCarBassMatterInqire(generatedId);
int result = carBassMatterInqireMapper.insertCarBassMatterInqire(request); int result = carBassMatterInqireMapper.insertCarBassMatterInqire(request);
@ -43,7 +43,7 @@ public class CarBassMatterInqireLogService {
* @param response * @param response
*/ */
@Transactional(propagation = Propagation.REQUIRES_NEW) @Transactional(propagation = Propagation.REQUIRES_NEW)
public void updateResponseNewTx(CarBassMatterInqireVO response) { public void updateResponseNewTx(VmisCarBassMatterInqireVO response) {
if (response.getCarBassMatterInqire() == null) { if (response.getCarBassMatterInqire() == null) {
throw new IllegalArgumentException("자동차 기본 사항 조회 ID는 필수입니다."); throw new IllegalArgumentException("자동차 기본 사항 조회 ID는 필수입니다.");
} }

@ -5,7 +5,7 @@ import go.kr.project.vmis.config.ApiConstant;
import go.kr.project.vmis.util.ExceptionDetailUtil; import go.kr.project.vmis.util.ExceptionDetailUtil;
import go.kr.project.vmis.model.basic.BasicRequest; import go.kr.project.vmis.model.basic.BasicRequest;
import go.kr.project.vmis.model.basic.BasicResponse; import go.kr.project.vmis.model.basic.BasicResponse;
import go.kr.project.vmis.model.basic.CarBassMatterInqireVO; import go.kr.project.vmis.model.basic.VmisCarBassMatterInqireVO;
import go.kr.project.vmis.model.common.Envelope; import go.kr.project.vmis.model.common.Envelope;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -25,11 +25,11 @@ import org.springframework.transaction.annotation.Transactional;
@Slf4j @Slf4j
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class CarBassMatterInqireService { public class VmisCarBassMatterInqireService {
private final GovernmentApi governmentApi; private final GovernmentApi governmentApi;
private final RequestEnricher enricher; private final VmisRequestEnricher enricher;
private final CarBassMatterInqireLogService logService; private final VmisCarBassMatterInqireLogService logService;
@ -47,7 +47,7 @@ public class CarBassMatterInqireService {
// 2) 최초 요청 로그 저장 (첫 번째 데이터 기준) // 2) 최초 요청 로그 저장 (첫 번째 데이터 기준)
if (envelope.getData() != null && !envelope.getData().isEmpty()) { if (envelope.getData() != null && !envelope.getData().isEmpty()) {
BasicRequest req = envelope.getData().get(0); BasicRequest req = envelope.getData().get(0);
CarBassMatterInqireVO logEntity = CarBassMatterInqireVO.fromRequest(req); VmisCarBassMatterInqireVO logEntity = VmisCarBassMatterInqireVO.fromRequest(req);
generatedId = logService.createInitialRequestNewTx(logEntity); generatedId = logService.createInitialRequestNewTx(logEntity);
} }
@ -57,7 +57,7 @@ public class CarBassMatterInqireService {
// 4) 응답 로그 업데이트 // 4) 응답 로그 업데이트
// 원본 소스, 정상적인 호출, 리턴(에러 리턴포함) 일 경우에만 에러 로그 남김 // 원본 소스, 정상적인 호출, 리턴(에러 리턴포함) 일 경우에만 에러 로그 남김
if (generatedId != null && response.getBody() != null) { if (generatedId != null && response.getBody() != null) {
CarBassMatterInqireVO update = CarBassMatterInqireVO.fromResponse(generatedId, response.getBody()); VmisCarBassMatterInqireVO update = VmisCarBassMatterInqireVO.fromResponse(generatedId, response.getBody());
if (update != null) { if (update != null) {
logService.updateResponseNewTx(update); logService.updateResponseNewTx(update);
} }
@ -69,7 +69,7 @@ public class CarBassMatterInqireService {
if (generatedId != null) { if (generatedId != null) {
try { try {
String detail = ExceptionDetailUtil.buildForLog(e); String detail = ExceptionDetailUtil.buildForLog(e);
CarBassMatterInqireVO errorLog = CarBassMatterInqireVO.builder() VmisCarBassMatterInqireVO errorLog = VmisCarBassMatterInqireVO.builder()
.carBassMatterInqire(generatedId) // 자동차기본사항조회 ID (PK) .carBassMatterInqire(generatedId) // 자동차기본사항조회 ID (PK)
.cntcResultCode(ApiConstant.CNTC_RESULT_CODE_ERROR) // 연계결과코드 (에러) .cntcResultCode(ApiConstant.CNTC_RESULT_CODE_ERROR) // 연계결과코드 (에러)
.cntcResultDtls(detail) // 연계결과상세 (에러 메시지) .cntcResultDtls(detail) // 연계결과상세 (에러 메시지)

@ -1,8 +1,8 @@
package go.kr.project.vmis.service; package go.kr.project.vmis.service;
import go.kr.project.vmis.mapper.CarLedgerFrmbkMapper; import go.kr.project.vmis.mapper.VmisCarLedgerFrmbkMapper;
import go.kr.project.vmis.model.ledger.CarLedgerFrmbkDtlVO; import go.kr.project.vmis.model.ledger.VmisCarLedgerFrmbkDtlVO;
import go.kr.project.vmis.model.ledger.CarLedgerFrmbkVO; import go.kr.project.vmis.model.ledger.VmisCarLedgerFrmbkVO;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -18,12 +18,12 @@ import java.util.List;
@Slf4j @Slf4j
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class CarLedgerFrmbkLogService { public class VmisCarLedgerFrmbkLogService {
private final CarLedgerFrmbkMapper mapper; private final VmisCarLedgerFrmbkMapper mapper;
@Transactional(propagation = Propagation.REQUIRES_NEW) @Transactional(propagation = Propagation.REQUIRES_NEW)
public String createInitialRequestNewTx(CarLedgerFrmbkVO request) { public String createInitialRequestNewTx(VmisCarLedgerFrmbkVO request) {
String id = mapper.selectNextCarLedgerFrmbkId(); String id = mapper.selectNextCarLedgerFrmbkId();
request.setCarLedgerFrmbkId(id); request.setCarLedgerFrmbkId(id);
int result = mapper.insertCarLedgerFrmbk(request); int result = mapper.insertCarLedgerFrmbk(request);
@ -35,7 +35,7 @@ public class CarLedgerFrmbkLogService {
} }
@Transactional(propagation = Propagation.REQUIRES_NEW) @Transactional(propagation = Propagation.REQUIRES_NEW)
public void updateResponseNewTx(CarLedgerFrmbkVO response) { public void updateResponseNewTx(VmisCarLedgerFrmbkVO response) {
if (response.getCarLedgerFrmbkId() == null) { if (response.getCarLedgerFrmbkId() == null) {
throw new IllegalArgumentException("자동차 등록 원부(갑) ID는 필수입니다."); throw new IllegalArgumentException("자동차 등록 원부(갑) ID는 필수입니다.");
} }
@ -48,9 +48,9 @@ public class CarLedgerFrmbkLogService {
} }
@Transactional(propagation = Propagation.REQUIRES_NEW) @Transactional(propagation = Propagation.REQUIRES_NEW)
public void saveDetailsNewTx(String masterId, List<CarLedgerFrmbkDtlVO> details) { public void saveDetailsNewTx(String masterId, List<VmisCarLedgerFrmbkDtlVO> details) {
if (details == null || details.isEmpty()) return; if (details == null || details.isEmpty()) return;
for (CarLedgerFrmbkDtlVO dtl : details) { for (VmisCarLedgerFrmbkDtlVO dtl : details) {
String dtlId = mapper.selectNextCarLedgerFrmbkDtlId(); String dtlId = mapper.selectNextCarLedgerFrmbkDtlId();
dtl.setCarLedgerFrmbkDtlId(dtlId); dtl.setCarLedgerFrmbkDtlId(dtlId);
dtl.setCarLedgerFrmbkId(masterId); dtl.setCarLedgerFrmbkId(masterId);

@ -3,8 +3,8 @@ package go.kr.project.vmis.service;
import go.kr.project.vmis.client.GovernmentApi; import go.kr.project.vmis.client.GovernmentApi;
import go.kr.project.vmis.config.ApiConstant; import go.kr.project.vmis.config.ApiConstant;
import go.kr.project.vmis.model.common.Envelope; import go.kr.project.vmis.model.common.Envelope;
import go.kr.project.vmis.model.ledger.CarLedgerFrmbkDtlVO; import go.kr.project.vmis.model.ledger.VmisCarLedgerFrmbkDtlVO;
import go.kr.project.vmis.model.ledger.CarLedgerFrmbkVO; import go.kr.project.vmis.model.ledger.VmisCarLedgerFrmbkVO;
import go.kr.project.vmis.model.ledger.LedgerRequest; import go.kr.project.vmis.model.ledger.LedgerRequest;
import go.kr.project.vmis.model.ledger.LedgerResponse; import go.kr.project.vmis.model.ledger.LedgerResponse;
import go.kr.project.vmis.util.ExceptionDetailUtil; import go.kr.project.vmis.util.ExceptionDetailUtil;
@ -23,11 +23,11 @@ import java.util.List;
@Slf4j @Slf4j
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class CarLedgerFrmbkService { public class VmisCarLedgerFrmbkService {
private final GovernmentApi governmentApi; private final GovernmentApi governmentApi;
private final RequestEnricher enricher; private final VmisRequestEnricher enricher;
private final CarLedgerFrmbkLogService logService; private final VmisCarLedgerFrmbkLogService logService;
/** /**
* () : -> (TX) -> -> (/, TX) -> (TX). * () : -> (TX) -> -> (/, TX) -> (TX).
@ -42,7 +42,7 @@ public class CarLedgerFrmbkService {
// 2) 최초 요청 로그 저장 (첫 번째 데이터 기준) // 2) 최초 요청 로그 저장 (첫 번째 데이터 기준)
if (envelope.getData() != null && !envelope.getData().isEmpty()) { if (envelope.getData() != null && !envelope.getData().isEmpty()) {
LedgerRequest req = envelope.getData().get(0); LedgerRequest req = envelope.getData().get(0);
CarLedgerFrmbkVO init = CarLedgerFrmbkVO.fromRequest(req); VmisCarLedgerFrmbkVO init = VmisCarLedgerFrmbkVO.fromRequest(req);
generatedId = logService.createInitialRequestNewTx(init); generatedId = logService.createInitialRequestNewTx(init);
} }
@ -53,10 +53,10 @@ public class CarLedgerFrmbkService {
if (generatedId != null && response.getBody() != null && if (generatedId != null && response.getBody() != null &&
response.getBody().getData() != null && !response.getBody().getData().isEmpty()) { response.getBody().getData() != null && !response.getBody().getData().isEmpty()) {
LedgerResponse body = response.getBody().getData().get(0); LedgerResponse body = response.getBody().getData().get(0);
CarLedgerFrmbkVO masterUpdate = CarLedgerFrmbkVO.fromResponseMaster(generatedId, body); VmisCarLedgerFrmbkVO masterUpdate = VmisCarLedgerFrmbkVO.fromResponseMaster(generatedId, body);
logService.updateResponseNewTx(masterUpdate); logService.updateResponseNewTx(masterUpdate);
List<CarLedgerFrmbkDtlVO> details = CarLedgerFrmbkDtlVO.listFromResponse(body, generatedId); List<VmisCarLedgerFrmbkDtlVO> details = VmisCarLedgerFrmbkDtlVO.listFromResponse(body, generatedId);
if (details != null && !details.isEmpty()) { if (details != null && !details.isEmpty()) {
logService.saveDetailsNewTx(generatedId, details); logService.saveDetailsNewTx(generatedId, details);
} }
@ -68,7 +68,7 @@ public class CarLedgerFrmbkService {
if (generatedId != null) { if (generatedId != null) {
try { try {
String detail = ExceptionDetailUtil.buildForLog(e); String detail = ExceptionDetailUtil.buildForLog(e);
CarLedgerFrmbkVO errorLog = CarLedgerFrmbkVO.builder() VmisCarLedgerFrmbkVO errorLog = VmisCarLedgerFrmbkVO.builder()
.carLedgerFrmbkId(generatedId) .carLedgerFrmbkId(generatedId)
.cntcResultCode(ApiConstant.CNTC_RESULT_CODE_ERROR) .cntcResultCode(ApiConstant.CNTC_RESULT_CODE_ERROR)
.cntcResultDtls(detail) .cntcResultDtls(detail)

@ -17,11 +17,11 @@ import lombok.extern.slf4j.Slf4j;
*/ */
@Slf4j @Slf4j
@Component @Component
public class RequestEnricher { public class VmisRequestEnricher {
private final VmisProperties props; private final VmisProperties props;
public RequestEnricher(VmisProperties props) { public VmisRequestEnricher(VmisProperties props) {
this.props = props; this.props = props;
} }

@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="go.kr.project.vmis.mapper.CarBassMatterInqireMapper"> <mapper namespace="go.kr.project.vmis.mapper.VmisCarBassMatterInqireMapper">
<!-- 시퀀스로 새로운 ID 생성 --> <!-- 시퀀스로 새로운 ID 생성 -->
<select id="selectNextCarBassMatterInqireId" resultType="String"> <select id="selectNextCarBassMatterInqireId" resultType="String">
@ -10,7 +10,7 @@
</select> </select>
<!-- 최초 요청 정보 INSERT --> <!-- 최초 요청 정보 INSERT -->
<insert id="insertCarBassMatterInqire" parameterType="CarBassMatterInqireVO"> <insert id="insertCarBassMatterInqire" parameterType="VmisCarBassMatterInqireVO">
INSERT INTO tb_car_bass_matter_inqire ( INSERT INTO tb_car_bass_matter_inqire (
CAR_BASS_MATTER_INQIRE, CAR_BASS_MATTER_INQIRE,
INFO_SYS_ID, INFO_SYS_ID,
@ -45,7 +45,7 @@
</insert> </insert>
<!-- 응답 결과 UPDATE --> <!-- 응답 결과 UPDATE -->
<update id="updateCarBassMatterInqire" parameterType="CarBassMatterInqireVO"> <update id="updateCarBassMatterInqire" parameterType="VmisCarBassMatterInqireVO">
UPDATE tb_car_bass_matter_inqire UPDATE tb_car_bass_matter_inqire
<set> <set>
<if test="cntcResultCode != null">CNTC_RESULT_CODE = #{cntcResultCode},</if> <if test="cntcResultCode != null">CNTC_RESULT_CODE = #{cntcResultCode},</if>
@ -139,7 +139,7 @@
</update> </update>
<!-- ID로 조회 --> <!-- ID로 조회 -->
<select id="selectCarBassMatterInqireById" parameterType="String" resultType="CarBassMatterInqireVO"> <select id="selectCarBassMatterInqireById" parameterType="String" resultType="VmisCarBassMatterInqireVO">
SELECT * SELECT *
FROM tb_car_bass_matter_inqire FROM tb_car_bass_matter_inqire
WHERE CAR_BASS_MATTER_INQIRE = #{carBassMatterInqire} WHERE CAR_BASS_MATTER_INQIRE = #{carBassMatterInqire}

@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="go.kr.project.vmis.mapper.CarLedgerFrmbkMapper"> <mapper namespace="go.kr.project.vmis.mapper.VmisCarLedgerFrmbkMapper">
<!-- 시퀀스로 새로운 마스터/상세 ID 생성 --> <!-- 시퀀스로 새로운 마스터/상세 ID 생성 -->
<select id="selectNextCarLedgerFrmbkId" resultType="String"> <select id="selectNextCarLedgerFrmbkId" resultType="String">
@ -14,7 +14,7 @@
</select> </select>
<!-- 최초 요청 정보 INSERT (마스터) --> <!-- 최초 요청 정보 INSERT (마스터) -->
<insert id="insertCarLedgerFrmbk" parameterType="CarLedgerFrmbkVO"> <insert id="insertCarLedgerFrmbk" parameterType="VmisCarLedgerFrmbkVO">
INSERT INTO tb_car_ledger_frmbk ( INSERT INTO tb_car_ledger_frmbk (
CAR_LEDGER_FRMBK_ID, CAR_LEDGER_FRMBK_ID,
INFO_SYS_ID, INFO_SYS_ID,
@ -57,7 +57,7 @@
</insert> </insert>
<!-- 응답 결과 UPDATE (마스터) --> <!-- 응답 결과 UPDATE (마스터) -->
<update id="updateCarLedgerFrmbk" parameterType="CarLedgerFrmbkVO"> <update id="updateCarLedgerFrmbk" parameterType="VmisCarLedgerFrmbkVO">
UPDATE tb_car_ledger_frmbk UPDATE tb_car_ledger_frmbk
<set> <set>
<if test="cntcResultCode != null">CNTC_RESULT_CODE = #{cntcResultCode},</if> <if test="cntcResultCode != null">CNTC_RESULT_CODE = #{cntcResultCode},</if>
@ -128,7 +128,7 @@
</update> </update>
<!-- 상세 INSERT --> <!-- 상세 INSERT -->
<insert id="insertCarLedgerFrmbkDtl" parameterType="CarLedgerFrmbkDtlVO"> <insert id="insertCarLedgerFrmbkDtl" parameterType="VmisCarLedgerFrmbkDtlVO">
INSERT INTO tb_car_ledger_frmbk_dtl ( INSERT INTO tb_car_ledger_frmbk_dtl (
CAR_LEDGER_FRMBK_DTL_ID, CAR_LEDGER_FRMBK_DTL_ID,
CAR_LEDGER_FRMBK_ID, CAR_LEDGER_FRMBK_ID,
@ -169,7 +169,7 @@
</insert> </insert>
<!-- ID로 조회 (선택) --> <!-- ID로 조회 (선택) -->
<select id="selectCarLedgerFrmbkById" parameterType="String" resultType="CarLedgerFrmbkVO"> <select id="selectCarLedgerFrmbkById" parameterType="String" resultType="VmisCarLedgerFrmbkVO">
SELECT * SELECT *
FROM tb_car_ledger_frmbk FROM tb_car_ledger_frmbk
WHERE CAR_LEDGER_FRMBK_ID = #{carLedgerFrmbkId} WHERE CAR_LEDGER_FRMBK_ID = #{carLedgerFrmbkId}

Loading…
Cancel
Save