feiyu02
2024-12-31 0c59552dc14c9023d4c0a9d57509cce1d5a6d6da
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", String.valueOf(bgTaskStatus.getStatus()));
        // åºåˆ—化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);
    }
}