From 8c0f0d672caeb3f41e3ce87e853d0c33fbfe7d47 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期三, 12 二月 2025 17:47:45 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 business/src/main/java/com/ycl/domain/json/RejectData.java                      |   20 ++++++++++
 business/src/main/java/com/ycl/controller/FlowTaskController.java               |    1 
 business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java            |   52 ++++++++++++++++++++++---
 business/src/main/java/com/ycl/service/IFlowTaskService.java                    |    0 
 common/src/main/java/com/ycl/common/enums/business/ProcessLogEventTypeEnum.java |    1 
 5 files changed, 66 insertions(+), 8 deletions(-)

diff --git a/flowable/src/main/java/com/ycl/controller/FlowTaskController.java b/business/src/main/java/com/ycl/controller/FlowTaskController.java
similarity index 99%
rename from flowable/src/main/java/com/ycl/controller/FlowTaskController.java
rename to business/src/main/java/com/ycl/controller/FlowTaskController.java
index 2232c0f..9eca0d4 100644
--- a/flowable/src/main/java/com/ycl/controller/FlowTaskController.java
+++ b/business/src/main/java/com/ycl/controller/FlowTaskController.java
@@ -14,7 +14,6 @@
 import io.swagger.annotations.ApiParam;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.imageio.ImageIO;
diff --git a/business/src/main/java/com/ycl/domain/json/RejectData.java b/business/src/main/java/com/ycl/domain/json/RejectData.java
new file mode 100644
index 0000000..72acfe0
--- /dev/null
+++ b/business/src/main/java/com/ycl/domain/json/RejectData.java
@@ -0,0 +1,20 @@
+package com.ycl.domain.json;
+
+import lombok.Data;
+
+/**
+ * 椹冲洖鑷畾涔夋暟鎹�
+ *
+ * @author锛歺p
+ * @date锛�2025/2/12 17:35
+ */
+@Data
+public class RejectData {
+
+    /** 鍘熷洜/鎰忚 */
+    private String reason;
+
+    public RejectData(String reason) {
+        this.reason = reason;
+    }
+}
diff --git a/flowable/src/main/java/com/ycl/service/IFlowTaskService.java b/business/src/main/java/com/ycl/service/IFlowTaskService.java
similarity index 100%
rename from flowable/src/main/java/com/ycl/service/IFlowTaskService.java
rename to business/src/main/java/com/ycl/service/IFlowTaskService.java
diff --git a/flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java b/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
similarity index 96%
rename from flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
rename to business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
index e0ff79b..ca2edcc 100644
--- a/flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
@@ -5,6 +5,7 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.alibaba.fastjson2.TypeReference;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ycl.common.constant.ProcessConstants;
 import com.ycl.common.core.domain.AjaxResult;
@@ -13,6 +14,7 @@
 import com.ycl.common.core.domain.entity.SysRole;
 import com.ycl.common.core.domain.entity.SysUser;
 import com.ycl.common.enums.FlowComment;
+import com.ycl.common.enums.business.ProcessLogEventTypeEnum;
 import com.ycl.common.exception.CustomException;
 import com.ycl.common.utils.SecurityUtils;
 import com.ycl.domain.dto.FlowCommentDto;
@@ -20,21 +22,25 @@
 import com.ycl.domain.dto.FlowTaskDto;
 import com.ycl.domain.dto.FlowViewerDto;
 import com.ycl.domain.entity.ProcessCoding;
+import com.ycl.domain.entity.ProjectProcess;
 import com.ycl.domain.entity.SysForm;
+import com.ycl.domain.json.RejectData;
 import com.ycl.domain.vo.FlowQueryVo;
 import com.ycl.domain.vo.FlowTaskVo;
 import com.ycl.domain.vo.FormDetailVO;
+import com.ycl.event.event.TaskLogEvent;
 import com.ycl.factory.FlowServiceFactory;
 import com.ycl.flow.CustomProcessDiagramGenerator;
 import com.ycl.flow.FindNextNodeUtil;
 import com.ycl.flow.FlowableUtils;
 import com.ycl.mapper.ProcessCodingMapper;
-import com.ycl.service.ProcessLogService;
-import com.ycl.service.IFlowTaskService;
-import com.ycl.service.ISysDeployFormService;
-import com.ycl.service.ISysFormService;
+import com.ycl.mapper.ProjectProcessMapper;
+import com.ycl.service.*;
 import com.ycl.service.common.TaskCommonService;
-import com.ycl.system.service.*;
+import com.ycl.system.service.ISysDeptService;
+import com.ycl.system.service.ISysDictTypeService;
+import com.ycl.system.service.ISysRoleService;
+import com.ycl.system.service.ISysUserService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
@@ -61,6 +67,7 @@
 import org.flowable.task.api.TaskQuery;
 import org.flowable.task.api.history.HistoricTaskInstance;
 import org.flowable.task.api.history.HistoricTaskInstanceQuery;
+import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -94,6 +101,8 @@
     private final TaskCommonService taskCommonService;
     private final ProcessCodingMapper processCodingMapper;
     private final ProcessLogService processLogService;
+    private final ApplicationEventPublisher publisher;
+    private final ProjectProcessMapper projectProcessMapper;
 
     /**
      * 瀹屾垚瀹℃牳浠诲姟
@@ -133,7 +142,13 @@
         if (Objects.isNull(task)) {
             return AjaxResult.error("浠诲姟涓嶅瓨鍦�");
         }
-
+        ProjectProcess projectProcess = new LambdaQueryChainWrapper<>(projectProcessMapper)
+                .eq(ProjectProcess::getProcessInsId, task.getProcessInstanceId())
+                .eq(ProjectProcess::getProcessDefId, task.getProcessDefinitionId())
+                .one();
+        if (Objects.isNull(projectProcess)) {
+            return AjaxResult.error("椤圭洰娴佺▼鏈粦瀹�");
+        }
         Map<String, Object> processVariables = new HashMap<>();
         //鏌ュ嚭瀛楀吀涓渶瑕佹敞鍏ョ殑瀛楁淇℃伅
         List<String> dictList = sysDictDService.selectDictDataByType("flow_variables").stream().map(SysDictData::getDictValue).collect(Collectors.toList());
@@ -157,6 +172,14 @@
             taskService.claim(taskId, SecurityUtils.getUserId() + "");
             taskService.complete(taskId, newV);
         }
+        // 淇濆瓨鏃ュ織
+        publisher.publishEvent(new TaskLogEvent(this, null,
+                SecurityUtils.getUserId(),
+                projectProcess.getProjectId(),
+                projectProcess.getProcessInsId(),
+                taskId,
+                ProcessLogEventTypeEnum.FINISHED,
+                null));
         return AjaxResult.success("鎻愪氦鎴愬姛");
     }
 
@@ -166,6 +189,7 @@
      * @param flowTaskVo
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void taskReject(FlowTaskVo flowTaskVo) {
         if (taskService.createTaskQuery().taskId(flowTaskVo.getTaskId()).singleResult().isSuspended()) {
             throw new CustomException("浠诲姟澶勪簬鎸傝捣鐘舵��!");
@@ -281,7 +305,21 @@
         } catch (FlowableException e) {
             throw new CustomException("鏃犳硶鍙栨秷鎴栧紑濮嬫椿鍔�");
         }
-
+        ProjectProcess projectProcess = new LambdaQueryChainWrapper<>(projectProcessMapper)
+                .eq(ProjectProcess::getProcessInsId, task.getProcessInstanceId())
+                .eq(ProjectProcess::getProcessDefId, task.getProcessDefinitionId())
+                .one();
+        if (Objects.isNull(projectProcess)) {
+            throw new CustomException("椤圭洰娴佺▼鏈粦瀹�");
+        }
+        // 淇濆瓨鏃ュ織
+        publisher.publishEvent(new TaskLogEvent(this, null,
+                SecurityUtils.getUserId(),
+                projectProcess.getProjectId(),
+                projectProcess.getProcessInsId(),
+                flowTaskVo.getTaskId(),
+                ProcessLogEventTypeEnum.REJECT,
+                new RejectData(flowTaskVo.getComment())));
     }
 
     /**
diff --git a/common/src/main/java/com/ycl/common/enums/business/ProcessLogEventTypeEnum.java b/common/src/main/java/com/ycl/common/enums/business/ProcessLogEventTypeEnum.java
index 05b7a08..c481324 100644
--- a/common/src/main/java/com/ycl/common/enums/business/ProcessLogEventTypeEnum.java
+++ b/common/src/main/java/com/ycl/common/enums/business/ProcessLogEventTypeEnum.java
@@ -15,6 +15,7 @@
 
     DELEGATE("DELEGATE", "杞姙"),
     FINISHED("FINISHED", "瀹屾垚"),
+    REJECT("REJECT", "椹冲洖"),
     TEAM_WORK("TEAM_WORK", "鍗忓悓鍔炵悊"),
     JUMP("JUMP", "璺宠繃"),
     SUPERVISE("SUPERVISE", "鐫e姙"),

--
Gitblit v1.8.0