package cn.flightfeather.supervision.scheduler
|
|
import cn.flightfeather.supervision.business.bgtask.AopTaskCtrl
|
import cn.flightfeather.supervision.business.bgtask.TaskFinishSubtask
|
import cn.flightfeather.supervision.business.bgtask.TaskFinishTopTask
|
import cn.flightfeather.supervision.lightshare.vo.AreaVo
|
import org.slf4j.Logger
|
import org.slf4j.LoggerFactory
|
import org.springframework.beans.factory.annotation.Value
|
import org.springframework.scheduling.annotation.Async
|
import org.springframework.scheduling.annotation.Scheduled
|
import org.springframework.stereotype.Component
|
import java.time.LocalDate
|
import java.time.LocalDateTime
|
|
/**
|
* 定时任务调度
|
* 一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。按顺序依次为:
|
* 秒(0~59)
|
* 分钟(0~59)
|
* 小时(0~23)
|
* 天(1~31)
|
* 月(1~12)
|
* 星期(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
|
*/
|
@Component
|
class ScheduleService(
|
@Value("\${mode}")
|
var mode: String,
|
private val taskFinishSubtask: TaskFinishSubtask,
|
private val taskFinishTopTask: TaskFinishTopTask,
|
private val aopTaskCtrl: AopTaskCtrl,
|
) {
|
val logger: Logger = LoggerFactory.getLogger(ScheduleService::class.java)
|
|
@Async
|
@Scheduled(cron = "0 0 0 * * *")
|
fun eachDay() {
|
if (mode != "pro") return
|
|
logger.info("=====>>>>>每日任务执行 {}", System.currentTimeMillis())
|
taskFinishSubtask.handle()
|
logger.info("=====>>>>>每日任务结束 {}", System.currentTimeMillis())
|
}
|
|
@Async
|
@Scheduled(cron = "0 0 0 * * MON")
|
fun eachWeek() {
|
if (mode != "pro") return
|
|
logger.info("=====>>>>>每周任务执行 {}", System.currentTimeMillis())
|
// 执行上周的自评任务
|
aopTaskCtrl.startAllEvaluation(LocalDate.now().atStartOfDay())
|
logger.info("=====>>>>>每周任务结束 {}", System.currentTimeMillis())
|
}
|
|
@Async
|
@Scheduled(cron = "0 0 0 2 * *")
|
fun eachMonth() {
|
if (mode != "pro") return
|
|
logger.info("=====>>>>>每月任务执行 {}", System.currentTimeMillis())
|
// 执行上个月的完整自评任务
|
aopTaskCtrl.startAll(LocalDate.now().atStartOfDay().minusMonths(1))
|
// 执行顶层任务自动结束任务
|
taskFinishTopTask.handle()
|
logger.info("=====>>>>>每月任务结束 {}", System.currentTimeMillis())
|
}
|
}
|