From 12f73bafbe361f78d68a35de83ca3b3b4d4e0224 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期五, 14 二月 2025 16:27:43 +0800 Subject: [PATCH] 查询待办任务时,判断是否挂起状态 --- business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | 82 +++++++++++++++++++++++++++++++++++++---- 1 files changed, 74 insertions(+), 8 deletions(-) diff --git a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java index c85f46e..6ac5ced 100644 --- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java +++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java @@ -20,10 +20,9 @@ import com.ycl.common.utils.SecurityUtils; import com.ycl.constant.TaskTypeConstant; import com.ycl.domain.entity.*; -import com.ycl.domain.form.TaskDelegationForm; -import com.ycl.domain.form.TaskJumpForm; -import com.ycl.domain.form.TaskSuperviseForm; +import com.ycl.domain.form.*; import com.ycl.domain.json.DelegateData; +import com.ycl.domain.json.HangupData; import com.ycl.domain.json.JumpData; import com.ycl.domain.json.SuperviseData; import com.ycl.domain.vo.CustomerTaskVO; @@ -35,13 +34,13 @@ import com.ycl.service.*; import com.ycl.common.base.Result; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ycl.domain.form.ProjectProcessForm; import com.ycl.domain.vo.ProjectProcessVO; import com.ycl.domain.query.ProjectProcessQuery; import com.ycl.service.common.TaskCommonService; 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; @@ -410,7 +409,10 @@ } } } - + // 妫�鏌ユ槸鍚︽寕璧� + if (processLogService.taskIsHangup(task.getId(), task.getProcessInstanceId())) { + taskVO.setTaskStatus(TaskStatusEnum.HANGUP); + } this.distinctVo(taskVO); vos.add(taskVO); } @@ -611,7 +613,7 @@ jsonData.setAfterHandlerIds(afterHandlerIds); jsonData.setAfterHandlerType(form.getPeopleType()); // 鍙戝竷杞姙浜嬩欢 - publisher.publishEvent(new TaskLogEvent(this, null,SecurityUtils.getUserId(), form.getProjectId(), form.getProcessInsId(), task.getId(), ProcessLogEventTypeEnum.DELEGATE, jsonData)); + publisher.publishEvent(new TaskLogEvent(this, null,SecurityUtils.getUserId(), form.getProjectId(), form.getProcessInsId(), task.getId(), task.getName(),ProcessLogEventTypeEnum.DELEGATE, jsonData)); return Result.ok("杞姙鎴愬姛"); } @@ -622,7 +624,7 @@ Task task = taskService.createTaskQuery().taskId(form.getTaskId()).processInstanceId(form.getProcessInsId()).singleResult(); if (Objects.nonNull(task)) { // 娣诲姞璺宠繃鏃ュ織 - publisher.publishEvent(new TaskLogEvent(this, null,SecurityUtils.getUserId(), form.getProjectId(), form.getProcessInsId(), form.getTaskId(), ProcessLogEventTypeEnum.JUMP, new JumpData(form.getDesc()))); + publisher.publishEvent(new TaskLogEvent(this, null,SecurityUtils.getUserId(), form.getProjectId(), form.getProcessInsId(), form.getTaskId(), task.getName(),ProcessLogEventTypeEnum.JUMP, new JumpData(form.getDesc()))); // 鏌ュ嚭璇ヤ换鍔$粦瀹氱殑琛ㄥ崟 Map<String, Object> data = new HashMap<>(1); @@ -640,6 +642,7 @@ @Override public Result taskSupervise(TaskSuperviseForm form) { + Task task = taskService.createTaskQuery().taskId(form.getTaskId()).singleResult(); SuperviseData jsonData = new SuperviseData(); jsonData.setCreateTime(new Date()); jsonData.setContent(form.getContent()); @@ -665,7 +668,66 @@ } dataList.add(jsonData); //娣诲姞鐫e姙鏃ュ織 - publisher.publishEvent(new TaskLogEvent(this, processLog.getId(), processLog.getUserId(), form.getProjectId(), form.getProcessInsId(), form.getTaskId(), ProcessLogEventTypeEnum.SUPERVISE, dataList)); + publisher.publishEvent(new TaskLogEvent(this, processLog.getId(), processLog.getUserId(), form.getProjectId(), form.getProcessInsId(), form.getTaskId(), task.getName(),ProcessLogEventTypeEnum.SUPERVISE, dataList)); + return Result.ok("鎿嶄綔鎴愬姛"); + } + + @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, + SecurityUtils.getUserId(), + form.getProjectId(), + form.getProcessInsId(), + form.getTaskId(), + task.getName(), + 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("鎿嶄綔鎴愬姛"); } @@ -696,6 +758,10 @@ 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); -- Gitblit v1.8.0