src/main/kotlin/cn/flightfeather/supervision/common/executor/BgTaskStatus.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/kotlin/cn/flightfeather/supervision/common/executor/BgTaskStatusJsonSerializer.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/kotlin/cn/flightfeather/supervision/common/utils/JsonUtil.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/kotlin/cn/flightfeather/supervision/socket/LocalDateTimeAdapter.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/kotlin/cn/flightfeather/supervision/common/executor/BgTaskStatus.kt
@@ -1,5 +1,7 @@ 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 @@ -15,12 +17,15 @@ 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() // è¿è¡æ¶é¿ï¼ç§ï¼ src/main/kotlin/cn/flightfeather/supervision/common/executor/BgTaskStatusJsonSerializer.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,51 @@ package cn.flightfeather.supervision.common.executor; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; import java.lang.reflect.Type; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; /** * BgTaskStatusç±»çèªå®ä¹åºååç±» è§£å³äºè®¡ç®å±æ§æ æ³åºååçé®é¢ * by hc 2024.12.10 */ public class BgTaskStatusJsonSerializer implements JsonSerializer<BgTaskStatus> { @Override public JsonElement serialize(BgTaskStatus bgTaskStatus, Type typeOfSrc, JsonSerializationContext context) { JsonObject jsonObject = new JsonObject(); // åºååtype jsonObject.addProperty("type", String.valueOf(bgTaskStatus.getType())); // åºååid jsonObject.addProperty("id", bgTaskStatus.getId()); // åºååname jsonObject.addProperty("name", bgTaskStatus.getName()); // åºååstatus jsonObject.addProperty("status", bgTaskStatus.getStatus().ordinal()); // åºååstartTime jsonObject.addProperty("startTime", formatLocalDateTime(bgTaskStatus.getStartTime())); // åºååendTime jsonObject.addProperty("endTime", formatLocalDateTime(bgTaskStatus.getEndTime())); // åºååcreateTime jsonObject.addProperty("createTime", formatLocalDateTime(bgTaskStatus.getCreateTime())); // åºåå 计ç®å±æ§runTime jsonObject.addProperty("runTime", bgTaskStatus.getRunTime()); // åºååextra if (bgTaskStatus.getExtra() != null) { jsonObject.add("extra", context.serialize(bgTaskStatus.getExtra())); } return jsonObject; } private String formatLocalDateTime(LocalDateTime localDateTime) { // 妿LocalDateTime为nullï¼åè¿ånull if (localDateTime == null) { return null; } // æ ¼å¼åLocalDateTime return DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(localDateTime); } } src/main/kotlin/cn/flightfeather/supervision/common/utils/JsonUtil.kt
@@ -1,9 +1,13 @@ package cn.flightfeather.supervision.common.utils import cn.flightfeather.supervision.common.executor.BgTaskStatus import cn.flightfeather.supervision.common.executor.BgTaskStatusJsonSerializer import com.google.gson.Gson import com.google.gson.GsonBuilder object JsonUtil { val gson: Gson = GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create() val gson: Gson = GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss") .registerTypeAdapter(BgTaskStatus::class.java, BgTaskStatusJsonSerializer()) .create() } src/main/kotlin/cn/flightfeather/supervision/socket/LocalDateTimeAdapter.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,30 @@ package cn.flightfeather.supervision.socket; import com.google.gson.*; import java.lang.reflect.Type; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; /** * LocalDateTimeç±»åçæ¶é´æ ¼å¼åºåååååºååç±» * by hc 2024.12.6 */ public class LocalDateTimeAdapter implements JsonDeserializer<LocalDateTime>, JsonSerializer<LocalDateTime> { private final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); @Override public JsonElement serialize(LocalDateTime src, Type typeOfSrc, JsonSerializationContext context) { return new JsonPrimitive(dateTimeFormatter.format(src)); } @Override public LocalDateTime deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { try { return LocalDateTime.parse(json.getAsString(), dateTimeFormatter); } catch (Exception e) { throw new JsonParseException(e); } } }