From 1a677d2b4a4bc615602f8c2a22bc07ec1356e5be Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期四, 16 十月 2025 17:39:06 +0800
Subject: [PATCH] 2025.10.16 1. 根据全局响应增强器GlobalResponseAdvice,将原先的BaseResPack接口包装函数统一去除; 2. 新增三种类型的数据产品数据库实体 3. 新增典型问题场景清单中间数据产品接口
---
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