From 96a893bcc673085f7d6fe3bc5ca7dc34e7ca1db2 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 12 二月 2025 17:44:25 +0800
Subject: [PATCH] flowable模块中的FlowTaskService及controller移动到business模块,完成任务和驳回任务添加日志

---
 business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java |   52 +++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 45 insertions(+), 7 deletions(-)

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())));
     }
 
     /**

--
Gitblit v1.8.0