| | |
| | | package com.flightfeather.monitor.scheduledtasks |
| | | |
| | | import lombok.extern.slf4j.Slf4j |
| | | import com.flightfeather.monitor.scheduledtasks.dust.* |
| | | import org.slf4j.Logger |
| | | import org.slf4j.LoggerFactory |
| | | import org.springframework.stereotype.Component |
| | |
| | | /** |
| | | * 数据获取控制器 |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | class TaskController( |
| | | dustExceptionAnalysisTask: DustExceptionAnalysisTask, |
| | | dustDailyStatisticAnalysisTask: DustDailyStatisticAnalysisTask, |
| | | dustMonthlyStatisticAnalysisTask: DustMonthlyStatisticAnalysisTask, |
| | | dustDailyAnalysisTask: DustDailyAnalysisTask, |
| | | dustMonthlyAnalysisTask: DustMonthlyAnalysisTask, |
| | | riskDailyAnalysisTask: RiskDailyAnalysisTask, |
| | | riskMonthlyAnalysisTask: RiskMonthlyAnalysisTask, |
| | | ) { |
| | | |
| | | companion object { |
| | | private const val FETCH_PERIOD_MIN = 1L * 60 |
| | | private const val MAINTAIN_PERIOD_MIN = 5L * 60 |
| | | private const val FETCH_PERIOD_MIN = 15L |
| | | private const val MAINTAIN_PERIOD_MIN = 15L |
| | | val log: Logger = LoggerFactory.getLogger(TaskController::class.java) |
| | | } |
| | | |
| | |
| | | init { |
| | | log.info("添加定时任务") |
| | | timeTask.clear() |
| | | /*做的定时任务加进来*/ |
| | | timeTask.add(dustExceptionAnalysisTask) |
| | | timeTask.add(dustDailyStatisticAnalysisTask) |
| | | timeTask.add(dustMonthlyStatisticAnalysisTask) |
| | | timeTask.add(dustDailyAnalysisTask) |
| | | timeTask.add(dustMonthlyAnalysisTask) |
| | | timeTask.add(riskDailyAnalysisTask) |
| | | timeTask.add(riskMonthlyAnalysisTask) |
| | | log.info("添加定时任务完成,任务总计${timeTask.size}个") |
| | | } |
| | | |
| | |
| | | |
| | | private fun fetchTask(isFirst: Boolean = false) { |
| | | val time = LocalTime.now() |
| | | val sec = time.second |
| | | val delay = 60L - sec |
| | | val min = time.minute |
| | | val delay = FETCH_PERIOD_MIN - min % FETCH_PERIOD_MIN |
| | | // var localtime = LocalDateTime.of(2021, 4, 16, 9, 0) |
| | | if (!isFirst) { |
| | | schedule = closeThread(schedule) |
| | |
| | | it.execute(localtime) |
| | | } |
| | | // localtime = localtime.plusMinutes(1) |
| | | }, delay, FETCH_PERIOD_MIN, TimeUnit.SECONDS) |
| | | }, delay, FETCH_PERIOD_MIN, TimeUnit.MINUTES) |
| | | } |
| | | |
| | | private fun maintainTask(isFirst: Boolean = false) { |
| | |
| | | if (Date().time - taskTime.time > (FETCH_PERIOD_MIN + 1) * 60 * 1000) { |
| | | fetchTask() |
| | | } |
| | | }, 0, MAINTAIN_PERIOD_MIN, TimeUnit.SECONDS) |
| | | }, 0, MAINTAIN_PERIOD_MIN, TimeUnit.MINUTES) |
| | | } |
| | | |
| | | private fun closeThread(s: ScheduledExecutorService): ScheduledExecutorService { |