src/main/kotlin/cn/flightfeather/supervision/common/executor/BgTask.kt
@@ -1,6 +1,5 @@
package cn.flightfeather.supervision.common.executor
import org.springframework.scheduling.annotation.Async
import java.time.LocalDateTime
import java.util.concurrent.Future
@@ -12,6 +11,7 @@
    val id: String,
    val name: String,
    private val task: () -> Boolean,
    private val onStatusChange: (status: BgTaskStatus) -> Unit
) {
    var taskStatus = BgTaskStatus(type, id, name)
    var future: Future<*>? = null
@@ -22,26 +22,33 @@
    }
    fun execute() {
        val res = task()
        if (res) success() else fail()
        try {
            val res = task()
            if (res) success() else fail()
        } catch (e: Exception) {
            fail()
            taskStatus.extra = e.message
        }
    }
    fun success() {
        taskStatus.status = TaskStatus.SUCCESS
        complete()
        onStatusChange(taskStatus)
    }
    fun fail() {
        taskStatus.status = TaskStatus.FAIL
        complete()
        onStatusChange(taskStatus)
    }
    fun shutdown() {
        if (future?.isCancelled == false && !future!!.isDone) {
            future!!.cancel(true)
            taskStatus.status = TaskStatus.SHUTDOWN
            complete()
        }
        taskStatus.status = TaskStatus.SHUTDOWN
        complete()
    }
    fun complete() {