From b046c68e42fc4dbec76030d1f3fadbbab324ecdd Mon Sep 17 00:00:00 2001 From: wangxiang <1827945911@qq.com> Date: Thu, 28 Sep 2023 16:37:56 +0800 Subject: [PATCH] chore: workflow design compose --- .../kicc/workflow/config/JacksonConfig.java | 7 +++++ .../controller/WorkflowModelController.java | 5 ++-- .../jackson2/ModelRepresentationMixin.java | 28 +++++++++++++++++++ 3 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/override/jackson2/ModelRepresentationMixin.java diff --git a/kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/config/JacksonConfig.java b/kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/config/JacksonConfig.java index dd871481..104ee2f5 100644 --- a/kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/config/JacksonConfig.java +++ b/kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/config/JacksonConfig.java @@ -1,8 +1,11 @@ package com.cloud.kicc.workflow.config; +import cn.hutool.core.date.DatePattern; import com.cloud.kicc.common.core.jackson.KiccJavaTimeModule; +import com.cloud.kicc.workflow.override.jackson2.ModelRepresentationMixin; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import org.flowable.ui.modeler.model.ModelRepresentation; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; import org.springframework.context.annotation.Bean; @@ -29,8 +32,12 @@ public class JacksonConfig { return builder -> { builder.locale(Locale.CHINA); builder.timeZone(TimeZone.getTimeZone(ZoneId.systemDefault())); + // 针对于Date类型,文本格式化 + builder.simpleDateFormat(DatePattern.NORM_DATETIME_PATTERN); // 解决返回给前端的Long类型数据失去精度,将Long转换为String builder.serializerByType(Long.class, ToStringSerializer.instance); + // 设置自定义的ModelRepresentationMixin序列Mixin类 + builder.mixIn(ModelRepresentation.class, ModelRepresentationMixin.class); // 针对于JDK新时间类,序列化时带有T的问题,自定义格式化字符串 builder.modules(new KiccJavaTimeModule()); }; diff --git a/kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/controller/WorkflowModelController.java b/kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/controller/WorkflowModelController.java index 5562b53e..649b5b38 100644 --- a/kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/controller/WorkflowModelController.java +++ b/kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/controller/WorkflowModelController.java @@ -164,9 +164,8 @@ public class WorkflowModelController { throw new BadRequestException("不存在上次更新日期"); } else { try { - Date readValue = this.objectMapper.getDeserializationConfig().getDateFormat().parse(lastUpdatedString); - lastUpdated = readValue.getTime(); - } catch (ParseException e) { + lastUpdated = Long.parseLong(lastUpdatedString); + } catch (NumberFormatException e) { throw new BadRequestException("无效的上次更新日期: '" + e + "'"); } diff --git a/kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/override/jackson2/ModelRepresentationMixin.java b/kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/override/jackson2/ModelRepresentationMixin.java new file mode 100644 index 00000000..eb124df6 --- /dev/null +++ b/kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/override/jackson2/ModelRepresentationMixin.java @@ -0,0 +1,28 @@ + + +package com.cloud.kicc.workflow.override.jackson2; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +import java.util.Date; + +/** + *
+ * 序列化模型版本冲突修改时间戳 + *
+ * + * @Author: wangxiang4 + * @Since: 2023/9/28 + */ +@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, + getterVisibility = JsonAutoDetect.Visibility.PUBLIC_ONLY, + isGetterVisibility = JsonAutoDetect.Visibility.NONE) +@JsonIgnoreProperties(ignoreUnknown = true) +public abstract class ModelRepresentationMixin { + + @JsonFormat(shape = JsonFormat.Shape.NUMBER) + abstract Date getLastUpdated(); + +}