From 04273fdcccf78bb7abaea5cdbb01f8aa678f42e4 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期五, 14 二月 2025 16:45:05 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
common/src/main/java/com/ycl/common/enums/business/TaskStatusEnum.java | 3 +
business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | 52 +++++++++++++++++++++++++
business/src/main/java/com/ycl/controller/ProjectProcessController.java | 7 +++
business/src/main/java/com/ycl/service/ProjectProcessService.java | 8 ++++
business/src/main/java/com/ycl/service/ProcessLogService.java | 9 ++++
business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java | 9 ++++
6 files changed, 86 insertions(+), 2 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/ProcessLogService.java b/business/src/main/java/com/ycl/service/ProcessLogService.java
index 319bb4f..923854c 100644
--- a/business/src/main/java/com/ycl/service/ProcessLogService.java
+++ b/business/src/main/java/com/ycl/service/ProcessLogService.java
@@ -70,6 +70,15 @@
Boolean taskDelegation(String processInstanceId, String taskId);
/**
+ * 妫�鏌ヤ换鍔℃槸鍚︽寕璧�
+ *
+ * @param taskId 浠诲姟id
+ * @param processInsId 娴佺▼瀹炰緥id
+ * @return true 鎸傝捣鐨� false娌℃寕璧�
+ */
+ Boolean taskIsHangup(String taskId, String processInsId);
+
+ /**
* 娴佺▼鎺ㄨ繘鏃ュ織
*
* @param query
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/ProcessLogServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java
index 2d31b69..7997fbd 100644
--- a/business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java
@@ -137,6 +137,15 @@
return CollectionUtils.isNotEmpty(list);
}
+ @Override
+ public Boolean taskIsHangup(String taskId, String processInsId) {
+ Long num = new LambdaQueryChainWrapper<>(baseMapper)
+ .eq(ProcessLog::getProcessInsId, processInsId)
+ .eq(ProcessLog::getTaskId, taskId)
+ .in(ProcessLog::getEventType, ProcessLogEventTypeEnum.HANGUP, ProcessLogEventTypeEnum.CANCEL_HANGUP)
+ .count();
+ return num % 2 != 0;
+ }
@Override
public Result projectProcessLogPage(ProcessLogQuery query) {
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..6ac5ced 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;
@@ -408,7 +409,10 @@
}
}
}
-
+ // 妫�鏌ユ槸鍚︽寕璧�
+ if (processLogService.taskIsHangup(task.getId(), task.getProcessInstanceId())) {
+ taskVO.setTaskStatus(TaskStatusEnum.HANGUP);
+ }
this.distinctVo(taskVO);
vos.add(taskVO);
}
@@ -669,8 +673,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,
@@ -682,6 +699,35 @@
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("鎿嶄綔鎴愬姛");
}
@@ -712,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);
diff --git a/common/src/main/java/com/ycl/common/enums/business/TaskStatusEnum.java b/common/src/main/java/com/ycl/common/enums/business/TaskStatusEnum.java
index a942187..4502b0c 100644
--- a/common/src/main/java/com/ycl/common/enums/business/TaskStatusEnum.java
+++ b/common/src/main/java/com/ycl/common/enums/business/TaskStatusEnum.java
@@ -14,7 +14,8 @@
NOT_START("not_start", "鏈紑濮�"),
TODO("todo", "寰呭姙"),
- FINISHED("finished", "宸插畬鎴�")
+ FINISHED("finished", "宸插畬鎴�"),
+ HANGUP("HANGUP", "鎸傝捣"),
;
private final String value;
--
Gitblit v1.8.0