| | |
| | | import org.dromara.warm.flow.orm.entity.*; |
| | | import org.dromara.warm.flow.orm.mapper.FlowHisTaskMapper; |
| | | import org.dromara.warm.flow.orm.mapper.FlowInstanceMapper; |
| | | import org.dromara.warm.flow.orm.mapper.FlowNodeMapper; |
| | | import org.dromara.warm.flow.orm.mapper.FlowTaskMapper; |
| | | import org.dromara.workflow.common.ConditionalOnEnable; |
| | | import org.dromara.workflow.common.enums.TaskAssigneeType; |
| | | import org.dromara.workflow.common.enums.TaskStatusEnum; |
| | | import org.dromara.workflow.domain.bo.*; |
| | |
| | | * |
| | | * @author may |
| | | */ |
| | | @ConditionalOnEnable |
| | | @Slf4j |
| | | @RequiredArgsConstructor |
| | | @Service |
| | |
| | | |
| | | private final TaskService taskService; |
| | | private final InsService insService; |
| | | private final FlowInstanceMapper flowInstanceMapper; |
| | | private final FlwTaskMapper flwTaskMapper; |
| | | private final UserService userService; |
| | | private final FlowTaskMapper flowTaskMapper; |
| | | private final FlowHisTaskMapper flowHisTaskMapper; |
| | | private final FlowProcessEventHandler flowProcessEventHandler; |
| | | private final DefService defService; |
| | | private final HisTaskService hisTaskService; |
| | | private final IdentifierGenerator identifierGenerator; |
| | | private final NodeService nodeService; |
| | | private final FlowNodeMapper flowNodeMapper; |
| | | private final FlowInstanceMapper flowInstanceMapper; |
| | | private final FlowTaskMapper flowTaskMapper; |
| | | private final FlowHisTaskMapper flowHisTaskMapper; |
| | | private final IdentifierGenerator identifierGenerator; |
| | | private final FlowProcessEventHandler flowProcessEventHandler; |
| | | private final UserService userService; |
| | | private final FlwTaskMapper flwTaskMapper; |
| | | private final FlwCategoryMapper flwCategoryMapper; |
| | | |
| | | /** |
| | |
| | | // 获取抄送人 |
| | | List<FlowCopyBo> flowCopyList = completeTaskBo.getFlowCopyList(); |
| | | FlowTask flowTask = flowTaskMapper.selectById(taskId); |
| | | if (ObjectUtil.isNull(flowTask)) { |
| | | throw new ServiceException("流程任务不存在或任务已审批!"); |
| | | } |
| | | Instance ins = insService.getById(flowTask.getInstanceId()); |
| | | // 获取流程定义信息 |
| | | Definition definition = defService.getById(flowTask.getDefinitionId()); |
| | |
| | | this.setCopy(task, flowCopyList); |
| | | // 根据流程实例ID查询所有关联的任务 |
| | | List<FlowTask> flowTasks = this.selectByInstId(instance.getId()); |
| | | if (CollUtil.isEmpty(flowTasks)) { |
| | | return; |
| | | } |
| | | List<Long> taskIdList = StreamUtils.toList(flowTasks, FlowTask::getId); |
| | | // 获取与当前任务关联的用户列表 |
| | | List<User> associatedUsers = WorkflowUtils.getFlowUserService().getByAssociateds(taskIdList); |
| | | if (CollUtil.isEmpty(associatedUsers)) { |
| | | return; |
| | | } |
| | | List<User> userList = new ArrayList<>(); |
| | | // 遍历任务列表,处理每个任务的办理人 |
| | | for (FlowTask flowTask : flowTasks) { |
| | | // 获取与当前任务关联的用户列表 |
| | | List<User> associatedUsers = WorkflowUtils.getFlowUserService().getByAssociateds(Collections.singletonList(flowTask.getId())); |
| | | if (CollUtil.isNotEmpty(associatedUsers)) { |
| | | userList.addAll(WorkflowUtils.buildUser(associatedUsers, flowTask.getId())); |
| | | List<User> users = StreamUtils.filter(associatedUsers, user -> Objects.equals(user.getAssociated(), flowTask.getId())); |
| | | if (CollUtil.isNotEmpty(users)) { |
| | | userList.addAll(WorkflowUtils.buildUser(users, flowTask.getId())); |
| | | } |
| | | } |
| | | // 批量删除现有任务的办理人记录 |
| | | if (CollUtil.isNotEmpty(flowTasks)) { |
| | | WorkflowUtils.getFlowUserService().deleteByTaskIds(StreamUtils.toList(flowTasks, FlowTask::getId)); |
| | | } |
| | | WorkflowUtils.getFlowUserService().deleteByTaskIds(taskIdList); |
| | | // 确保要保存的 userList 不为空 |
| | | if (CollUtil.isNotEmpty(userList)) { |
| | | WorkflowUtils.getFlowUserService().saveBatch(userList); |
| | | if (CollUtil.isEmpty(userList)) { |
| | | return; |
| | | } |
| | | WorkflowUtils.getFlowUserService().saveBatch(userList); |
| | | } |
| | | |
| | | /** |