From bf74d819239bb136f72ddc92129ecdbabbc38fa7 Mon Sep 17 00:00:00 2001 From: lihang <lihang@vci-tech.com> Date: 星期五, 04 八月 2023 18:44:16 +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 | 73 ++++++++++++++++++++++++++++++++++-- 1 files changed, 68 insertions(+), 5 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..a8581d4 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,22 @@ 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.starter.web.util.VciDateUtil; +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 +47,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,10 +326,47 @@ 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()); + } + } + List<HistoricProcessInstance> processInstanceList = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(task.getProcessInstanceId()).orderByProcessInstanceStartTime().asc().list(); + flow.setProcessDefinitionStartTime(VciDateUtil.date2Str(processInstanceList.get(0).getStartTime(),VciDateUtil.DateTimeFormat)); + // 鑾峰彇娴佺▼鍙戣捣浜哄悕绉� + if (FlowEngineConstant.START_EVENT.equals(historicActivityInstance.getActivityType())) { + 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()); + String[] businessKey = new String[2]; + if(historicProcessInstance.getBusinessKey().contains(StringPool.COLON)){ + businessKey = Func.toStrArray(StringPool.COLON, historicProcessInstance.getBusinessKey()); + }else{ + businessKey[0] = historicProcessInstance.getBusinessKey(); + } flow.setBusinessTable(businessKey[0]); - flow.setBusinessId(businessKey.length>1?businessKey[1]:"1"); + flow.setBusinessId(businessKey.length>1 && StringUtils.isNotEmpty(businessKey[1])?businessKey[1]:"1"); } FlowProcess processDefinition = FlowCache.getProcessDefinition(task.getProcessDefinitionId()); @@ -342,6 +382,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