| | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.dromara.common.core.domain.dto.StartProcessReturnDTO; |
| | | import org.dromara.common.core.domain.dto.UserDTO; |
| | | import org.dromara.common.core.enums.BusinessStatusEnum; |
| | | import org.dromara.common.core.exception.ServiceException; |
| | |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Map<String, Object> startWorkFlow(StartProcessBo startProcessBo) { |
| | | public StartProcessReturnDTO startWorkFlow(StartProcessBo startProcessBo) { |
| | | String businessId = startProcessBo.getBusinessId(); |
| | | if (StringUtils.isBlank(businessId)) { |
| | | throw new ServiceException("启动工作流时必须包含业务ID"); |
| | |
| | | if (ObjectUtil.isNotNull(flowInstance)) { |
| | | BusinessStatusEnum.checkStartStatus(flowInstance.getFlowStatus()); |
| | | List<Task> taskList = taskService.list(new FlowTask().setInstanceId(flowInstance.getId())); |
| | | return Map.of(PROCESS_INSTANCE_ID, taskList.get(0).getInstanceId(), TASK_ID, taskList.get(0).getId()); |
| | | StartProcessReturnDTO dto = new StartProcessReturnDTO(); |
| | | dto.setProcessInstanceId(taskList.get(0).getInstanceId()); |
| | | dto.setTaskId(taskList.get(0).getId()); |
| | | return dto; |
| | | } |
| | | FlowParams flowParams = new FlowParams(); |
| | | flowParams.flowCode(startProcessBo.getFlowCode()); |
| | |
| | | if (taskList.size() > 1) { |
| | | throw new ServiceException("请检查流程第一个环节是否为申请人!"); |
| | | } |
| | | return Map.of(PROCESS_INSTANCE_ID, instance.getId(), TASK_ID, taskList.get(0).getId()); |
| | | StartProcessReturnDTO dto = new StartProcessReturnDTO(); |
| | | dto.setProcessInstanceId(instance.getId()); |
| | | dto.setTaskId(taskList.get(0).getId()); |
| | | return dto; |
| | | } |
| | | |
| | | /** |
| | |
| | | Definition definition = defService.getById(flowTask.getDefinitionId()); |
| | | // 检查流程状态是否为草稿、已撤销或已退回状态,若是则执行流程提交监听 |
| | | if (BusinessStatusEnum.isDraftOrCancelOrBack(ins.getFlowStatus())) { |
| | | flowProcessEventHandler.processHandler(definition.getFlowCode(), ins.getBusinessId(), ins.getFlowStatus(), true); |
| | | flowProcessEventHandler.processHandler(definition.getFlowCode(), ins.getBusinessId(), ins.getFlowStatus(), null, true); |
| | | } |
| | | // 构建流程参数,包括变量、跳转类型、消息、处理人、权限等信息 |
| | | FlowParams flowParams = new FlowParams(); |
| | |
| | | flowParams.skipType(SkipType.REJECT.getKey()); |
| | | flowParams.flowStatus(applyNodeCode.equals(bo.getNodeCode()) ? TaskStatusEnum.BACK.getStatus() : TaskStatusEnum.WAITING.getStatus()) |
| | | .hisStatus(TaskStatusEnum.BACK.getStatus()); |
| | | flowParams.hisTaskExt(bo.getFileId()); |
| | | taskService.skip(task.getId(), flowParams); |
| | | |
| | | Instance instance = insService.getById(inst.getId()); |