From d30089f9dd63f5f844433c5414b471f2676eec3a Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期三, 02 八月 2023 16:05:56 +0800
Subject: [PATCH] Merge branch 'master' of http://dev.vci-tech.com:1065/r/ubcs
---
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java | 62 +++++++++++++++++++++++++++++-
1 files changed, 59 insertions(+), 3 deletions(-)
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java
index 4e70d5f..502f332 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java
@@ -24,20 +24,21 @@
import com.vci.ubcs.flow.engine.constant.FlowEngineConstant;
import com.vci.ubcs.flow.engine.entity.FlowProcess;
import com.vci.ubcs.flow.engine.utils.FlowCache;
+import com.vci.ubcs.system.user.cache.UserCache;
+import com.vci.ubcs.system.user.entity.User;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.flowable.engine.HistoryService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
+import org.flowable.engine.history.HistoricActivityInstance;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.history.HistoricProcessInstanceQuery;
import org.flowable.engine.runtime.Execution;
-import org.flowable.engine.runtime.ProcessInstance;
-import org.flowable.task.api.Task;
+import org.flowable.engine.task.Comment;
import org.flowable.task.api.TaskQuery;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.flowable.task.api.history.HistoricTaskInstanceQuery;
-import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.support.Kv;
import org.springblade.core.tool.utils.Func;
@@ -45,6 +46,7 @@
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.stereotype.Service;
+import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -323,6 +325,37 @@
flow.setVariables(task.getProcessVariables());
HistoricProcessInstance historicProcessInstance = getHistoricProcessInstance(task.getProcessInstanceId());
+
+ //鑾峰彇涓婁竴浠诲姟淇℃伅
+ HistoricActivityInstance historicActivityInstance = getPrevHistoricActivityInstance(task.getProcessInstanceId(),task.getId());
+ flow.setHistoryActivityId(historicActivityInstance.getTaskId());
+ flow.setHistoryActivityName(historicActivityInstance.getActivityName());
+ //鑾峰彇鍘嗗彶浠诲姟鎵ц浜�
+ if(historicActivityInstance.getActivityType().equals(FlowEngineConstant.USR_TASK)){
+ User user = UserCache.getUser(TaskUtil.getUserId(historicActivityInstance.getAssignee()));
+ flow.setHistoryActivityAssigne(historicActivityInstance.getAssignee());
+ flow.setHistoryActivityAssigneName(user.getName());
+ List<Comment> commentList = taskService.getTaskComments(historicActivityInstance.getTaskId());
+ if (commentList.size() > 0) {
+ flow.setHistoryActivityIdea(commentList.get(0).getFullMessage());
+ }
+ }
+ // 鑾峰彇娴佺▼鍙戣捣浜哄悕绉�
+ if (FlowEngineConstant.START_EVENT.equals(historicActivityInstance.getActivityType())) {
+ List<HistoricProcessInstance> processInstanceList = historyService.createHistoricProcessInstanceQuery()
+ .processInstanceId(task.getProcessInstanceId()).orderByProcessInstanceStartTime().asc().list();
+ if (processInstanceList.size() > 0) {
+ if (StringUtil.isNotBlank(processInstanceList.get(0).getStartUserId())) {
+ String taskUser = processInstanceList.get(0).getStartUserId();
+ User user = UserCache.getUser(TaskUtil.getUserId(taskUser));
+ if (user != null) {
+ flow.setHistoryActivityAssigne(historicActivityInstance.getAssignee());
+ flow.setHistoryActivityAssigneName(user.getName());
+ }
+ }
+ }
+ }
+
if (Func.isNotEmpty(historicProcessInstance)) {
String[] businessKey = Func.toStrArray(StringPool.COLON, historicProcessInstance.getBusinessKey());
flow.setBusinessTable(businessKey[0]);
@@ -342,6 +375,29 @@
});
}
+ private HistoricActivityInstance getPrevHistoricActivityInstance(String processInstanceId, String taskDefinitionId) {
+ List<HistoricActivityInstance> historicActivityInstanceList = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId)
+ .orderByHistoricActivityInstanceStartTime().asc()
+ .orderByHistoricActivityInstanceEndTime().asc().list();
+ List<HistoricActivityInstance> tempList = new ArrayList<>();
+ int index = 0;
+ for(HistoricActivityInstance historicActivityInstance : historicActivityInstanceList){
+ if (StringUtils.equals(FlowEngineConstant.USR_TASK, historicActivityInstance.getActivityType())
+ || FlowEngineConstant.START_EVENT.equals(historicActivityInstance.getActivityType())
+ || FlowEngineConstant.END_EVENT.equals(historicActivityInstance.getActivityType())) {
+ tempList.add(historicActivityInstance);
+ }
+ if(StringUtils.isNotEmpty(historicActivityInstance.getTaskId()) && historicActivityInstance.getTaskId().equals(taskDefinitionId)){
+ index = tempList.indexOf(historicActivityInstance);
+ break;
+ }
+ }
+ if(index == 0){
+ return tempList.get(0);
+ }
+ return tempList.get(index-1);
+ }
+
/**
* 鑾峰彇鍘嗗彶娴佺▼
*
--
Gitblit v1.9.3