전자정부 통과를 위한 ServiceImpl 에

extends EgovAbstractServiceImpl 추가
internalApi
박성영 4 weeks ago
parent df3329f2db
commit ddd438dbb5

@ -14,22 +14,6 @@ import java.util.List;
*/
public interface ExternalVehicleApiService {
/**
*
*
* @param vehicleNumbers
* @return
*/
List<VehicleApiResponseVO> getVehiclesInfo(List<String> vehicleNumbers);
/**
*
*
* @param vehicleNumber
* @return
*/
VehicleApiResponseVO getVehicleInfo(String vehicleNumber);
/**
* ( )
*

@ -12,6 +12,7 @@ import go.kr.project.api.service.VmisCarBassMatterInqireLogService;
import go.kr.project.api.service.VmisCarLedgerFrmbkLogService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.*;
import org.springframework.stereotype.Service;
@ -28,54 +29,13 @@ import java.util.List;
@Service
@RequiredArgsConstructor
@Slf4j
public class ExternalVehicleApiServiceImpl implements ExternalVehicleApiService {
public class ExternalVehicleApiServiceImpl extends EgovAbstractServiceImpl implements ExternalVehicleApiService {
private final RestTemplate restTemplate;
private final VmisProperties vmisProperties; // 프로퍼티 주입 (외부 API URL 구성에 사용)
private final VmisCarBassMatterInqireLogService bassMatterLogService; // 기본사항 조회 로그 서비스
private final VmisCarLedgerFrmbkLogService ledgerLogService; // 등록원부 로그 서비스
@Override
public List<VehicleApiResponseVO> getVehiclesInfo(List<String> vehicleNumbers) {
log.info("차량 정보 일괄 조회 시작 - 대상 차량 수: {}", vehicleNumbers.size());
List<VehicleApiResponseVO> responses = new ArrayList<>();
for (String vehicleNumber : vehicleNumbers) {
try {
VehicleApiResponseVO response = getVehicleInfo(vehicleNumber);
responses.add(response);
} catch (Exception e) {
log.error("차량번호 {} 조회 중 오류 발생: {}", vehicleNumber, e.getMessage(), e);
// 오류 발생 시에도 응답 객체 생성하여 추가
VehicleApiResponseVO errorResponse = VehicleApiResponseVO.builder()
.vhrno(vehicleNumber)
.success(false)
.message("조회 실패: " + e.getMessage())
.build();
responses.add(errorResponse);
}
}
log.info("차량 정보 일괄 조회 완료 - 성공: {}, 실패: {}",
responses.stream().filter(VehicleApiResponseVO::isSuccess).count(),
responses.stream().filter(r -> !r.isSuccess()).count());
return responses;
}
@Override
public VehicleApiResponseVO getVehicleInfo(String vehicleNumber) {
log.info("차량 정보 조회 시작 - 차량번호: {}", vehicleNumber);
// 차량번호만으로 BasicRequest 생성
BasicRequest basicRequest = new BasicRequest();
basicRequest.setVhrno(vehicleNumber);
// BasicRequest를 받는 오버로딩 메서드 호출
return getVehicleInfo(basicRequest);
}
@Override
public VehicleApiResponseVO getVehicleInfo(BasicRequest basicRequest) {
@ -88,12 +48,12 @@ public class ExternalVehicleApiServiceImpl implements ExternalVehicleApiService
try {
// 1. 차량 기본정보 조회
// 중요 로직: BasicRequest 전체를 사용하여 조회 (RequestEnricher가 나머지 채움)
// 중요 로직: BasicRequest 전체를 사용하여 조회
BasicResponse basicInfo = getBasicInfo(basicRequest);
response.setBasicInfo(basicInfo);
// 2. 자동차 등록원부 조회
// 중요 로직: 통합 조회 시에는 차량번호와 기본정보를 바탕으로 LedgerRequest 생성 (RequestEnricher가 나머지 채움)
// 중요 로직: 통합 조회 시에는 차량번호와 기본정보를 바탕으로 LedgerRequest 생성
LedgerRequest ledgerRequest = new LedgerRequest();
ledgerRequest.setVhrno(vehicleNumber);
ledgerRequest.setOnesInformationOpen("1"); //개인정보공개 {1:소유자공개, 2:비공개, 3:비공개(주민등록번호), 4:비공개(사용본거지)}
@ -104,12 +64,10 @@ public class ExternalVehicleApiServiceImpl implements ExternalVehicleApiService
ledgerRequest.setCpttrNm(record.getMberNm()); // 민원인성명
ledgerRequest.setCpttrIhidnum(record.getMberSeNo()); // 민원인주민번호
}
// 고정값 설정
ledgerRequest.setCpttrLegaldongCode(null); // 민원인법정동코드
ledgerRequest.setRouteSeCode("3"); // 경로구분코드
ledgerRequest.setDetailExpression("1"); // 내역표시 (전체내역)
// INQIRE_SE_CODE는 VmisRequestEnricher에서 자동으로 "1"(열람)로 설정됨
LedgerResponse ledgerInfo = getLedgerInfo(ledgerRequest);
response.setLedgerInfo(ledgerInfo);

@ -9,6 +9,7 @@ import go.kr.project.api.model.response.BasicResponse;
import go.kr.project.api.model.response.LedgerResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Service;
@ -49,25 +50,10 @@ import java.util.List;
@Service
@RequiredArgsConstructor
@ConditionalOnProperty(name = "vmis.integration.mode", havingValue = "external", matchIfMissing = true)
public class ExternalVehicleInfoServiceImpl implements VehicleInfoService {
public class ExternalVehicleInfoServiceImpl extends EgovAbstractServiceImpl implements VehicleInfoService {
private final ExternalVehicleApiService externalVehicleApiService;
@Override
public VehicleApiResponseVO getVehicleInfo(String vehicleNumber) {
log.info("[External Mode] 차량 정보 조회 시작 - 차량번호: {}", vehicleNumber);
VehicleApiResponseVO response = externalVehicleApiService.getVehicleInfo(vehicleNumber);
if (response.isSuccess()) {
log.info("[External Mode] 차량번호 {} 조회 성공", vehicleNumber);
} else {
log.warn("[External Mode] 차량번호 {} 조회 실패 - {}", vehicleNumber, response.getMessage());
}
return response;
}
@Override
public VehicleApiResponseVO getVehicleInfo(BasicRequest basicRequest) {
String vehicleNumber = basicRequest.getVhrno();
@ -85,25 +71,6 @@ public class ExternalVehicleInfoServiceImpl implements VehicleInfoService {
return response;
}
@Override
public List<VehicleApiResponseVO> getVehiclesInfo(List<String> vehicleNumbers) {
log.info("[External Mode] 차량 정보 일괄 조회 시작 - 대상 차량 수: {}", vehicleNumbers.size());
List<VehicleApiResponseVO> responses = externalVehicleApiService.getVehiclesInfo(vehicleNumbers);
int successCount = 0;
for (VehicleApiResponseVO response : responses) {
if (response.isSuccess()) {
successCount++;
}
}
log.info("[External Mode] 차량 정보 일괄 조회 완료 - 성공: {}, 실패: {}",
successCount, vehicleNumbers.size() - successCount);
return responses;
}
/**
* REST -
* : API ExternalVehicleApiService (BasicRequest )

@ -12,6 +12,7 @@ import go.kr.project.api.model.request.LedgerRequest;
import go.kr.project.api.model.response.LedgerResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
@ -51,22 +52,11 @@ import java.util.List;
@Service
@RequiredArgsConstructor
@ConditionalOnProperty(name = "vmis.integration.mode", havingValue = "internal")
public class InternalVehicleInfoServiceImpl implements VehicleInfoService {
public class InternalVehicleInfoServiceImpl extends EgovAbstractServiceImpl implements VehicleInfoService {
private final VmisCarBassMatterInqireService carBassMatterInqireService;
private final VmisCarLedgerFrmbkService carLedgerFrmbkService;
@Override
public VehicleApiResponseVO getVehicleInfo(String vehicleNumber) {
log.info("[Internal Mode] 차량 정보 조회 시작 - 차량번호: {}", vehicleNumber);
// 차량번호만으로 BasicRequest 생성
BasicRequest basicRequest = new BasicRequest();
basicRequest.setVhrno(vehicleNumber);
// BasicRequest를 받는 오버로딩 메서드 호출
return getVehicleInfo(basicRequest);
}
@Override
public VehicleApiResponseVO getVehicleInfo(BasicRequest basicRequest) {
@ -125,35 +115,6 @@ public class InternalVehicleInfoServiceImpl implements VehicleInfoService {
return response;
}
@Override
public List<VehicleApiResponseVO> getVehiclesInfo(List<String> vehicleNumbers) {
log.info("[Internal Mode] 차량 정보 일괄 조회 시작 - 대상 차량 수: {}", vehicleNumbers.size());
List<VehicleApiResponseVO> responses = new ArrayList<VehicleApiResponseVO>();
for (String vehicleNumber : vehicleNumbers) {
try {
VehicleApiResponseVO response = getVehicleInfo(vehicleNumber);
responses.add(response);
} catch (Exception e) {
log.error("[Internal Mode] 차량번호 {} 조회 중 오류 발생: {}", vehicleNumber, e.getMessage(), e);
// 오류 발생 시에도 응답 객체 생성하여 추가
VehicleApiResponseVO errorResponse = VehicleApiResponseVO.builder()
.vhrno(vehicleNumber)
.success(false)
.message("조회 실패: " + e.getMessage())
.build();
responses.add(errorResponse);
}
}
log.info("[Internal Mode] 차량 정보 일괄 조회 완료 - 성공: {}, 실패: {}",
countSuccessful(responses),
vehicleNumbers.size() - countSuccessful(responses));
return responses;
}
/**
* ( )

@ -12,6 +12,7 @@ import go.kr.project.api.model.response.VmisCarBassMatterInqireVO;
import go.kr.project.api.model.Envelope;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -28,7 +29,7 @@ import org.springframework.transaction.annotation.Transactional;
@Slf4j
@Service
@RequiredArgsConstructor
public class VmisCarBassMatterInqireServiceImpl implements VmisCarBassMatterInqireService {
public class VmisCarBassMatterInqireServiceImpl extends EgovAbstractServiceImpl implements VmisCarBassMatterInqireService {
private final GovernmentApi governmentApi;
private final VmisRequestEnricher enricher;

@ -13,6 +13,7 @@ import go.kr.project.api.model.response.LedgerResponse;
import go.kr.project.api.internal.util.ExceptionDetailUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -26,7 +27,7 @@ import java.util.List;
@Slf4j
@Service
@RequiredArgsConstructor
public class VmisCarLedgerFrmbkServiceImpl implements VmisCarLedgerFrmbkService {
public class VmisCarLedgerFrmbkServiceImpl extends EgovAbstractServiceImpl implements VmisCarLedgerFrmbkService {
private final GovernmentApi governmentApi;
private final VmisRequestEnricher enricher;

@ -46,17 +46,7 @@ import java.util.List;
* </pre>
*/
public interface VehicleInfoService {
/**
*
*
* <p> .</p>
*
* @param vehicleNumber
* @return ( + )
*/
VehicleApiResponseVO getVehicleInfo(String vehicleNumber);
/**
* ( )
*
@ -68,16 +58,6 @@ public interface VehicleInfoService {
*/
VehicleApiResponseVO getVehicleInfo(BasicRequest basicRequest);
/**
*
*
* <p> .</p>
*
* @param vehicleNumbers
* @return
*/
List<VehicleApiResponseVO> getVehiclesInfo(List<String> vehicleNumbers);
/**
* ()
* : , , BasicRequest

@ -5,6 +5,7 @@ import go.kr.project.api.service.VmisCarBassMatterInqireLogService;
import go.kr.project.api.model.response.VmisCarBassMatterInqireVO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@ -18,7 +19,7 @@ import org.springframework.transaction.annotation.Transactional;
@Slf4j
@Service
@RequiredArgsConstructor
public class VmisCarBassMatterInqireLogServiceImpl implements VmisCarBassMatterInqireLogService {
public class VmisCarBassMatterInqireLogServiceImpl extends EgovAbstractServiceImpl implements VmisCarBassMatterInqireLogService {
private final VmisCarBassMatterInqireMapper carBassMatterInqireMapper;

@ -6,6 +6,7 @@ import go.kr.project.api.model.response.VmisCarLedgerFrmbkDtlVO;
import go.kr.project.api.model.response.VmisCarLedgerFrmbkVO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@ -19,7 +20,7 @@ import java.util.List;
@Slf4j
@Service
@RequiredArgsConstructor
public class VmisCarLedgerFrmbkLogServiceImpl implements VmisCarLedgerFrmbkLogService {
public class VmisCarLedgerFrmbkLogServiceImpl extends EgovAbstractServiceImpl implements VmisCarLedgerFrmbkLogService {
private final VmisCarLedgerFrmbkMapper mapper;

@ -8,6 +8,7 @@ import go.kr.project.carInspectionPenalty.history.model.VehicleApiHistorySearchV
import go.kr.project.carInspectionPenalty.history.service.VehicleApiHistoryService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
@ -26,7 +27,7 @@ import java.util.List;
@Service
@RequiredArgsConstructor
@Slf4j
public class VehicleApiHistoryServiceImpl implements VehicleApiHistoryService {
public class VehicleApiHistoryServiceImpl extends EgovAbstractServiceImpl implements VehicleApiHistoryService {
private final VehicleApiHistoryMapper mapper;

@ -49,10 +49,15 @@ public class CarFfnlgTrgtVO extends PagingVO {
private String carBscMttrInqFlnm; // 자동차 기본 사항 조회 성명 (상품용일 때 저장)
private String carBscMttrInqSggCd; // 자동차 기본 사항 조회 시군구 코드 (이첩일 때 저장)
private String carBscMttrInqSggNm; // 자동차 기본 사항 조회 시군구 명 (이첩일 때 저장)
private String carRegFrmbkChgTaskSeCd; // 자동차 등록 원부갑 변경 업무 구분 코드
private String carRegFrmbkChgTaskSeNm; // 자동차 등록 원부갑 변경 업무 구분 명
private String carRegFrmbkChgYmd; // 자동차 등록 원부갑 변경 일자
private String carRegFrmbkDtl; // 자동차 등록 원부갑 상세
// 감사 필드
private LocalDateTime regDt; // 등록 일시
private String rgtr; // 등록자
private String delYn; // 삭제 여부
private LocalDateTime delDt; // 삭제 일시
private String dltr; // 삭제자

@ -14,6 +14,7 @@ import go.kr.project.carInspectionPenalty.registration.service.CarFfnlgTrgtServi
import go.kr.project.carInspectionPenalty.registration.service.ComparisonService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
@ -36,7 +37,7 @@ import java.util.Objects;
@Service
@RequiredArgsConstructor
@Slf4j
public class CarFfnlgTrgtServiceImpl implements CarFfnlgTrgtService {
public class CarFfnlgTrgtServiceImpl extends EgovAbstractServiceImpl implements CarFfnlgTrgtService {
private final CarFfnlgTrgtMapper mapper;
private final CarFfnlgTxtParseConfig parseConfig;

@ -9,6 +9,7 @@ import go.kr.project.system.user.mapper.UserMapper;
import go.kr.project.system.user.model.SystemUserVO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
@ -23,7 +24,7 @@ import java.time.format.DateTimeFormatter;
@Slf4j
@Service
@RequiredArgsConstructor
public class ComparisonServiceImpl implements ComparisonService {
public class ComparisonServiceImpl extends EgovAbstractServiceImpl implements ComparisonService {
private final CarFfnlgTrgtMapper carFfnlgTrgtMapper;
private final UserMapper userMapper;

@ -70,8 +70,16 @@
t.RMRK AS rmrk,
t.CAR_BASS_MATTER_INQIRE_ID AS carBassMatterInqireId,
t.CAR_LEDGER_FRMBK_ID AS carLedgerFrmbkId,
t.CAR_BSC_MTTR_INQ_FLNM AS carBscMttrInqFlnm,
t.CAR_BSC_MTTR_INQ_SGG_CD AS carBscMttrInqSggCd,
t.CAR_BSC_MTTR_INQ_SGG_NM AS carBscMttrInqSggNm,
t.CAR_REG_FRMBK_CHG_TASK_SE_CD AS carRegFrmbkChgTaskSeCd,
t.CAR_REG_FRMBK_CHG_TASK_SE_NM AS carRegFrmbkChgTaskSeNm,
t.CAR_REG_FRMBK_CHG_YMD AS carRegFrmbkChgYmd,
t.CAR_REG_FRMBK_DTL AS carRegFrmbkDtl,
t.REG_DT AS regDt,
t.RGTR AS rgtr,
t.DEL_YN AS delYn,
t.DEL_DT AS delDt,
t.DLTR AS dltr,
cd.CD_NM AS taskPrcsSttsCdNm,
@ -118,8 +126,16 @@
t.RMRK AS rmrk,
t.CAR_BASS_MATTER_INQIRE_ID AS carBassMatterInqireId,
t.CAR_LEDGER_FRMBK_ID AS carLedgerFrmbkId,
t.CAR_BSC_MTTR_INQ_FLNM AS carBscMttrInqFlnm,
t.CAR_BSC_MTTR_INQ_SGG_CD AS carBscMttrInqSggCd,
t.CAR_BSC_MTTR_INQ_SGG_NM AS carBscMttrInqSggNm,
t.CAR_REG_FRMBK_CHG_TASK_SE_CD AS carRegFrmbkChgTaskSeCd,
t.CAR_REG_FRMBK_CHG_TASK_SE_NM AS carRegFrmbkChgTaskSeNm,
t.CAR_REG_FRMBK_CHG_YMD AS carRegFrmbkChgYmd,
t.CAR_REG_FRMBK_DTL AS carRegFrmbkDtl,
t.REG_DT AS regDt,
t.RGTR AS rgtr,
t.DEL_YN AS delYn,
t.DEL_DT AS delDt,
t.DLTR AS dltr,
cd.CD_NM AS taskPrcsSttsCdNm,
@ -162,8 +178,16 @@
RMRK,
CAR_BASS_MATTER_INQIRE_ID,
CAR_LEDGER_FRMBK_ID,
CAR_BSC_MTTR_INQ_FLNM,
CAR_BSC_MTTR_INQ_SGG_CD,
CAR_BSC_MTTR_INQ_SGG_NM,
CAR_REG_FRMBK_CHG_TASK_SE_CD,
CAR_REG_FRMBK_CHG_TASK_SE_NM,
CAR_REG_FRMBK_CHG_YMD,
CAR_REG_FRMBK_DTL,
REG_DT,
RGTR
RGTR,
DEL_YN
) VALUES (
CONCAT('CFT', LPAD(NEXTVAL(seq_car_ffnlg_trgt_id), 17, '0')),
#{rcptYmd},
@ -188,8 +212,16 @@
#{rmrk},
#{carBassMatterInqireId},
#{carLedgerFrmbkId},
#{carBscMttrInqFlnm},
#{carBscMttrInqSggCd},
#{carBscMttrInqSggNm},
#{carRegFrmbkChgTaskSeCd},
#{carRegFrmbkChgTaskSeNm},
#{carRegFrmbkChgYmd},
#{carRegFrmbkDtl},
NOW(),
#{rgtr}
#{rgtr},
'N'
)
</insert>
@ -203,7 +235,11 @@
CAR_LEDGER_FRMBK_ID = #{carLedgerFrmbkId},
CAR_BSC_MTTR_INQ_FLNM = #{carBscMttrInqFlnm},
CAR_BSC_MTTR_INQ_SGG_CD = #{carBscMttrInqSggCd},
CAR_BSC_MTTR_INQ_SGG_NM = #{carBscMttrInqSggNm}
CAR_BSC_MTTR_INQ_SGG_NM = #{carBscMttrInqSggNm},
CAR_REG_FRMBK_CHG_TASK_SE_CD = #{carRegFrmbkChgTaskSeCd},
CAR_REG_FRMBK_CHG_TASK_SE_NM = #{carRegFrmbkChgTaskSeNm},
CAR_REG_FRMBK_CHG_YMD = #{carRegFrmbkChgYmd},
CAR_REG_FRMBK_DTL = #{carRegFrmbkDtl}
WHERE CAR_FFNLG_TRGT_ID = #{carFfnlgTrgtId}
AND DEL_DT IS NULL
</update>

Loading…
Cancel
Save