package com.flightfeather.monitor.scheduledtasks
|
|
import com.flightfeather.monitor.analysis.dust.ExceptionAnalysisController
|
import com.flightfeather.monitor.analysis.dust.StatisticAnalysisController
|
import com.flightfeather.monitor.domain.ds1.entity.RequestTask
|
import com.flightfeather.monitor.domain.ds1.repository.RequestTaskRep
|
import org.springframework.stereotype.Component
|
import java.time.LocalDateTime
|
|
/**
|
* 扬尘数据分析任务
|
*/
|
@Component
|
class DustAnalysisTask(
|
private val statisticAnalysisController: StatisticAnalysisController,
|
private val exceptionAnalysisController: ExceptionAnalysisController,
|
private val requestTaskRep: RequestTaskRep,
|
) : BaseTimingTask() {
|
|
// 任务是否延迟执行
|
private var task1Delay = false
|
private var task2Delay = false
|
private var task3Delay = false
|
|
override val period: Long = 15
|
|
override fun execute(localtime: LocalDateTime) {
|
doTask(localtime)
|
}
|
|
override fun doTask(localtime: LocalDateTime) {
|
if (task1Delay || (localtime.hour == 8 && localtime.minute == 0)) {
|
// 判断今日爬取任务是否完成
|
val task = requestTaskRep.findLatestTask(localtime)
|
task1Delay = isTaskDelay(task)
|
if (!task1Delay) {
|
log.info("异常分析执行")
|
exceptionAnalysisController.init()
|
exceptionAnalysisController.autoRun()
|
}
|
}
|
|
if (task2Delay || (localtime.hour == 9 && localtime.minute == 0)) {
|
val task = requestTaskRep.findLatestTask(localtime)
|
task2Delay = isTaskDelay(task)
|
if (!task2Delay) {
|
log.info("日分析执行")
|
statisticAnalysisController.autoRunDailyStatics()
|
}
|
}
|
|
if (task3Delay || (localtime.dayOfMonth == 1 && localtime.hour == 9 && localtime.minute == 0)) {
|
val task = requestTaskRep.findLatestTask(localtime)
|
task3Delay = isTaskDelay(task)
|
if (!task3Delay) {
|
log.info("月分析执行")
|
statisticAnalysisController.autoRunMonthlyStatics()
|
}
|
}
|
}
|
|
/**
|
* 当任务开始执行时,判断任务状态,决定是否延迟执行
|
*/
|
private fun isTaskDelay(task: RequestTask?): Boolean {
|
// 任务正在执行,跳过此次分析,在下一周期继续判断,等待任务完成后进行分析
|
return if (task == null || task.runningStatus) {
|
true
|
} else !task.success
|
}
|
}
|