|
|
@@ -75,6 +75,11 @@ open class SchedulerService( |
|
|
@Value("\${scheduler.sync-alert.enabled:false}") private val syncAlertEnabled: Boolean, |
|
|
@Value("\${scheduler.sync-alert.enabled:false}") private val syncAlertEnabled: Boolean, |
|
|
) { |
|
|
) { |
|
|
companion object { |
|
|
companion object { |
|
|
|
|
|
/** Mon–Fri & Sun DO1 (23:00). Saturday stays on [DO1_SAT_DEFAULT_CRON]. */ |
|
|
|
|
|
const val DO1_DEFAULT_CRON: String = "0 0 23 * * *" |
|
|
|
|
|
const val DO1_SAT_DEFAULT_CRON: String = "0 10 3 ? * SAT" |
|
|
|
|
|
/** DO2 lastModified from yesterday this hour (aligns with weekday/Sun DO1). Sunday uses Sat 03:00. */ |
|
|
|
|
|
const val DO2_MODIFIED_FROM_HOUR: Int = 23 |
|
|
/** DO2: Spring 6-field cron default and M18 `lastModifyDate` upper bound hour (1pm local). */ |
|
|
/** DO2: Spring 6-field cron default and M18 `lastModifyDate` upper bound hour (1pm local). */ |
|
|
const val DO2_MODIFIED_TO_HOUR: Int = 13 |
|
|
const val DO2_MODIFIED_TO_HOUR: Int = 13 |
|
|
const val DO2_DEFAULT_CRON: String = "0 0 13 * * *" |
|
|
const val DO2_DEFAULT_CRON: String = "0 0 13 * * *" |
|
|
@@ -178,18 +183,18 @@ open class SchedulerService( |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
var cronMain = settingsService.findByName(SettingNames.SCHEDULE_M18_DO1).getOrNull()?.value ?: "0 10 19 * * *" |
|
|
|
|
|
|
|
|
var cronMain = settingsService.findByName(SettingNames.SCHEDULE_M18_DO1).getOrNull()?.value ?: DO1_DEFAULT_CRON |
|
|
if (!isValidCronExpression(cronMain)) { |
|
|
if (!isValidCronExpression(cronMain)) { |
|
|
cronMain = "0 10 19 * * *" |
|
|
|
|
|
|
|
|
cronMain = DO1_DEFAULT_CRON |
|
|
} |
|
|
} |
|
|
val weekdaySunCron = cronToMonFriSunSchedule(cronMain) |
|
|
val weekdaySunCron = cronToMonFriSunSchedule(cronMain) |
|
|
val mainCron = if (isValidCronExpression(weekdaySunCron)) weekdaySunCron else cronMain |
|
|
val mainCron = if (isValidCronExpression(weekdaySunCron)) weekdaySunCron else cronMain |
|
|
|
|
|
|
|
|
scheduledM18Do1 = taskScheduler.schedule({ getM18Dos1() }, CronTrigger(mainCron)) |
|
|
scheduledM18Do1 = taskScheduler.schedule({ getM18Dos1() }, CronTrigger(mainCron)) |
|
|
|
|
|
|
|
|
var cronSat = settingsService.findByName(SettingNames.SCHEDULE_M18_DO1_SAT).getOrNull()?.value ?: "0 10 3 ? * SAT" |
|
|
|
|
|
|
|
|
var cronSat = settingsService.findByName(SettingNames.SCHEDULE_M18_DO1_SAT).getOrNull()?.value ?: DO1_SAT_DEFAULT_CRON |
|
|
if (!isValidCronExpression(cronSat)) { |
|
|
if (!isValidCronExpression(cronSat)) { |
|
|
cronSat = "0 10 3 ? * SAT" |
|
|
|
|
|
|
|
|
cronSat = DO1_SAT_DEFAULT_CRON |
|
|
} |
|
|
} |
|
|
scheduledM18Do1Sat = taskScheduler.schedule({ getM18Dos1() }, CronTrigger(cronSat)) |
|
|
scheduledM18Do1Sat = taskScheduler.schedule({ getM18Dos1() }, CronTrigger(cronSat)) |
|
|
|
|
|
|
|
|
@@ -743,14 +748,13 @@ open class SchedulerService( |
|
|
val ysd = today.minusDays(1L) |
|
|
val ysd = today.minusDays(1L) |
|
|
val tmr = today.plusDays(1L) |
|
|
val tmr = today.plusDays(1L) |
|
|
|
|
|
|
|
|
// Default: lastModified from yesterday 19:00 through today's DO2 run hour (1pm; aligns with SCHEDULE.m18.do2). |
|
|
|
|
|
// On Sunday, yesterday is Saturday: use 03:00 instead so we include DO changed after Sat 03:10 DO1 |
|
|
|
|
|
// (otherwise Sat 03:00–18:59 would be skipped until a much later sync). |
|
|
|
|
|
|
|
|
// Default: lastModified from yesterday 23:00 through today's DO2 run hour (1pm; aligns with weekday/Sun DO1). |
|
|
|
|
|
// On Sunday, yesterday is Saturday: keep 03:00 so we include DO changed after Sat 03:10 DO1. |
|
|
val isSundayDo2 = runDate.dayOfWeek == DayOfWeek.SUNDAY |
|
|
val isSundayDo2 = runDate.dayOfWeek == DayOfWeek.SUNDAY |
|
|
val modifiedFromStart = if (isSundayDo2) { |
|
|
val modifiedFromStart = if (isSundayDo2) { |
|
|
ysd.withHour(3).withMinute(0).withSecond(0) |
|
|
ysd.withHour(3).withMinute(0).withSecond(0) |
|
|
} else { |
|
|
} else { |
|
|
ysd.withHour(19).withMinute(0).withSecond(0) |
|
|
|
|
|
|
|
|
ysd.withHour(DO2_MODIFIED_FROM_HOUR).withMinute(0).withSecond(0) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
val modifiedDateToEnd = |
|
|
val modifiedDateToEnd = |
|
|
@@ -759,7 +763,7 @@ open class SchedulerService( |
|
|
logger.info( |
|
|
logger.info( |
|
|
"DO2 modifiedDateFrom={} ({}), modifiedDateTo={}", |
|
|
"DO2 modifiedDateFrom={} ({}), modifiedDateTo={}", |
|
|
modifiedFromStart.format(dateTimeStringFormat), |
|
|
modifiedFromStart.format(dateTimeStringFormat), |
|
|
if (isSundayDo2) "Sunday window from Sat 03:00" else "from yesterday 19:00", |
|
|
|
|
|
|
|
|
if (isSundayDo2) "Sunday window from Sat 03:00" else "from yesterday 23:00", |
|
|
modifiedDateToEnd.format(dateTimeStringFormat), |
|
|
modifiedDateToEnd.format(dateTimeStringFormat), |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
|