|
|
|
|
@ -58,6 +58,7 @@ public class OwnerLevyOver31Checker extends AbstractComparisonChecker {
|
|
|
|
|
NewBasicResponse.Record step1Record = step1Response.getRecord().get(0);
|
|
|
|
|
String vin = step1Record.getVin(); // 차대번호
|
|
|
|
|
String step1OwnerName = step1Record.getRprsOwnrNm(); // 검사일 기준 소유자명
|
|
|
|
|
String step1RprsvOwnrIdecno = step1Record.getRprsvOwnrIdecno(); // 검사일 기준 대표소유자 회원번호
|
|
|
|
|
|
|
|
|
|
log.info("[날짜수정후부과-명의이전] Step 1 결과 - 차대번호: {}, 소유자명: {}", vin, step1OwnerName);
|
|
|
|
|
|
|
|
|
|
@ -116,6 +117,7 @@ public class OwnerLevyOver31Checker extends AbstractComparisonChecker {
|
|
|
|
|
NewLedgerResponse.Record targetRecord = null;
|
|
|
|
|
LocalDate vldPrdExpryDate = DateUtil.parseDate(vldPrdExpryYmd);
|
|
|
|
|
LocalDate inspEndDate = DateUtil.parseDate(inspEndYmd);
|
|
|
|
|
LocalDate latestChgDate = null;
|
|
|
|
|
|
|
|
|
|
for (NewLedgerResponse.Record record : ledgerRecords) {
|
|
|
|
|
String chgYmd = record.getChgYmd();
|
|
|
|
|
@ -134,9 +136,13 @@ public class OwnerLevyOver31Checker extends AbstractComparisonChecker {
|
|
|
|
|
// 조건: 유효기간만료일 <= CHG_YMD <= 검사종료일자
|
|
|
|
|
if ((chgDate.isEqual(vldPrdExpryDate) || chgDate.isAfter(vldPrdExpryDate)) &&
|
|
|
|
|
(chgDate.isEqual(inspEndDate) || chgDate.isBefore(inspEndDate))) {
|
|
|
|
|
targetRecord = record;
|
|
|
|
|
log.debug("[날짜수정후부과-명의이전] 검사기간 내 명의이전 발견 - 변경일자: {}, 변경업무: {}", chgYmd, chgTaskSeCd);
|
|
|
|
|
break; // 첫 번째 발견된 명의이전 사용
|
|
|
|
|
|
|
|
|
|
// 가장 최근 일자 선택
|
|
|
|
|
if (latestChgDate == null || chgDate.isAfter(latestChgDate)) {
|
|
|
|
|
targetRecord = record;
|
|
|
|
|
latestChgDate = chgDate;
|
|
|
|
|
log.debug("[내사종결-명의이전] 검사기간 내 명의이전 발견 - 변경일자: {}, 변경업무: {}", chgYmd, chgTaskSeCd);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -162,28 +168,26 @@ public class OwnerLevyOver31Checker extends AbstractComparisonChecker {
|
|
|
|
|
log.info("[날짜수정후부과-명의이전] 명의이전일자가 검사일의 {}일 초과 확인 - 변경일자: {}, 검사일: {}, 일수차이: {}일",
|
|
|
|
|
DAYS_THRESHOLD, targetChgYmd, inspYmd, daysBetween);
|
|
|
|
|
|
|
|
|
|
// ========== Step 4: 자동차기본정보 조회 (차대번호, 부과일자=CHG_YMD -1일) ==========
|
|
|
|
|
// ========== Step 4: 자동차기본정보 조회 (차대번호, 부과일자=CHG_YMD) ==========
|
|
|
|
|
LocalDate targetDate = DateUtil.parseDate(targetChgYmd);
|
|
|
|
|
String targetChgYmdMinus1 = targetDate.minusDays(1).format(DATE_FORMATTER);
|
|
|
|
|
log.info("[날짜수정후부과-명의이전] Step 4: 자동차기본정보 조회 - 차대번호: {}, 부과일자: {} (원본: {})", vin, targetChgYmdMinus1, targetChgYmd);
|
|
|
|
|
|
|
|
|
|
NewBasicRequest step4Request = createBasicRequest(null, vin, targetChgYmdMinus1);
|
|
|
|
|
NewBasicRequest step4Request = createBasicRequest(null, vin, targetDate.format(DATE_FORMATTER));
|
|
|
|
|
NewBasicResponse step4Response = apiService.getBasicInfo(step4Request);
|
|
|
|
|
bassMatterLogService.updateCarFfnlgTrgtIdByTxIdNewTx(step4Response, existingData.getCarFfnlgTrgtId());
|
|
|
|
|
|
|
|
|
|
if (step4Response == null || step4Response.getRecord() == null || step4Response.getRecord().isEmpty()) {
|
|
|
|
|
log.warn("[날짜수정후부과-명의이전] Step 4 응답 없음 - 차대번호: {}, 부과일자: {}", vin, targetChgYmdMinus1);
|
|
|
|
|
log.warn("[날짜수정후부과-명의이전] Step 4 응답 없음 - 차대번호: {}, 부과일자: {}", vin, targetDate.format(DATE_FORMATTER));
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
NewBasicResponse.Record step4Record = step4Response.getRecord().get(0);
|
|
|
|
|
String step4OwnerName = step4Record.getRprsOwnrNm(); // CHG_YMD 시점의 소유자명
|
|
|
|
|
String step4RprsvOwnrIdecno = step4Record.getRprsvOwnrIdecno(); // 대표소유자 회원번호
|
|
|
|
|
|
|
|
|
|
log.info("[날짜수정후부과-명의이전] Step 4 결과 - 소유자명: {}", step4OwnerName);
|
|
|
|
|
|
|
|
|
|
// 명의이전 전 소유자가 상품용 아님
|
|
|
|
|
if (step4OwnerName == null || step4OwnerName.contains("상품용")) {
|
|
|
|
|
log.debug("[날짜수정후부과-명의이전] 명의이전 전 소유자가 상품용 - Step4 소유자명: {}", step4OwnerName);
|
|
|
|
|
// 검사기간내 명의변경 소유자와 검사일의 소유자가 같냐
|
|
|
|
|
if (step4OwnerName == null || step4RprsvOwnrIdecno.contains(step1RprsvOwnrIdecno)) {
|
|
|
|
|
log.debug("[내사종결-명의이전] 명의이전 전 소유자가 상품용 - Step4 소유자명: {}", step4OwnerName);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|