| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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]); |
| | |
| | | }); |
| | | } |
| | | |
| | | 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); |
| | | } |
| | | |
| | | /** |
| | | * 获取历史流程 |
| | | * |