From fe207a9481c3afb9e3d25afe5c6f0cc7c7dd0d7e Mon Sep 17 00:00:00 2001 From: wangli Date: Sat, 12 Oct 2024 23:19:34 +0800 Subject: [PATCH] =?UTF-8?q?feat(REQ-2752)=20-=20=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E5=AE=9E=E4=BE=8B=E5=90=8D=E7=A7=B0=E7=9A=84=E5=88=86=E8=AF=8D?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=EF=BC=8C=E8=B0=83=E6=95=B4=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E5=AD=97=E6=AE=B5=E7=9A=84=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../es/ProcessInstanceDocumentVO.java | 2 +- .../response/es/ProcessTaskDocumentVO.java | 2 +- .../es/model/ProcessInstanceDocument.java | 12 ++++++----- .../es/model/ProcessTaskDocument.java | 12 ++++++----- .../AggregateProcessInstanceService.java | 14 ++++++------- .../AggregateProcessTaskService.java | 20 +++++++++---------- .../impl/EsProcessInstanceServiceImpl.java | 2 +- 7 files changed, 34 insertions(+), 30 deletions(-) diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/es/ProcessInstanceDocumentVO.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/es/ProcessInstanceDocumentVO.java index 8c3755e1e..b2ec6dbe1 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/es/ProcessInstanceDocumentVO.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/es/ProcessInstanceDocumentVO.java @@ -18,7 +18,7 @@ public class ProcessInstanceDocumentVO { /** * 流程实例 ID */ - private String id; + private String instanceId; /** * 流程实例名称 diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/es/ProcessTaskDocumentVO.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/es/ProcessTaskDocumentVO.java index 262424be2..4498ea611 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/es/ProcessTaskDocumentVO.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/es/ProcessTaskDocumentVO.java @@ -18,7 +18,7 @@ public class ProcessTaskDocumentVO { /** * 任务 ID */ - private String id; + private String taskId; /** * 归属的流程实例 ID diff --git a/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/model/ProcessInstanceDocument.java b/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/model/ProcessInstanceDocument.java index 91d6c7281..c1b1583c6 100644 --- a/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/model/ProcessInstanceDocument.java +++ b/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/model/ProcessInstanceDocument.java @@ -15,7 +15,6 @@ import org.dromara.easyes.annotation.rely.RefreshPolicy; import java.util.Date; import static org.dromara.easyes.annotation.rely.Analyzer.IK_MAX_WORD; -import static org.dromara.easyes.annotation.rely.Analyzer.IK_SMART; /** * 流程实例文档模型 @@ -38,7 +37,7 @@ public class ProcessInstanceDocument { /** * 流程实例名称 */ - @IndexField(fieldType = FieldType.KEYWORD_TEXT, analyzer = IK_MAX_WORD, searchAnalyzer = IK_SMART) + @IndexField(fieldType = FieldType.KEYWORD_TEXT, analyzer = IK_MAX_WORD, searchAnalyzer = IK_MAX_WORD) private String processInstanceName; /** @@ -60,12 +59,14 @@ public class ProcessInstanceDocument { /** * 流程实例的发起时间 */ - private Date startTime; + @IndexField(dateFormat = "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis") + private Date instanceStartTime; /** * 流程实例的结束时间 */ - private Date endTime; + @IndexField(dateFormat = "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis") + private Date instanceEndTime; /** * 流程实例的持续时间 ms @@ -75,13 +76,14 @@ public class ProcessInstanceDocument { /** * 该流程中上次操作完成的时间, 如果是已完成的实例, 就清空该值 */ + @IndexField(dateFormat = "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis") private Date lastOperationTime; /** * 租户 ID */ @IndexField(fieldType = FieldType.KEYWORD) - private String tenantId; + private String instanceTenantId; /** * 流程实例业务状态 diff --git a/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/model/ProcessTaskDocument.java b/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/model/ProcessTaskDocument.java index 7cdf979fb..497d06bff 100644 --- a/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/model/ProcessTaskDocument.java +++ b/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/model/ProcessTaskDocument.java @@ -46,13 +46,13 @@ public class ProcessTaskDocument { * 任务名称 */ @IndexField(fieldType = FieldType.KEYWORD) - private String name; + private String taskName; /** * 任务状态:审批中/通过/驳回/转交/加签... */ @IndexField(fieldType = FieldType.KEYWORD) - private String status; + private String taskStatus; /** * 操作建议 @@ -67,12 +67,14 @@ public class ProcessTaskDocument { /** * 流程实例的发起时间 */ - private Date startTime; + @IndexField(dateFormat = "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis") + private Date taskStartTime; /** * 流程实例的结束时间 */ - private Date endTime; + @IndexField(dateFormat = "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis") + private Date taskEndTime; /** * 流程实例的持续时间 ms @@ -83,7 +85,7 @@ public class ProcessTaskDocument { * 归属租户,与 processInstance#tenantId 一致 */ @IndexField(fieldType = FieldType.KEYWORD) - private String tenantId; + private String taskTenantId; /** * 审批人姓名 diff --git a/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/service/aggregation/AggregateProcessInstanceService.java b/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/service/aggregation/AggregateProcessInstanceService.java index 019659114..86b7aaca8 100644 --- a/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/service/aggregation/AggregateProcessInstanceService.java +++ b/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/service/aggregation/AggregateProcessInstanceService.java @@ -59,10 +59,10 @@ public class AggregateProcessInstanceService { processInstanceDocument.setProcessInstanceName(hpi.getName()); processInstanceDocument.setBusinessKey(hpi.getBusinessKey()); processInstanceDocument.setProcessDefinitionId(hpi.getProcessDefinitionId()); - processInstanceDocument.setStartTime(hpi.getStartTime()); - processInstanceDocument.setEndTime(hpi.getEndTime()); + processInstanceDocument.setInstanceStartTime(hpi.getStartTime()); + processInstanceDocument.setInstanceEndTime(hpi.getEndTime()); processInstanceDocument.setDurationInMillis(hpi.getDurationInMillis()); - processInstanceDocument.setTenantId(hpi.getTenantId()); + processInstanceDocument.setInstanceTenantId(hpi.getTenantId()); processInstanceDocument.setBusinessStatus(hpi.getBusinessStatus()); Map variables = hpi.getProcessVariables(); @@ -97,11 +97,11 @@ public class AggregateProcessInstanceService { //更新实例上的最后操作时间 if (Objects.equals(PROCESSING.getStatus(), hpi.getBusinessStatus())) { toEsProcessTaskDocuments.stream() - .filter(i -> StringUtils.hasText(i.getStatus()) && !Objects.equals(i.getStatus(), PROCESSING.getStatus())) - .filter(i-> Objects.nonNull(i.getEndTime())) - .max(Comparator.comparing(ProcessTaskDocument::getEndTime)) + .filter(i -> StringUtils.hasText(i.getTaskStatus()) && !Objects.equals(i.getTaskStatus(), PROCESSING.getStatus())) + .filter(i -> Objects.nonNull(i.getTaskEndTime())) + .max(Comparator.comparing(ProcessTaskDocument::getTaskEndTime)) .ifPresent(processTaskDocument -> { - processInstanceDocument.setLastOperationTime(processTaskDocument.getEndTime()); + processInstanceDocument.setLastOperationTime(processTaskDocument.getTaskEndTime()); esProcessInstanceService.update(ES_FIXED_ROUTING, processInstanceDocument); }); } else { diff --git a/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/service/aggregation/AggregateProcessTaskService.java b/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/service/aggregation/AggregateProcessTaskService.java index 21fb6d945..c3435cdad 100644 --- a/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/service/aggregation/AggregateProcessTaskService.java +++ b/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/service/aggregation/AggregateProcessTaskService.java @@ -83,16 +83,16 @@ public class AggregateProcessTaskService { processTaskDocument.setProcessInstanceId(log.getProcessInstanceId()); processTaskDocument.setProcessDefinitionId(hpi.getProcessDefinitionId()); processTaskDocument.setTaskDefinitionKey(log.getActivityId()); - processTaskDocument.setName(log.getActivityName()); - processTaskDocument.setStatus(log.getStatus()); + processTaskDocument.setTaskName(log.getActivityName()); + processTaskDocument.setTaskStatus(log.getStatus()); processTaskDocument.setAdvice(log.getAdvice()); processTaskDocument.setOperationDesc(log.getOperationDesc()); - processTaskDocument.setStartTime(log.getStartTime()); - processTaskDocument.setEndTime(log.getEndTime()); + processTaskDocument.setTaskStartTime(log.getStartTime()); + processTaskDocument.setTaskEndTime(log.getEndTime()); if (Objects.nonNull(log.getEndTime())) { processTaskDocument.setDuration(DateUtil.betweenMs(log.getEndTime(), log.getStartTime())); } - processTaskDocument.setTenantId(log.getTenantId()); + processTaskDocument.setTaskTenantId(log.getTenantId()); BpmnTaskDelegateAssigner assigner = CollectionUtils.isEmpty(log.getAssigneeFull()) ? null : log.getAssigneeFull().get(0); if(Objects.nonNull(assigner)) { processTaskDocument.setAssigneeName(assigner.getAssignerName()); @@ -158,8 +158,8 @@ public class AggregateProcessTaskService { processTaskDocument.setProcessInstanceId(task.getProcessInstanceId()); processTaskDocument.setProcessDefinitionId(task.getProcessDefinitionId()); processTaskDocument.setTaskDefinitionKey(task.getTaskDefinitionKey()); - processTaskDocument.setName(task.getName()); - processTaskDocument.setStatus(extTask.getStatus()); + processTaskDocument.setTaskName(task.getName()); + processTaskDocument.setTaskStatus(extTask.getStatus()); // 处理 advice processTaskDocument.setAdvice(comments.stream().filter(i -> Objects.equals(i.getType(), COMMENT_TYPE_ADVICE)) .findFirst().orElse(new CommentEntityImpl()).getFullMessage()); @@ -167,11 +167,11 @@ public class AggregateProcessTaskService { processTaskDocument.setOperationDesc(comments.stream().filter(i -> Objects.equals(COMMENT_TYPE_OPERATION_DESC, i.getType())) .max(Comparator.comparing(Comment::getTime)) .orElse(new CommentEntityImpl()).getFullMessage()); - processTaskDocument.setStartTime(task.getCreateTime()); - processTaskDocument.setEndTime(task.getEndTime()); + processTaskDocument.setTaskStartTime(task.getCreateTime()); + processTaskDocument.setTaskEndTime(task.getEndTime()); processTaskDocument.setDuration(task.getDurationInMillis()); // esProcessTask.setLastUpdateTime(task); - processTaskDocument.setTenantId(task.getTenantId()); + processTaskDocument.setTaskTenantId(task.getTenantId()); BpmnTaskDelegateAssigner assigner = BpmnTaskDelegateAssigner.toObjectCompatible(variables.getOrDefault(INTERNAL_TASK_RELATION_ASSIGNEE_INFO + task.getId(), null)); if(Objects.nonNull(assigner)) { processTaskDocument.setAssigneeName(assigner.getAssignerName()); diff --git a/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/service/impl/EsProcessInstanceServiceImpl.java b/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/service/impl/EsProcessInstanceServiceImpl.java index 2844c88bb..203c21d16 100644 --- a/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/service/impl/EsProcessInstanceServiceImpl.java +++ b/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/service/impl/EsProcessInstanceServiceImpl.java @@ -124,7 +124,7 @@ public class EsProcessInstanceServiceImpl implements EsProcessInstanceService { .like(StringUtils.hasText(dto.getProcessInstanceName()), FieldUtils.val(ProcessInstanceDocument::getProcessInstanceName), dto.getProcessInstanceName()) .in(CollectionUtils.isEmpty(dto.getProcessInstanceIds()), FieldUtils.val(ProcessInstanceDocument::getInstanceId), dto.getProcessInstanceIds()) // .routing(ES_FIXED_ROUTING) - .orderByDesc(FieldUtils.val(ProcessInstanceDocument::getStartTime)) + .orderByDesc(FieldUtils.val(ProcessInstanceDocument::getInstanceStartTime)) ; EsPageInfo pageInfo; try {