Browse Source

chore: support version time

master
wangxiang 2 years ago
parent
commit
ce136a4e35
No known key found for this signature in database
GPG Key ID: 1BA7946AB6B232E4
  1. 10
      kicc-platform/kicc-platform-api/kicc-workflow-api/src/main/java/com/cloud/kicc/workflow/api/entity/WorkflowModel.java
  2. 2
      kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/KiccWorkflowApplication.java
  3. 46
      kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/config/JacksonConfig.java
  4. 4
      kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/controller/WorkflowModelController.java
  5. 28
      kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/override/jackson2/ModelRepresentationMixin.java

10
kicc-platform/kicc-platform-api/kicc-workflow-api/src/main/java/com/cloud/kicc/workflow/api/entity/WorkflowModel.java

@ -9,7 +9,7 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.util.Date;
/** /**
* <p> * <p>
@ -44,16 +44,16 @@ public class WorkflowModel implements Serializable {
private String modelComment; private String modelComment;
/** 创建时间 */ /** 创建时间 */
private LocalDateTime createTime; private Date created;
/** 创建人 */ /** 创建人 */
private String createById; private String createdBy;
/** 最后更新时间 */ /** 最后更新时间 */
private LocalDateTime updateTime; private Date lastUpdated;
/** 最后更新人 */ /** 最后更新人 */
private String updateById; private String lastUpdatedBy;
/** 模型版本 */ /** 模型版本 */
private int version; private int version;

2
kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/KiccWorkflowApplication.java

@ -1,6 +1,5 @@
package com.cloud.kicc.workflow; package com.cloud.kicc.workflow;
import com.cloud.kicc.common.core.annotation.EnableKiccJacksonAutoConvert;
import com.cloud.kicc.common.data.annotation.EnableKiccDataRepository; import com.cloud.kicc.common.data.annotation.EnableKiccDataRepository;
import com.cloud.kicc.common.feign.annotation.EnableKiccFeignClients; import com.cloud.kicc.common.feign.annotation.EnableKiccFeignClients;
import com.cloud.kicc.common.security.annotation.EnableKiccResourceServer; import com.cloud.kicc.common.security.annotation.EnableKiccResourceServer;
@ -20,7 +19,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableKiccResourceServer @EnableKiccResourceServer
@EnableKiccFeignClients @EnableKiccFeignClients
@SpringBootApplication @SpringBootApplication
@EnableKiccJacksonAutoConvert
@EnableKiccDataRepository @EnableKiccDataRepository
public class KiccWorkflowApplication { public class KiccWorkflowApplication {

46
kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/config/JacksonConfig.java

@ -0,0 +1,46 @@
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;
import org.springframework.context.annotation.Configuration;
import java.time.ZoneId;
import java.util.Locale;
import java.util.TimeZone;
/**
*<p>
* 配置Jackson
*</p>
*
* @Author: wangxiang4
* @Since: 2023/9/28
*/
@Configuration
@ConditionalOnClass(ObjectMapper.class)
public class JacksonConfig {
@Bean
public Jackson2ObjectMapperBuilderCustomizer customizer() {
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);
// 设置自定义的 Mixin 类
builder.mixIn(ModelRepresentation.class, ModelRepresentationMixin.class);
// 针对于JDK新时间类,序列化时带有T的问题,自定义格式化字符串
builder.modules(new KiccJavaTimeModule());
};
}
}

4
kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/controller/WorkflowModelController.java

@ -73,7 +73,7 @@ public class WorkflowModelController {
private LambdaQueryWrapper<WorkflowModel> getLambdaQueryWrapper(WorkflowModel workflowModel) { private LambdaQueryWrapper<WorkflowModel> getLambdaQueryWrapper(WorkflowModel workflowModel) {
return new LambdaQueryWrapper<WorkflowModel>() return new LambdaQueryWrapper<WorkflowModel>()
.like(StrUtil.isNotBlank(workflowModel.getName()), WorkflowModel::getName, workflowModel.getName()) .like(StrUtil.isNotBlank(workflowModel.getName()), WorkflowModel::getName, workflowModel.getName())
.orderByDesc(WorkflowModel::getUpdateTime); .orderByDesc(WorkflowModel::getLastUpdated);
} }
/** 流程模型列表 */ /** 流程模型列表 */
@ -190,7 +190,7 @@ public class WorkflowModelController {
if (currentUserIsOwner && "true".equals(values.getFirst("newVersion"))) { if (currentUserIsOwner && "true".equals(values.getFirst("newVersion"))) {
return this.updateModel(model, values, true); return this.updateModel(model, values, true);
} else { } else {
ConflictingRequestException exception = new ConflictingRequestException("别人更新了你的流程模型"); ConflictingRequestException exception = new ConflictingRequestException("流程模型已被修改,刷新后重试");
exception.addCustomData("userFullName", model.getLastUpdatedBy()); exception.addCustomData("userFullName", model.getLastUpdatedBy());
exception.addCustomData("newVersionAllowed", currentUserIsOwner); exception.addCustomData("newVersionAllowed", currentUserIsOwner);
throw exception; throw exception;

28
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;
/**
*<p>
* 序列化模型版本冲突修改时间戳
*</p>
*
* @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();
}
Loading…
Cancel
Save