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