| | |
| | | import com.ycl.system.service.ISysDeptService; |
| | | import com.ycl.system.service.ISysRoleService; |
| | | import com.ycl.system.service.ISysUserService; |
| | | import lombok.Synchronized; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.flowable.bpmn.model.*; |
| | | import org.flowable.bpmn.model.Process; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 检查是否挂起 |
| | | if (processLogService.taskIsHangup(task.getId(), task.getProcessInstanceId())) { |
| | | taskVO.setTaskStatus(TaskStatusEnum.HANGUP); |
| | | } |
| | | this.distinctVo(taskVO); |
| | | vos.add(taskVO); |
| | | } |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Synchronized |
| | | public Result taskHangup(TaskHangupForm form) { |
| | | Task task = taskService.createTaskQuery().taskId(form.getTaskId()).singleResult(); |
| | | if (Objects.isNull(task)) { |
| | | throw new RuntimeException("任务不存在"); |
| | | } |
| | | List<ProcessLog> logs = new LambdaQueryChainWrapper<>(processLogService.getBaseMapper()) |
| | | .eq(ProcessLog::getTaskId, form.getTaskId()) |
| | | .eq(ProcessLog::getProcessInsId, form.getProcessInsId()) |
| | | .eq(ProcessLog::getProjectId, form.getProjectId()) |
| | | .in(ProcessLog::getEventType, ProcessLogEventTypeEnum.HANGUP, ProcessLogEventTypeEnum.CANCEL_HANGUP) |
| | | .list(); |
| | | if (logs.size() % 2 != 0) { |
| | | throw new RuntimeException("该任务正在挂起中,不能再次挂起"); |
| | | } |
| | | // 任务挂起只需要存日志,查询待办时如果有这个日志记录,则禁用提交按钮,以此实现任务挂起 |
| | | publisher.publishEvent(new TaskLogEvent(this, |
| | | null, |
| | |
| | | ProcessLogEventTypeEnum.HANGUP, |
| | | new HangupData(form.getReason()) |
| | | )); |
| | | return Result.ok("操作成功"); |
| | | } |
| | | |
| | | @Override |
| | | @Synchronized |
| | | public Result cancelTaskHangup(TaskHangupForm form) { |
| | | Task task = taskService.createTaskQuery().taskId(form.getTaskId()).singleResult(); |
| | | if (Objects.isNull(task)) { |
| | | throw new RuntimeException("任务不存在"); |
| | | } |
| | | List<ProcessLog> logs = new LambdaQueryChainWrapper<>(processLogService.getBaseMapper()) |
| | | .eq(ProcessLog::getTaskId, form.getTaskId()) |
| | | .eq(ProcessLog::getProcessInsId, form.getProcessInsId()) |
| | | .eq(ProcessLog::getProjectId, form.getProjectId()) |
| | | .in(ProcessLog::getEventType, ProcessLogEventTypeEnum.HANGUP, ProcessLogEventTypeEnum.CANCEL_HANGUP) |
| | | .list(); |
| | | if (logs.size() % 2 == 0) { |
| | | throw new RuntimeException("该任务未被挂起,不能取消挂起"); |
| | | } |
| | | publisher.publishEvent(new TaskLogEvent(this, |
| | | null, |
| | | SecurityUtils.getUserId(), |
| | | form.getProjectId(), |
| | | form.getProcessInsId(), |
| | | form.getTaskId(), |
| | | task.getName(), |
| | | ProcessLogEventTypeEnum.CANCEL_HANGUP, |
| | | new HangupData(form.getReason()) |
| | | )); |
| | | return Result.ok("操作成功"); |
| | | } |
| | | |
| | |
| | | for (Task task : taskList) { |
| | | CustomerTaskVO taskVO = new CustomerTaskVO(); |
| | | this.setRuntimeTaskInfo(task, taskVO, projectId); |
| | | // 检查是否挂起 |
| | | if (processLogService.taskIsHangup(task.getId(), task.getProcessInstanceId())) { |
| | | taskVO.setTaskStatus(TaskStatusEnum.HANGUP); |
| | | } |
| | | vos.add(taskVO); |
| | | } |
| | | result.put("taskList", vos); |