package cn.flightfeather.supervision.common.executor
|
|
import cn.flightfeather.supervision.socket.LocalDateTimeAdapter
|
import com.google.gson.annotations.JsonAdapter
|
import java.time.Duration
|
import java.time.LocalDateTime
|
|
/**
|
* 后台耗时任务状态
|
*/
|
class BgTaskStatus(
|
val type: BgTaskType,
|
val id: String,
|
val name: String,
|
) {
|
// 任务状态
|
var status: TaskStatus = TaskStatus.WAITING
|
|
// 开始时间
|
@JsonAdapter(LocalDateTimeAdapter::class)
|
var startTime: LocalDateTime? = null
|
|
// 结束时间
|
@JsonAdapter(LocalDateTimeAdapter::class)
|
var endTime: LocalDateTime? = null
|
|
// 创建时间
|
@JsonAdapter(LocalDateTimeAdapter::class)
|
var createTime: LocalDateTime = LocalDateTime.now()
|
|
// 运行时长(秒)
|
val runTime: Long
|
get() {
|
when (status) {
|
TaskStatus.WAITING -> {
|
return 0
|
}
|
TaskStatus.RUNNING -> {
|
val now = LocalDateTime.now()
|
val duration = Duration.between(startTime, now)
|
return duration.toMillis() / 1000
|
}
|
TaskStatus.SUCCESS,
|
TaskStatus.FAIL,
|
TaskStatus.SHUTDOWN,
|
-> {
|
val duration = Duration.between(startTime, endTime)
|
return duration.toMillis() / 1000
|
}
|
}
|
}
|
|
// 额外自定义附带信息
|
var extra: Any? = null
|
|
}
|
|
enum class TaskStatus {
|
WAITING,
|
RUNNING,
|
SUCCESS,
|
FAIL,
|
SHUTDOWN
|
}
|