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/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