feat(REQ-2752) - 统一实例名称的分词方式,调整时间类型字段的格式化

This commit is contained in:
wangli 2024-10-12 23:19:34 +08:00
parent 3318e09da2
commit fe207a9481
7 changed files with 34 additions and 30 deletions

View File

@ -18,7 +18,7 @@ public class ProcessInstanceDocumentVO {
/** /**
* 流程实例 ID * 流程实例 ID
*/ */
private String id; private String instanceId;
/** /**
* 流程实例名称 * 流程实例名称

View File

@ -18,7 +18,7 @@ public class ProcessTaskDocumentVO {
/** /**
* 任务 ID * 任务 ID
*/ */
private String id; private String taskId;
/** /**
* 归属的流程实例 ID * 归属的流程实例 ID

View File

@ -15,7 +15,6 @@ import org.dromara.easyes.annotation.rely.RefreshPolicy;
import java.util.Date; import java.util.Date;
import static org.dromara.easyes.annotation.rely.Analyzer.IK_MAX_WORD; 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; 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 * 流程实例的持续时间 ms
@ -75,13 +76,14 @@ public class ProcessInstanceDocument {
/** /**
* 该流程中上次操作完成的时间, 如果是已完成的实例, 就清空该值 * 该流程中上次操作完成的时间, 如果是已完成的实例, 就清空该值
*/ */
@IndexField(dateFormat = "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis")
private Date lastOperationTime; private Date lastOperationTime;
/** /**
* 租户 ID * 租户 ID
*/ */
@IndexField(fieldType = FieldType.KEYWORD) @IndexField(fieldType = FieldType.KEYWORD)
private String tenantId; private String instanceTenantId;
/** /**
* 流程实例业务状态 * 流程实例业务状态

View File

@ -46,13 +46,13 @@ public class ProcessTaskDocument {
* 任务名称 * 任务名称
*/ */
@IndexField(fieldType = FieldType.KEYWORD) @IndexField(fieldType = FieldType.KEYWORD)
private String name; private String taskName;
/** /**
* 任务状态:审批中/通过/驳回/转交/加签... * 任务状态:审批中/通过/驳回/转交/加签...
*/ */
@IndexField(fieldType = FieldType.KEYWORD) @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 * 流程实例的持续时间 ms
@ -83,7 +85,7 @@ public class ProcessTaskDocument {
* 归属租户, processInstance#tenantId 一致 * 归属租户, processInstance#tenantId 一致
*/ */
@IndexField(fieldType = FieldType.KEYWORD) @IndexField(fieldType = FieldType.KEYWORD)
private String tenantId; private String taskTenantId;
/** /**
* 审批人姓名 * 审批人姓名

View File

@ -59,10 +59,10 @@ public class AggregateProcessInstanceService {
processInstanceDocument.setProcessInstanceName(hpi.getName()); processInstanceDocument.setProcessInstanceName(hpi.getName());
processInstanceDocument.setBusinessKey(hpi.getBusinessKey()); processInstanceDocument.setBusinessKey(hpi.getBusinessKey());
processInstanceDocument.setProcessDefinitionId(hpi.getProcessDefinitionId()); processInstanceDocument.setProcessDefinitionId(hpi.getProcessDefinitionId());
processInstanceDocument.setStartTime(hpi.getStartTime()); processInstanceDocument.setInstanceStartTime(hpi.getStartTime());
processInstanceDocument.setEndTime(hpi.getEndTime()); processInstanceDocument.setInstanceEndTime(hpi.getEndTime());
processInstanceDocument.setDurationInMillis(hpi.getDurationInMillis()); processInstanceDocument.setDurationInMillis(hpi.getDurationInMillis());
processInstanceDocument.setTenantId(hpi.getTenantId()); processInstanceDocument.setInstanceTenantId(hpi.getTenantId());
processInstanceDocument.setBusinessStatus(hpi.getBusinessStatus()); processInstanceDocument.setBusinessStatus(hpi.getBusinessStatus());
Map<String, Object> variables = hpi.getProcessVariables(); Map<String, Object> variables = hpi.getProcessVariables();
@ -97,11 +97,11 @@ public class AggregateProcessInstanceService {
//更新实例上的最后操作时间 //更新实例上的最后操作时间
if (Objects.equals(PROCESSING.getStatus(), hpi.getBusinessStatus())) { if (Objects.equals(PROCESSING.getStatus(), hpi.getBusinessStatus())) {
toEsProcessTaskDocuments.stream() toEsProcessTaskDocuments.stream()
.filter(i -> StringUtils.hasText(i.getStatus()) && !Objects.equals(i.getStatus(), PROCESSING.getStatus())) .filter(i -> StringUtils.hasText(i.getTaskStatus()) && !Objects.equals(i.getTaskStatus(), PROCESSING.getStatus()))
.filter(i-> Objects.nonNull(i.getEndTime())) .filter(i -> Objects.nonNull(i.getTaskEndTime()))
.max(Comparator.comparing(ProcessTaskDocument::getEndTime)) .max(Comparator.comparing(ProcessTaskDocument::getTaskEndTime))
.ifPresent(processTaskDocument -> { .ifPresent(processTaskDocument -> {
processInstanceDocument.setLastOperationTime(processTaskDocument.getEndTime()); processInstanceDocument.setLastOperationTime(processTaskDocument.getTaskEndTime());
esProcessInstanceService.update(ES_FIXED_ROUTING, processInstanceDocument); esProcessInstanceService.update(ES_FIXED_ROUTING, processInstanceDocument);
}); });
} else { } else {

View File

@ -83,16 +83,16 @@ public class AggregateProcessTaskService {
processTaskDocument.setProcessInstanceId(log.getProcessInstanceId()); processTaskDocument.setProcessInstanceId(log.getProcessInstanceId());
processTaskDocument.setProcessDefinitionId(hpi.getProcessDefinitionId()); processTaskDocument.setProcessDefinitionId(hpi.getProcessDefinitionId());
processTaskDocument.setTaskDefinitionKey(log.getActivityId()); processTaskDocument.setTaskDefinitionKey(log.getActivityId());
processTaskDocument.setName(log.getActivityName()); processTaskDocument.setTaskName(log.getActivityName());
processTaskDocument.setStatus(log.getStatus()); processTaskDocument.setTaskStatus(log.getStatus());
processTaskDocument.setAdvice(log.getAdvice()); processTaskDocument.setAdvice(log.getAdvice());
processTaskDocument.setOperationDesc(log.getOperationDesc()); processTaskDocument.setOperationDesc(log.getOperationDesc());
processTaskDocument.setStartTime(log.getStartTime()); processTaskDocument.setTaskStartTime(log.getStartTime());
processTaskDocument.setEndTime(log.getEndTime()); processTaskDocument.setTaskEndTime(log.getEndTime());
if (Objects.nonNull(log.getEndTime())) { if (Objects.nonNull(log.getEndTime())) {
processTaskDocument.setDuration(DateUtil.betweenMs(log.getEndTime(), log.getStartTime())); 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); BpmnTaskDelegateAssigner assigner = CollectionUtils.isEmpty(log.getAssigneeFull()) ? null : log.getAssigneeFull().get(0);
if(Objects.nonNull(assigner)) { if(Objects.nonNull(assigner)) {
processTaskDocument.setAssigneeName(assigner.getAssignerName()); processTaskDocument.setAssigneeName(assigner.getAssignerName());
@ -158,8 +158,8 @@ public class AggregateProcessTaskService {
processTaskDocument.setProcessInstanceId(task.getProcessInstanceId()); processTaskDocument.setProcessInstanceId(task.getProcessInstanceId());
processTaskDocument.setProcessDefinitionId(task.getProcessDefinitionId()); processTaskDocument.setProcessDefinitionId(task.getProcessDefinitionId());
processTaskDocument.setTaskDefinitionKey(task.getTaskDefinitionKey()); processTaskDocument.setTaskDefinitionKey(task.getTaskDefinitionKey());
processTaskDocument.setName(task.getName()); processTaskDocument.setTaskName(task.getName());
processTaskDocument.setStatus(extTask.getStatus()); processTaskDocument.setTaskStatus(extTask.getStatus());
// 处理 advice // 处理 advice
processTaskDocument.setAdvice(comments.stream().filter(i -> Objects.equals(i.getType(), COMMENT_TYPE_ADVICE)) processTaskDocument.setAdvice(comments.stream().filter(i -> Objects.equals(i.getType(), COMMENT_TYPE_ADVICE))
.findFirst().orElse(new CommentEntityImpl()).getFullMessage()); .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())) processTaskDocument.setOperationDesc(comments.stream().filter(i -> Objects.equals(COMMENT_TYPE_OPERATION_DESC, i.getType()))
.max(Comparator.comparing(Comment::getTime)) .max(Comparator.comparing(Comment::getTime))
.orElse(new CommentEntityImpl()).getFullMessage()); .orElse(new CommentEntityImpl()).getFullMessage());
processTaskDocument.setStartTime(task.getCreateTime()); processTaskDocument.setTaskStartTime(task.getCreateTime());
processTaskDocument.setEndTime(task.getEndTime()); processTaskDocument.setTaskEndTime(task.getEndTime());
processTaskDocument.setDuration(task.getDurationInMillis()); processTaskDocument.setDuration(task.getDurationInMillis());
// esProcessTask.setLastUpdateTime(task); // 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)); BpmnTaskDelegateAssigner assigner = BpmnTaskDelegateAssigner.toObjectCompatible(variables.getOrDefault(INTERNAL_TASK_RELATION_ASSIGNEE_INFO + task.getId(), null));
if(Objects.nonNull(assigner)) { if(Objects.nonNull(assigner)) {
processTaskDocument.setAssigneeName(assigner.getAssignerName()); processTaskDocument.setAssigneeName(assigner.getAssignerName());

View File

@ -124,7 +124,7 @@ public class EsProcessInstanceServiceImpl implements EsProcessInstanceService {
.like(StringUtils.hasText(dto.getProcessInstanceName()), FieldUtils.val(ProcessInstanceDocument::getProcessInstanceName), dto.getProcessInstanceName()) .like(StringUtils.hasText(dto.getProcessInstanceName()), FieldUtils.val(ProcessInstanceDocument::getProcessInstanceName), dto.getProcessInstanceName())
.in(CollectionUtils.isEmpty(dto.getProcessInstanceIds()), FieldUtils.val(ProcessInstanceDocument::getInstanceId), dto.getProcessInstanceIds()) .in(CollectionUtils.isEmpty(dto.getProcessInstanceIds()), FieldUtils.val(ProcessInstanceDocument::getInstanceId), dto.getProcessInstanceIds())
// .routing(ES_FIXED_ROUTING) // .routing(ES_FIXED_ROUTING)
.orderByDesc(FieldUtils.val(ProcessInstanceDocument::getStartTime)) .orderByDesc(FieldUtils.val(ProcessInstanceDocument::getInstanceStartTime))
; ;
EsPageInfo<ProcessInstanceDocument> pageInfo; EsPageInfo<ProcessInstanceDocument> pageInfo;
try { try {