From 8b6a2a8255d9da50b90a086222583ba1b4a77c99 Mon Sep 17 00:00:00 2001
From: dangsn <dangshuainan@louddt.com>
Date: 星期日, 30 七月 2023 21:40:23 +0800
Subject: [PATCH] 待办任务增加显示项:上一步操作人以及处理意见
---
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/BladeFlow.java | 17 ++++++++
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java | 62 +++++++++++++++++++++++++++++-
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/constant/FlowEngineConstant.java | 2 +
3 files changed, 77 insertions(+), 4 deletions(-)
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/BladeFlow.java b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/BladeFlow.java
index bc0c590..a0ca9b6 100644
--- a/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/BladeFlow.java
+++ b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/BladeFlow.java
@@ -125,7 +125,7 @@
*/
private String historyActivityId;
/**
- * 鍘嗗彶娲诲姩娴佺▼
+ * 鍘嗗彶娲诲姩鍚嶇О
*/
private String historyActivityName;
/**
@@ -170,6 +170,21 @@
private Map<String, Object> variables;
/**
+ * 鍘嗗彶娲诲姩澶勭悊浜�
+ */
+ private String historyActivityAssigne;
+
+ /**
+ * 鍘嗗彶娲诲姩澶勭悊浜哄悕绉�
+ */
+ private String historyActivityAssigneName;
+
+ /**
+ * 鍘嗗彶娲诲姩鎰忚
+ */
+ private String historyActivityIdea;
+
+ /**
* 鑾峰彇鏄惁閫氳繃
*/
public boolean isPass() {
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);
+ }
+
/**
* 鑾峰彇鍘嗗彶娴佺▼
*
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/constant/FlowEngineConstant.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/constant/FlowEngineConstant.java
index 758abbe..509b0b9 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/constant/FlowEngineConstant.java
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/constant/FlowEngineConstant.java
@@ -49,4 +49,6 @@
String END_EVENT = "endEvent";
+ String USR_TASK = "userTask";
+
}
--
Gitblit v1.9.3