From e988deb64f96240ed853e45973a9181369345a55 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 14 二月 2025 16:11:44 +0800
Subject: [PATCH] 任务挂起、取消挂起
---
business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | 43 +++++++++++++++++++++++++++++++++++++++++++
business/src/main/java/com/ycl/controller/ProjectProcessController.java | 7 +++++++
business/src/main/java/com/ycl/service/ProjectProcessService.java | 8 ++++++++
3 files changed, 58 insertions(+), 0 deletions(-)
diff --git a/business/src/main/java/com/ycl/controller/ProjectProcessController.java b/business/src/main/java/com/ycl/controller/ProjectProcessController.java
index 19ed1b9..fa4096b 100644
--- a/business/src/main/java/com/ycl/controller/ProjectProcessController.java
+++ b/business/src/main/java/com/ycl/controller/ProjectProcessController.java
@@ -126,4 +126,11 @@
public Result taskHangup(@Validated @RequestBody TaskHangupForm form) {
return projectProcessService.taskHangup(form);
}
+
+ @PostMapping("/detail/task/hangup/cancel")
+ @ApiOperation(value = "鍙栨秷鎸傝捣浠诲姟", notes = "鍙栨秷鎸傝捣浠诲姟")
+// @PreAuthorize("@ss.hasPermi('projectProcess:detail')")
+ public Result cancelTaskHangup(@Validated @RequestBody TaskHangupForm form) {
+ return projectProcessService.cancelTaskHangup(form);
+ }
}
diff --git a/business/src/main/java/com/ycl/service/ProjectProcessService.java b/business/src/main/java/com/ycl/service/ProjectProcessService.java
index b01847d..d839669 100644
--- a/business/src/main/java/com/ycl/service/ProjectProcessService.java
+++ b/business/src/main/java/com/ycl/service/ProjectProcessService.java
@@ -120,4 +120,12 @@
* @return
*/
Result taskHangup(TaskHangupForm form);
+
+ /**
+ * 鍙栨秷鎸傝捣浠诲姟
+ *
+ * @param form
+ * @return
+ */
+ Result cancelTaskHangup(TaskHangupForm form);
}
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 c82b1a8..80385fa 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
@@ -40,6 +40,7 @@
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;
@@ -669,8 +670,21 @@
}
@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,
@@ -685,6 +699,35 @@
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("鎿嶄綔鎴愬姛");
+ }
+
/**
* 鏌ヨ寰呭姙浠诲姟
*
--
Gitblit v1.8.0