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 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 43 insertions(+), 0 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 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