### feat: 날짜 형식 처리 로직 수정 및 불필요한 replace 제거

- **날짜 형식 처리 개선**
  - `inspYmd`, `vldPrdExpryYmd`, `inspEndYmd` 데이터에 대해 `.replace("-", "")` 호출로 날짜 형식을 변환하도록 수정.
  - 모든 `delay_checker` 관련 클래스(`OwnerCloseWithin31Checker`, `ProductLevyOver31Checker` 등)에서 동일한 `.replace` 로직 추가하여 입력 데이터의 통일성을 보장.

- **불필요한 replace 호출 제거**
  - `CarRegFrmbkChgYmd` 필드에서 `.replace("-", "")` 호출을 제거하여 데이터 원본 그대로 사용.

- **서비스 로직 정리**
  - `ComparisonServiceImpl`:
    - 날짜 검증 순서 중 재사용성이 높은 `transferCase115DayChecker` 로직 순서를 앞쪽으로 이동.
    - 기존 순서를 재정렬하여 처리 흐름을 명확하게 개선:
      - 이첩 로직 → 내사종결 → 날짜 수정 후 부과 순서로 정리.
    - 처리 단계별 주석 추가로 가독성 개선.

- **유지보수성 강화**
  - `ComparisonServiceImpl` 및 관련 `Checker` 간 호출 순서 명확히 정리.
  - 중복 코드를 완화하고 관련 주석 및 로깅 추가.
main
박성영 4 days ago
parent 06f6a03178
commit 9a67cf6e14

@ -68,40 +68,42 @@ public class ComparisonServiceImpl extends EgovAbstractServiceImpl implements Co
return productUseChangeResult;
}
// ========== 3. 내사종결 체크 - 명의이전 이전소유자 상품용, 31일 이내 ==========
// ========== 3. 이첩 체크 ==========
String transferResult = transferCase115DayChecker.check(existingData, userOrgCd);
if (transferResult != null) {
log.info("========== 비교 로직 종료 (이첩): {} ==========", vhclno);
return transferResult;
}
// ========== 4. 내사종결 체크 - 명의이전 이전소유자 상품용, 31일 이내 ==========
String investigationClosedByProductResult = productCloseWithin31Checker.check(existingData, userOrgCd);
if (investigationClosedByProductResult != null) {
log.info("========== 비교 로직 종료 (내사종결 - 명의이전 이전소유자 상품용, 31일 이내): {} ==========", vhclno);
return investigationClosedByProductResult;
}
// ========== 4. 내사종결 체크 - 명의이전, 31일 이내 ==========
// ========== 5. 내사종결 체크 - 명의이전, 31일 이내 ==========
String investigationClosedByOwnerChangeResult = ownerCloseWithin31Checker.check(existingData, userOrgCd);
if (investigationClosedByOwnerChangeResult != null) {
log.info("========== 비교 로직 종료 (내사종결 - 명의이전, 31일 이내): {} ==========", vhclno);
return investigationClosedByOwnerChangeResult;
}
// ========== 5. 날짜 수정 후 부과 체크 - 명의이전 이전소유자 상품용, 31일 초과 ==========
// ========== 6. 날짜 수정 후 부과 체크 - 명의이전 이전소유자 상품용, 31일 초과 ==========
String dateModifiedLevyByProductResult = productLevyOver31Checker.check(existingData, userOrgCd);
if (dateModifiedLevyByProductResult != null) {
log.info("========== 비교 로직 종료 (날짜 수정 후 부과 - 명의이전 이전소유자, 31일 초과): {} ==========", vhclno);
return dateModifiedLevyByProductResult;
}
// ========== 6. 날짜 수정 후 부과 체크 - 명의이전, 31일 초과 ==========
// ========== 7. 날짜 수정 후 부과 체크 - 명의이전, 31일 초과 ==========
String dateModifiedLevyByOwnerChangeOverResult = ownerLevyOver31Checker.check(existingData, userOrgCd);
if (dateModifiedLevyByOwnerChangeOverResult != null) {
log.info("========== 비교 로직 종료 (날짜 수정 후 부과 - 명의이전, 31일 초과): {} ==========", vhclno);
return dateModifiedLevyByOwnerChangeOverResult;
}
// ========== 7. 이첩 체크 ==========
String transferResult = transferCase115DayChecker.check(existingData, userOrgCd);
if (transferResult != null) {
log.info("========== 비교 로직 종료 (이첩): {} ==========", vhclno);
return transferResult;
}
log.info("========== 비교 로직 종료 (미적용): {} ==========", vhclno);
return null;

@ -38,9 +38,9 @@ public class OwnerCloseWithin31Checker extends AbstractComparisonChecker {
@Override
public String check(CarFfnlgTrgtVO existingData, String userOrgCd) {
String vhclno = existingData.getVhclno();
String inspYmd = existingData.getInspYmd();
String vldPrdExpryYmd = existingData.getVldPrdExpryYmd();
String inspEndYmd = existingData.getInspEndYmd();
String inspYmd = existingData.getInspYmd().replace("-", "");
String vldPrdExpryYmd = existingData.getVldPrdExpryYmd().replace("-", "");
String inspEndYmd = existingData.getInspEndYmd().replace("-", "");
try {
// ========== Step 1: 자동차기본정보 조회 (차량번호, 부과일자=검사일) ==========
@ -223,7 +223,7 @@ public class OwnerCloseWithin31Checker extends AbstractComparisonChecker {
existingData.setCarBscMttrInqFlnm(step4OwnerName);
existingData.setCarRegFrmbkChgTaskSeCd(targetRecord.getChgTaskSeCd());
existingData.setCarRegFrmbkChgTaskSeNm(targetRecord.getChgTaskSeNm());
existingData.setCarRegFrmbkChgYmd(targetRecord.getChgYmd().replace("-", ""));
existingData.setCarRegFrmbkChgYmd(targetRecord.getChgYmd());
existingData.setCarRegFrmbkDtl(ComparisonRemarkBuilder.buildLedgerRecordDetail(targetRecord));
existingData.setRmrk(rmrk);
existingData.setRmrkDtl(rmrkDtl);

@ -38,9 +38,9 @@ public class OwnerLevyOver31Checker extends AbstractComparisonChecker {
@Override
public String check(CarFfnlgTrgtVO existingData, String userOrgCd) {
String vhclno = existingData.getVhclno();
String inspYmd = existingData.getInspYmd();
String vldPrdExpryYmd = existingData.getVldPrdExpryYmd();
String inspEndYmd = existingData.getInspEndYmd();
String inspYmd = existingData.getInspYmd().replace("-", "");
String vldPrdExpryYmd = existingData.getVldPrdExpryYmd().replace("-", "");
String inspEndYmd = existingData.getInspEndYmd().replace("-", "");
try {
// ========== Step 1: 자동차기본정보 조회 (차량번호, 부과일자=검사일) ==========
@ -223,7 +223,7 @@ public class OwnerLevyOver31Checker extends AbstractComparisonChecker {
existingData.setCarBscMttrInqFlnm(step4OwnerName);
existingData.setCarRegFrmbkChgTaskSeCd(targetRecord.getChgTaskSeCd());
existingData.setCarRegFrmbkChgTaskSeNm(targetRecord.getChgTaskSeNm());
existingData.setCarRegFrmbkChgYmd(targetRecord.getChgYmd().replace("-", ""));
existingData.setCarRegFrmbkChgYmd(targetRecord.getChgYmd());
existingData.setCarRegFrmbkDtl(ComparisonRemarkBuilder.buildLedgerRecordDetail(targetRecord));
existingData.setRmrk(rmrk);
existingData.setRmrkDtl(rmrkDtl);

@ -38,9 +38,9 @@ public class ProductCloseWithin31Checker extends AbstractComparisonChecker {
@Override
public String check(CarFfnlgTrgtVO existingData, String userOrgCd) {
String vhclno = existingData.getVhclno();
String inspYmd = existingData.getInspYmd();
String vldPrdExpryYmd = existingData.getVldPrdExpryYmd();
String inspEndYmd = existingData.getInspEndYmd();
String inspYmd = existingData.getInspYmd().replace("-", "");
String vldPrdExpryYmd = existingData.getVldPrdExpryYmd().replace("-", "");
String inspEndYmd = existingData.getInspEndYmd().replace("-", "");
try {
// ========== Step 1: 자동차기본정보 조회 (차량번호, 부과일자=검사일) ==========
@ -223,7 +223,7 @@ public class ProductCloseWithin31Checker extends AbstractComparisonChecker {
existingData.setCarBscMttrInqFlnm(step4OwnerName);
existingData.setCarRegFrmbkChgTaskSeCd(targetRecord.getChgTaskSeCd());
existingData.setCarRegFrmbkChgTaskSeNm(targetRecord.getChgTaskSeNm());
existingData.setCarRegFrmbkChgYmd(targetRecord.getChgYmd().replace("-", ""));
existingData.setCarRegFrmbkChgYmd(targetRecord.getChgYmd());
existingData.setCarRegFrmbkDtl(ComparisonRemarkBuilder.buildLedgerRecordDetail(targetRecord));
existingData.setRmrk(rmrk);
existingData.setRmrkDtl(rmrkDtl);

@ -38,9 +38,9 @@ public class ProductLevyOver31Checker extends AbstractComparisonChecker {
@Override
public String check(CarFfnlgTrgtVO existingData, String userOrgCd) {
String vhclno = existingData.getVhclno();
String inspYmd = existingData.getInspYmd();
String vldPrdExpryYmd = existingData.getVldPrdExpryYmd();
String inspEndYmd = existingData.getInspEndYmd();
String inspYmd = existingData.getInspYmd().replace("-", "");
String vldPrdExpryYmd = existingData.getVldPrdExpryYmd().replace("-", "");
String inspEndYmd = existingData.getInspEndYmd().replace("-", "");
try {
// ========== Step 1: 자동차기본정보 조회 (차량번호, 부과일자=검사일) ==========
@ -225,7 +225,7 @@ public class ProductLevyOver31Checker extends AbstractComparisonChecker {
existingData.setCarBscMttrInqFlnm(step4OwnerName);
existingData.setCarRegFrmbkChgTaskSeCd(targetRecord.getChgTaskSeCd());
existingData.setCarRegFrmbkChgTaskSeNm(targetRecord.getChgTaskSeNm());
existingData.setCarRegFrmbkChgYmd(targetRecord.getChgYmd().replace("-", ""));
existingData.setCarRegFrmbkChgYmd(targetRecord.getChgYmd());
existingData.setCarRegFrmbkDtl(ComparisonRemarkBuilder.buildLedgerRecordDetail(targetRecord));
existingData.setRmrk(rmrk);
existingData.setRmrkDtl(rmrkDtl);

@ -38,9 +38,9 @@ public class ProductUseChecker extends AbstractComparisonChecker {
@Override
public String check(CarFfnlgTrgtVO existingData, String userOrgCd) {
String vhclno = existingData.getVhclno();
String inspYmd = existingData.getInspYmd();
String vldPrdExpryYmd = existingData.getVldPrdExpryYmd();
String inspEndYmd = existingData.getInspEndYmd();
String inspYmd = existingData.getInspYmd().replace("-", "");
String vldPrdExpryYmd = existingData.getVldPrdExpryYmd().replace("-", "");
String inspEndYmd = existingData.getInspEndYmd().replace("-", "");
try {
// ========== Step 1: 자동차기본정보 조회 (차량번호, 부과일자=검사일) ==========
@ -217,7 +217,7 @@ public class ProductUseChecker extends AbstractComparisonChecker {
existingData.setCarBscMttrInqFlnm(step4OwnerName);
existingData.setCarRegFrmbkChgTaskSeCd(targetRecord.getChgTaskSeCd());
existingData.setCarRegFrmbkChgTaskSeNm(targetRecord.getChgTaskSeNm());
existingData.setCarRegFrmbkChgYmd(targetRecord.getChgYmd().replace("-", ""));
existingData.setCarRegFrmbkChgYmd(targetRecord.getChgYmd());
existingData.setCarRegFrmbkDtl(ComparisonRemarkBuilder.buildLedgerRecordDetail(targetRecord));
existingData.setRmrk(rmrk);
existingData.setRmrkDtl(rmrkDtl);

@ -38,9 +38,9 @@ public class ProductUseChnageChecker extends AbstractComparisonChecker {
@Override
public String check(CarFfnlgTrgtVO existingData, String userOrgCd) {
String vhclno = existingData.getVhclno();
String inspYmd = existingData.getInspYmd();
String vldPrdExpryYmd = existingData.getVldPrdExpryYmd();
String inspEndYmd = existingData.getInspEndYmd();
String inspYmd = existingData.getInspYmd().replace("-", "");
String vldPrdExpryYmd = existingData.getVldPrdExpryYmd().replace("-", "");
String inspEndYmd = existingData.getInspEndYmd().replace("-", "");
try {
// ========== Step 1: 자동차기본정보 조회 (차량번호, 부과일자=검사일) ==========
@ -222,7 +222,7 @@ public class ProductUseChnageChecker extends AbstractComparisonChecker {
existingData.setCarBscMttrInqFlnm(step4OwnerName);
existingData.setCarRegFrmbkChgTaskSeCd(targetRecord.getChgTaskSeCd());
existingData.setCarRegFrmbkChgTaskSeNm(targetRecord.getChgTaskSeNm());
existingData.setCarRegFrmbkChgYmd(targetRecord.getChgYmd().replace("-", ""));
existingData.setCarRegFrmbkChgYmd(targetRecord.getChgYmd());
existingData.setCarRegFrmbkDtl(ComparisonRemarkBuilder.buildLedgerRecordDetail(targetRecord));
existingData.setRmrk(rmrk);
existingData.setRmrkDtl(rmrkDtl);

@ -53,7 +53,7 @@ public class TransferCase115DayChecker extends AbstractComparisonChecker {
if (daycnt > 115) {
// 이첩-2: 부과기준일 = 검사종료일자 + 115일
String inspEndYmd = existingData.getInspEndYmd();
String inspEndYmd = existingData.getInspEndYmd().replace("-", "");
LocalDate inspEndDate = DateUtil.parseDate(inspEndYmd);
LocalDate levyCrtrDate = inspEndDate.plusDays(115);
levyCrtrYmd = levyCrtrDate.format(DATE_FORMATTER);
@ -61,7 +61,7 @@ public class TransferCase115DayChecker extends AbstractComparisonChecker {
log.info("[이첩-2] 부과기준일 = 검사종료일자({}) + 115일 = {}", inspEndYmd, levyCrtrYmd);
} else {
// 이첩-1: 부과기준일 = 검사일자
levyCrtrYmd = existingData.getInspYmd();
levyCrtrYmd = existingData.getInspYmd().replace("-", "");
transferType = "이첩-1";
log.info("[이첩-1] 부과기준일 = 검사일자 = {}", levyCrtrYmd);
}

Loading…
Cancel
Save