@ -119,6 +119,7 @@ public class OwnerCloseWithin31Checker extends AbstractComparisonChecker {
LocalDate vldPrdExpryDateMinus90 = vldPrdExpryDate . minusDays ( 90 ) ;
LocalDate inspEndDate = DateUtil . parseDate ( inspEndYmd ) ;
LocalDate latestChgDate = null ;
LocalDate inspDate = DateUtil . parseDate ( inspYmd ) ;
for ( NewLedgerResponse . Record record : ledgerRecords ) {
String chgYmd = record . getChgYmd ( ) ;
@ -156,19 +157,28 @@ public class OwnerCloseWithin31Checker extends AbstractComparisonChecker {
log . info ( "[내사종결-명의이전] 검사기간 내 명의이전 발견! 변경일자: {}, 변경업무: {}" , targetChgYmd , targetRecord . getChgTaskSeNm ( ) ) ;
// ========== 명의이전일자 ~ 검사일 사이의 일수 계산 ==========
LocalDate chgDate = DateUtil . parseDate ( targetChgYmd ) ;
LocalDate inspDate = DateUtil . parseDate ( inspYmd ) ;
long daysBetween = java . time . temporal . ChronoUnit . DAYS . between ( chgDate , inspDate ) ;
if ( daysBetween < 0 | | daysBetween > DAYS_THRESHOLD ) {
log . debug ( "[내사종결-명의이전] 명의이전일자가 검사일의 {}일 이내가 아님 - 변경일자: {}, 검사일: {}, 일수차이: {}일" ,
DAYS_THRESHOLD , targetChgYmd , inspYmd , daysBetween ) ;
return null ;
// 명의이전일자 < 검사종료일
long daysBetween = 0 ;
if ( latestChgDate . isBefore ( inspEndDate ) ) {
// 검사일 - 검사종료일
daysBetween = java . time . temporal . ChronoUnit . DAYS . between ( inspEndDate , inspDate ) ;
if ( daysBetween < 0 | | daysBetween > DAYS_THRESHOLD ) {
log . debug ( "[내사종결-명의이전] 명의이전일자가 검사일의 {}일 이내가 아님 - 변경일자: {}, 검사일: {}, 일수차이: {}일" ,
DAYS_THRESHOLD , targetRecord . getChgYmd ( ) , inspYmd , daysBetween ) ;
return null ;
}
} else {
// 조건: 가장 마지막 명의이전일자가 검사일의 기준일수 이내인지 확인, (검사일자 - 마지막 명의이전일자)
daysBetween = java . time . temporal . ChronoUnit . DAYS . between ( latestChgDate , inspDate ) ;
if ( daysBetween < 0 | | daysBetween > DAYS_THRESHOLD ) {
log . debug ( "[내사종결-명의이전] 명의이전일자가 검사일의 {}일 이내가 아님 - 변경일자: {}, 검사일: {}, 일수차이: {}일" ,
DAYS_THRESHOLD , targetRecord . getChgYmd ( ) , inspYmd , daysBetween ) ;
return null ;
}
log . info ( "[내사종결-명의이전] 명의이전일자가 검사일의 {}일 이내 확인 - 변경일자: {}, 검사일: {}, 일수차이: {}일" ,
DAYS_THRESHOLD , targetRecord . getChgYmd ( ) , inspYmd , daysBetween ) ;
}
log . info ( "[내사종결-명의이전] 명의이전일자가 검사일의 {}일 이내 확인 - 변경일자: {}, 검사일: {}, 일수차이: {}일" ,
DAYS_THRESHOLD , targetChgYmd , inspYmd , daysBetween ) ;
// ========== Step 4: 자동차기본정보 조회 (차대번호, 부과일자=CHG_YMD) ==========
LocalDate targetDate = DateUtil . parseDate ( targetChgYmd ) ;
NewBasicRequest step4Request = createBasicRequest ( null , vin , targetDate . format ( DATE_FORMATTER ) ) ;