From a700aeb0a07d11da1e6b2ae999983ba17a415c70 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期三, 30 七月 2025 16:02:04 +0800
Subject: [PATCH] 2025.7.30 1. 新增基础数据产品相关接口(待完成)
---
src/main/kotlin/cn/flightfeather/supervision/common/executor/BgTask.kt | 26 ++++++++++++++++++--------
1 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/src/main/kotlin/cn/flightfeather/supervision/common/executor/BgTask.kt b/src/main/kotlin/cn/flightfeather/supervision/common/executor/BgTask.kt
index 953eac3..3a0b2b1 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/common/executor/BgTask.kt
+++ b/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,39 +11,50 @@
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
fun ready() {
- taskStatus.status = TaskStatus.RUNNING
taskStatus.startTime = LocalDateTime.now()
+ setStatus(TaskStatus.RUNNING)
}
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()
+ setStatus(TaskStatus.SUCCESS)
}
fun fail() {
- taskStatus.status = TaskStatus.FAIL
complete()
+ setStatus(TaskStatus.FAIL)
}
fun shutdown() {
if (future?.isCancelled == false && !future!!.isDone) {
future!!.cancel(true)
- taskStatus.status = TaskStatus.SHUTDOWN
- complete()
}
+ complete()
+ setStatus(TaskStatus.SHUTDOWN)
}
fun complete() {
taskStatus.endTime = LocalDateTime.now()
}
+
+ fun setStatus(status: TaskStatus) {
+ taskStatus.status = status
+ onStatusChange(taskStatus)
+ }
}
\ No newline at end of file
--
Gitblit v1.9.3