|
|
|
|
@ -53,40 +53,48 @@ public class ComparisonServiceImpl extends EgovAbstractServiceImpl implements Co
|
|
|
|
|
String vhclno = existingData.getVhclno();
|
|
|
|
|
log.info("========== 비교 로직 시작: {} ==========", vhclno);
|
|
|
|
|
|
|
|
|
|
// ========== 1. 상품용 체크 Case1 - api-1번호출.소유자명.contains("상품용") ==========
|
|
|
|
|
String productUseResult1 = checkProductUseCase1(existingData);
|
|
|
|
|
if (productUseResult1 != null) {
|
|
|
|
|
log.info("========== 비교 로직 종료 (상품용-Case1): {} ==========", vhclno);
|
|
|
|
|
return productUseResult1;
|
|
|
|
|
// ========== 1. 상품용 체크 - api-1번호출.소유자명.contains("상품용") ==========
|
|
|
|
|
String productUseResult = checkProductUse(existingData);
|
|
|
|
|
if (productUseResult != null) {
|
|
|
|
|
log.info("========== 비교 로직 종료 (상품용): {} ==========", vhclno);
|
|
|
|
|
return productUseResult;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ========== 2. 내사종결 상품용 체크명의이전 후 상품용인 경우, 31일 이내 ==========
|
|
|
|
|
String closeUseResult = checkCloseProductUse(existingData);
|
|
|
|
|
if (closeUseResult != null) {
|
|
|
|
|
log.info("========== 비교 로직 종료 (내사종결 : 상품용인데 기간 지나서 검사 받았을 경우): {} ==========", vhclno);
|
|
|
|
|
return closeUseResult;
|
|
|
|
|
// ========== 2. 내사종결 체크 - 명의이전 이전소유자 상품용, 31일 이내 ==========
|
|
|
|
|
String investigationClosedByProductResult = checkInvestigationClosedByProductUseWithin31Days(existingData);
|
|
|
|
|
if (investigationClosedByProductResult != null) {
|
|
|
|
|
log.info("========== 비교 로직 종료 (내사종결 - 명의이전 이전소유자 상품용, 31일 이내): {} ==========", vhclno);
|
|
|
|
|
return investigationClosedByProductResult;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ========== 3. 날짜 수정 후 부과 체크 - 명의이전 후 상품용인 경우 (31일 초과) ==========
|
|
|
|
|
String dateModifiedLevyResult = checkDateModifiedLevy(existingData);
|
|
|
|
|
if (dateModifiedLevyResult != null) {
|
|
|
|
|
log.info("========== 비교 로직 종료 (날짜 수정 후 부과 : 상품용인데 기간 많이 지나서 검사 받았을 경우): {} ==========", vhclno);
|
|
|
|
|
return dateModifiedLevyResult;
|
|
|
|
|
// ========== 3. 내사종결 체크 - 명의이전, 31일 이내 ==========
|
|
|
|
|
String investigationClosedByOwnerChangeResult = checkInvestigationClosedByOwnerChangeWithin31Days(existingData);
|
|
|
|
|
if (investigationClosedByOwnerChangeResult != null) {
|
|
|
|
|
log.info("========== 비교 로직 종료 (내사종결 - 명의이전, 31일 이내): {} ==========", vhclno);
|
|
|
|
|
return investigationClosedByOwnerChangeResult;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ========== 4. 이첩 체크 ==========
|
|
|
|
|
// ========== 4. 날짜 수정 후 부과 체크 - 명의이전 이전소유자 상품용, 31일 초과 ==========
|
|
|
|
|
String dateModifiedLevyByProductResult = checkDateModifiedLevyByProductUseOver31Days(existingData);
|
|
|
|
|
if (dateModifiedLevyByProductResult != null) {
|
|
|
|
|
log.info("========== 비교 로직 종료 (날짜 수정 후 부과 - 명의이전 이전소유자, 31일 초과): {} ==========", vhclno);
|
|
|
|
|
return dateModifiedLevyByProductResult;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ========== 5. 날짜 수정 후 부과 체크 - 명의이전, 31일 초과 ==========
|
|
|
|
|
String dateModifiedLevyByOwnerChangeOverResult = checkDateModifiedLevyByOwnerChangeOver31Days(existingData);
|
|
|
|
|
if (dateModifiedLevyByOwnerChangeOverResult != null) {
|
|
|
|
|
log.info("========== 비교 로직 종료 (날짜 수정 후 부과 - 명의이전, 31일 초과): {} ==========", vhclno);
|
|
|
|
|
return dateModifiedLevyByOwnerChangeOverResult;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ========== 6. 이첩 체크 ==========
|
|
|
|
|
String transferResult = checkTransferCase115Day(existingData);
|
|
|
|
|
if (transferResult != null) {
|
|
|
|
|
log.info("========== 비교 로직 종료 (이첩): {} ==========", vhclno);
|
|
|
|
|
return transferResult;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ========== 5. 향후 추가될 비교 로직들 ==========
|
|
|
|
|
// String investigationClosedResult = checkInvestigationClosed(existingData);
|
|
|
|
|
// if (investigationClosedResult != null) {
|
|
|
|
|
// return investigationClosedResult;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// 모든 비교 로직에 해당하지 않음
|
|
|
|
|
log.info("========== 비교 로직 종료 (정상): {} ==========", vhclno);
|
|
|
|
|
return null;
|
|
|
|
|
@ -96,7 +104,7 @@ public class ComparisonServiceImpl extends EgovAbstractServiceImpl implements Co
|
|
|
|
|
// 비교 로직 메서드들
|
|
|
|
|
// ========================================
|
|
|
|
|
|
|
|
|
|
/** 4번
|
|
|
|
|
/**
|
|
|
|
|
* 1. 상품용 검증 api-1번호출.소유자명.contains("상품용")
|
|
|
|
|
*
|
|
|
|
|
* API 호출 4단계:
|
|
|
|
|
@ -118,7 +126,7 @@ public class ComparisonServiceImpl extends EgovAbstractServiceImpl implements Co
|
|
|
|
|
* @param existingData 과태료 대상 데이터
|
|
|
|
|
* @return 02 (상품용) 또는 null (미적용)
|
|
|
|
|
*/
|
|
|
|
|
private String checkProductUseCase1(CarFfnlgTrgtVO existingData) {
|
|
|
|
|
private String checkProductUse(CarFfnlgTrgtVO existingData) {
|
|
|
|
|
String vhclno = existingData.getVhclno();
|
|
|
|
|
String inspYmd = existingData.getInspYmd();
|
|
|
|
|
String vldPrdExpryYmd = existingData.getVldPrdExpryYmd();
|
|
|
|
|
@ -315,7 +323,7 @@ public class ComparisonServiceImpl extends EgovAbstractServiceImpl implements Co
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 2. 내사종결 검증 not( api-1번호출.소유자명.contains("상품용") )
|
|
|
|
|
* 2. 내사종결 검증 - 명의이전 이전소유자 상품용, 31일 이내
|
|
|
|
|
*
|
|
|
|
|
* API 호출 4단계:
|
|
|
|
|
* 1) 자동차기본정보(차량번호, 부과일자=검사일) → 차대번호, 소유자명
|
|
|
|
|
@ -335,7 +343,7 @@ public class ComparisonServiceImpl extends EgovAbstractServiceImpl implements Co
|
|
|
|
|
* @param existingData 과태료 대상 데이터
|
|
|
|
|
* @return 04 (내사종결) 또는 null (미적용)
|
|
|
|
|
*/
|
|
|
|
|
private String checkCloseProductUse(CarFfnlgTrgtVO existingData) {
|
|
|
|
|
private String checkInvestigationClosedByProductUseWithin31Days(CarFfnlgTrgtVO existingData) {
|
|
|
|
|
String vhclno = existingData.getVhclno();
|
|
|
|
|
String inspYmd = existingData.getInspYmd();
|
|
|
|
|
String vldPrdExpryYmd = existingData.getVldPrdExpryYmd();
|
|
|
|
|
@ -495,7 +503,7 @@ public class ComparisonServiceImpl extends EgovAbstractServiceImpl implements Co
|
|
|
|
|
// ========== 비고 생성 ==========
|
|
|
|
|
String rmrk = ComparisonRemarkBuilder.buildCloseProductUseRemark(
|
|
|
|
|
step1Record, step4Record, targetRecord,
|
|
|
|
|
vhclno, inspYmd, vldPrdExpryYmd, inspEndYmd
|
|
|
|
|
vhclno, inspYmd, vldPrdExpryYmd, inspEndYmd, daysBetween
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// ========== DB 업데이트 ==========
|
|
|
|
|
@ -525,7 +533,7 @@ public class ComparisonServiceImpl extends EgovAbstractServiceImpl implements Co
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 3. 날짜 수정 후 부과 검증 not( api-1번호출.소유자명.contains("상품용") )
|
|
|
|
|
* 3. 날짜 수정 후 부과 검증 - 명의이전 이전소유자 상품용, 31일 초과
|
|
|
|
|
*
|
|
|
|
|
* API 호출 4단계:
|
|
|
|
|
* 1) 자동차기본정보(차량번호, 부과일자=검사일) → 차대번호, 소유자명
|
|
|
|
|
@ -545,7 +553,7 @@ public class ComparisonServiceImpl extends EgovAbstractServiceImpl implements Co
|
|
|
|
|
* @param existingData 과태료 대상 데이터
|
|
|
|
|
* @return 05 (날짜 수정 후 부과) 또는 null (미적용)
|
|
|
|
|
*/
|
|
|
|
|
private String checkDateModifiedLevy(CarFfnlgTrgtVO existingData) {
|
|
|
|
|
private String checkDateModifiedLevyByProductUseOver31Days(CarFfnlgTrgtVO existingData) {
|
|
|
|
|
String vhclno = existingData.getVhclno();
|
|
|
|
|
String inspYmd = existingData.getInspYmd();
|
|
|
|
|
String vldPrdExpryYmd = existingData.getVldPrdExpryYmd();
|
|
|
|
|
@ -703,8 +711,9 @@ public class ComparisonServiceImpl extends EgovAbstractServiceImpl implements Co
|
|
|
|
|
log.info("[날짜수정후부과] 모든 조건 충족! 차량번호: {}, 변경일자: {}", vhclno, targetChgYmd);
|
|
|
|
|
|
|
|
|
|
// ========== 비고 생성 ==========
|
|
|
|
|
String rmrk = ComparisonRemarkBuilder.buildDateModifiedLevyRemark(
|
|
|
|
|
targetChgYmd, inspYmd, daysBetween
|
|
|
|
|
String rmrk = ComparisonRemarkBuilder.buildCloseProductUseRemark(
|
|
|
|
|
step1Record, step4Record, targetRecord,
|
|
|
|
|
vhclno, inspYmd, vldPrdExpryYmd, inspEndYmd, daysBetween
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// ========== DB 업데이트 ==========
|
|
|
|
|
@ -735,7 +744,7 @@ public class ComparisonServiceImpl extends EgovAbstractServiceImpl implements Co
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 2. 이첩 검증
|
|
|
|
|
* 4. 이첩 검증
|
|
|
|
|
*
|
|
|
|
|
* DAYCNT 기반 부과기준일 계산:
|
|
|
|
|
* - DAYCNT > 115: 이첩-2 (부과기준일 = 검사종료일자 + 115일)
|
|
|
|
|
|