From 90aad8ed9afd0096aa753cbea2f2a414bb3836b2 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期二, 23 四月 2024 10:21:58 +0800 Subject: [PATCH] !521 update 优化工作流模块 判断集合工具类,统一为CollUtil Merge pull request !521 from 追梦稻草人Li/dev --- ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java | 50 +++++++++++++++++++++++++++++--------------------- 1 files changed, 29 insertions(+), 21 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java index d156a71..d5c7599 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java @@ -2,7 +2,6 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -30,6 +29,7 @@ import org.dromara.workflow.mapper.ActHiTaskinstMapper; import org.dromara.workflow.mapper.ActTaskMapper; import org.dromara.workflow.service.IActTaskService; +import org.dromara.workflow.service.IWfDefinitionConfigService; import org.dromara.workflow.service.IWfNodeConfigService; import org.dromara.workflow.service.IWfTaskBackNodeService; import org.dromara.workflow.utils.ModelUtils; @@ -78,6 +78,7 @@ private final IWfTaskBackNodeService iWfTaskBackNodeService; private final ActHiTaskinstMapper actHiTaskinstMapper; private final IWfNodeConfigService iWfNodeConfigService; + private final IWfDefinitionConfigService iWfDefinitionConfigService; /** * 鍚姩浠诲姟 @@ -106,6 +107,10 @@ map.put("taskId", taskResult.get(0).getId()); return map; } + WfDefinitionConfigVo wfDefinitionConfigVo = iWfDefinitionConfigService.getByTableNameLastVersion(startProcessBo.getTableName()); + if (wfDefinitionConfigVo == null) { + throw new ServiceException("璇峰埌娴佺▼瀹氫箟缁戝畾涓氬姟琛ㄥ悕涓庢祦绋婯EY锛�"); + } // 璁剧疆鍚姩浜� identityService.setAuthenticatedUserId(String.valueOf(LoginHelper.getUserId())); Authentication.setAuthenticatedUserId(String.valueOf(LoginHelper.getUserId())); @@ -118,12 +123,12 @@ ProcessInstance pi; try { if (TenantHelper.isEnable()) { - pi = runtimeService.startProcessInstanceByKeyAndTenantId(startProcessBo.getProcessKey(), startProcessBo.getBusinessKey(), variables, TenantHelper.getTenantId()); + pi = runtimeService.startProcessInstanceByKeyAndTenantId(wfDefinitionConfigVo.getProcessKey(), startProcessBo.getBusinessKey(), variables, TenantHelper.getTenantId()); } else { - pi = runtimeService.startProcessInstanceByKey(startProcessBo.getProcessKey(), startProcessBo.getBusinessKey(), variables); + pi = runtimeService.startProcessInstanceByKey(wfDefinitionConfigVo.getProcessKey(), startProcessBo.getBusinessKey(), variables); } } catch (FlowableObjectNotFoundException e) { - throw new ServiceException("鎵句笉鍒板綋鍓嶃��" + startProcessBo.getProcessKey() + "銆戞祦绋嬪畾涔夛紒"); + throw new ServiceException("鎵句笉鍒板綋鍓嶃��" + wfDefinitionConfigVo.getProcessKey() + "銆戞祦绋嬪畾涔夛紒"); } // 灏嗘祦绋嬪畾涔夊悕绉� 浣滀负 娴佺▼瀹炰緥鍚嶇О runtimeService.setProcessInstanceName(pi.getProcessInstanceId(), pi.getProcessDefinitionName()); @@ -171,7 +176,7 @@ if (ObjectUtil.isNotEmpty(task.getDelegationState()) && FlowConstant.PENDING.equals(task.getDelegationState().name())) { taskService.resolveTask(completeTaskBo.getTaskId()); TaskEntity newTask = WorkflowUtils.createNewTask(task); - taskService.addComment(newTask.getId(), task.getProcessInstanceId(), completeTaskBo.getMessage()); + taskService.addComment(newTask.getId(), task.getProcessInstanceId(), TaskStatusEnum.PASS.getStatus(), StringUtils.isNotBlank(completeTaskBo.getMessage()) ? completeTaskBo.getMessage() : StrUtil.EMPTY); taskService.complete(newTask.getId()); return true; } @@ -282,10 +287,10 @@ task.setParticipantVo(WorkflowUtils.getCurrentTaskParticipant(task.getId())); task.setMultiInstance(WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey()) != null); if (CollUtil.isNotEmpty(wfNodeConfigVoList)) { - wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(task.getProcessDefinitionId()) && e.getNodeId().equals(task.getTaskDefinitionKey())).findFirst().ifPresent(task::setWfNodeConfigVo); + wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(task.getProcessDefinitionId()) && FlowConstant.TRUE.equals(e.getApplyUserTask())).findFirst().ifPresent(task::setWfNodeConfigVo); + wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(task.getProcessDefinitionId()) && e.getNodeId().equals(task.getTaskDefinitionKey()) && FlowConstant.FALSE.equals(e.getApplyUserTask())).findFirst().ifPresent(task::setWfNodeConfigVo); } } - WorkflowUtils.setWfDefinitionConfigVo(taskList, processDefinitionIds, PROCESS_DEFINITION_ID); } return TableDataInfo.build(page); } @@ -347,11 +352,11 @@ taskVo.setParticipantVo(WorkflowUtils.getCurrentTaskParticipant(task.getId())); taskVo.setMultiInstance(WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey()) != null); if (CollUtil.isNotEmpty(wfNodeConfigVoList)) { - wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(task.getProcessDefinitionId()) && e.getNodeId().equals(task.getTaskDefinitionKey())).findFirst().ifPresent(taskVo::setWfNodeConfigVo); + wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(task.getProcessDefinitionId()) && FlowConstant.TRUE.equals(e.getApplyUserTask())).findFirst().ifPresent(taskVo::setWfNodeConfigVo); + wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(task.getProcessDefinitionId()) && e.getNodeId().equals(task.getTaskDefinitionKey()) && FlowConstant.FALSE.equals(e.getApplyUserTask())).findFirst().ifPresent(taskVo::setWfNodeConfigVo); } list.add(taskVo); } - WorkflowUtils.setWfDefinitionConfigVo(list, processDefinitionIds, PROCESS_DEFINITION_ID); } long count = query.count(); TableDataInfo<TaskVo> build = TableDataInfo.build(); @@ -382,10 +387,10 @@ for (TaskVo task : taskList) { task.setBusinessStatusName(BusinessStatusEnum.findByStatus(task.getBusinessStatus())); if (CollUtil.isNotEmpty(wfNodeConfigVoList)) { - wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(task.getProcessDefinitionId()) && e.getNodeId().equals(task.getTaskDefinitionKey())).findFirst().ifPresent(task::setWfNodeConfigVo); + wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(task.getProcessDefinitionId()) && FlowConstant.TRUE.equals(e.getApplyUserTask())).findFirst().ifPresent(task::setWfNodeConfigVo); + wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(task.getProcessDefinitionId()) && e.getNodeId().equals(task.getTaskDefinitionKey()) && FlowConstant.FALSE.equals(e.getApplyUserTask())).findFirst().ifPresent(task::setWfNodeConfigVo); } } - WorkflowUtils.setWfDefinitionConfigVo(taskList, processDefinitionIds, PROCESS_DEFINITION_ID); } return TableDataInfo.build(page); } @@ -418,11 +423,10 @@ for (TaskVo task : taskList) { task.setBusinessStatusName(BusinessStatusEnum.findByStatus(task.getBusinessStatus())); if (CollUtil.isNotEmpty(wfNodeConfigVoList)) { - wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(task.getProcessDefinitionId()) && e.getNodeId().equals(task.getTaskDefinitionKey())).findFirst().ifPresent(task::setWfNodeConfigVo); + wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(task.getProcessDefinitionId()) && FlowConstant.TRUE.equals(e.getApplyUserTask())).findFirst().ifPresent(task::setWfNodeConfigVo); + wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(task.getProcessDefinitionId()) && e.getNodeId().equals(task.getTaskDefinitionKey()) && FlowConstant.FALSE.equals(e.getApplyUserTask())).findFirst().ifPresent(task::setWfNodeConfigVo); } } - WorkflowUtils.setWfDefinitionConfigVo(taskList, processDefinitionIds, PROCESS_DEFINITION_ID); - } return TableDataInfo.build(page); } @@ -441,12 +445,16 @@ Page<TaskVo> page = actTaskMapper.getTaskFinishByPage(pageQuery.build(), queryWrapper); List<TaskVo> taskList = page.getRecords(); - for (TaskVo task : taskList) { - task.setBusinessStatusName(BusinessStatusEnum.findByStatus(task.getBusinessStatus())); - } if (CollUtil.isNotEmpty(taskList)) { List<String> processDefinitionIds = StreamUtils.toList(taskList, TaskVo::getProcessDefinitionId); - WorkflowUtils.setWfDefinitionConfigVo(taskList, processDefinitionIds, PROCESS_DEFINITION_ID); + List<WfNodeConfigVo> wfNodeConfigVoList = iWfNodeConfigService.selectByDefIds(processDefinitionIds); + for (TaskVo task : taskList) { + task.setBusinessStatusName(BusinessStatusEnum.findByStatus(task.getBusinessStatus())); + if (CollUtil.isNotEmpty(wfNodeConfigVoList)) { + wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(task.getProcessDefinitionId()) && FlowConstant.TRUE.equals(e.getApplyUserTask())).findFirst().ifPresent(task::setWfNodeConfigVo); + wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(task.getProcessDefinitionId()) && e.getNodeId().equals(task.getTaskDefinitionKey()) && FlowConstant.FALSE.equals(e.getApplyUserTask())).findFirst().ifPresent(task::setWfNodeConfigVo); + } + } } return TableDataInfo.build(page); } @@ -508,9 +516,9 @@ } taskService.addComment(task.getId(), task.getProcessInstanceId(), TaskStatusEnum.TERMINATION.getStatus(), terminationBo.getComment()); List<Task> list = QueryUtils.taskQuery(task.getProcessInstanceId()).list(); - if (CollectionUtil.isNotEmpty(list)) { + if (CollUtil.isNotEmpty(list)) { List<Task> subTasks = StreamUtils.filter(list, e -> StringUtils.isNotBlank(e.getParentTaskId())); - if (CollectionUtil.isNotEmpty(subTasks)) { + if (CollUtil.isNotEmpty(subTasks)) { subTasks.forEach(e -> taskService.deleteTask(e.getId())); } runtimeService.updateBusinessStatus(task.getProcessInstanceId(), BusinessStatusEnum.TERMINATION.getStatus()); @@ -759,7 +767,7 @@ public List<VariableVo> getInstanceVariable(String taskId) { List<VariableVo> variableVoList = new ArrayList<>(); Map<String, VariableInstance> variableInstances = taskService.getVariableInstances(taskId); - if (CollectionUtil.isNotEmpty(variableInstances)) { + if (CollUtil.isNotEmpty(variableInstances)) { for (Map.Entry<String, VariableInstance> entry : variableInstances.entrySet()) { VariableVo variableVo = new VariableVo(); variableVo.setKey(entry.getKey()); -- Gitblit v1.9.3