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/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