From 973caddffafba85e75a84c09d77e3ea53c27903f Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 12 二月 2025 22:29:09 +0800
Subject: [PATCH] flowable模块中的流程日志移动到business模块,新增流程推进日志接口
---
flowable/src/main/java/com/ycl/mapper/ProcessLogMapper.java | 9 ++++
business/src/main/java/com/ycl/event/listener/ProcessLogEventListener.java | 2 -
flowable/src/main/java/com/ycl/domain/vo/ProcessLogVO.java | 9 ++++
flowable/src/main/resources/mapper/ProcessLogMapper.xml | 26 ++++++++++++
business/src/main/java/com/ycl/service/ProcessLogService.java | 13 +++++-
business/src/main/java/com/ycl/controller/FlowLogController.java | 6 +++
flowable/src/main/java/com/ycl/domain/query/ProcessLogQuery.java | 11 +++++
business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java | 41 +++++++++++++++++---
8 files changed, 104 insertions(+), 13 deletions(-)
diff --git a/flowable/src/main/java/com/ycl/controller/FlowLogController.java b/business/src/main/java/com/ycl/controller/FlowLogController.java
similarity index 78%
rename from flowable/src/main/java/com/ycl/controller/FlowLogController.java
rename to business/src/main/java/com/ycl/controller/FlowLogController.java
index 74cebf8..d88902f 100644
--- a/flowable/src/main/java/com/ycl/controller/FlowLogController.java
+++ b/business/src/main/java/com/ycl/controller/FlowLogController.java
@@ -35,4 +35,10 @@
return processLogService.page(query);
}
+ @GetMapping("/project-process/log")
+ @ApiOperation(value = "娴佺▼鎺ㄨ繘鏃ュ織", notes = "娴佺▼鎺ㄨ繘鏃ュ織")
+// @PreAuthorize("@ss.hasPermi('flowLog:page')")
+ public Result projectProcessLogPage(ProcessLogQuery query) {
+ return processLogService.projectProcessLogPage(query);
+ }
}
diff --git a/business/src/main/java/com/ycl/event/listener/ProcessLogEventListener.java b/business/src/main/java/com/ycl/event/listener/ProcessLogEventListener.java
index fdf577e..6ea4c6b 100644
--- a/business/src/main/java/com/ycl/event/listener/ProcessLogEventListener.java
+++ b/business/src/main/java/com/ycl/event/listener/ProcessLogEventListener.java
@@ -1,11 +1,9 @@
package com.ycl.event.listener;
import com.alibaba.fastjson2.JSON;
-import com.ycl.common.enums.business.ProcessLogEventTypeEnum;
import com.ycl.common.utils.SecurityUtils;
import com.ycl.domain.entity.ProcessLog;
import com.ycl.event.event.TaskLogEvent;
-import com.ycl.service.ProcessLogService;
import lombok.RequiredArgsConstructor;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
diff --git a/flowable/src/main/java/com/ycl/service/ProcessLogService.java b/business/src/main/java/com/ycl/service/ProcessLogService.java
similarity index 90%
rename from flowable/src/main/java/com/ycl/service/ProcessLogService.java
rename to business/src/main/java/com/ycl/service/ProcessLogService.java
index 442b0fa..319bb4f 100644
--- a/flowable/src/main/java/com/ycl/service/ProcessLogService.java
+++ b/business/src/main/java/com/ycl/service/ProcessLogService.java
@@ -1,10 +1,11 @@
package com.ycl.service;
-import com.ycl.common.enums.business.ProcessLogEventTypeEnum;
-import com.ycl.domain.entity.ProcessLog;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ycl.common.base.Result;
+import com.ycl.common.enums.business.ProcessLogEventTypeEnum;
+import com.ycl.domain.entity.ProcessLog;
import com.ycl.domain.query.ProcessLogQuery;
+
import java.util.List;
/**
@@ -67,4 +68,12 @@
* @return
*/
Boolean taskDelegation(String processInstanceId, String taskId);
+
+ /**
+ * 娴佺▼鎺ㄨ繘鏃ュ織
+ *
+ * @param query
+ * @return
+ */
+ Result projectProcessLogPage(ProcessLogQuery query);
}
diff --git a/flowable/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java
similarity index 72%
rename from flowable/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java
rename to business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java
index c9dbe97..7037772 100644
--- a/flowable/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java
@@ -1,19 +1,25 @@
package com.ycl.service.impl;
+import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ycl.common.base.Result;
import com.ycl.common.enums.business.ProcessLogEventTypeEnum;
import com.ycl.domain.entity.ProcessLog;
+import com.ycl.domain.json.DelegateData;
+import com.ycl.domain.json.JumpData;
+import com.ycl.domain.json.RejectData;
+import com.ycl.domain.json.SuperviseData;
+import com.ycl.domain.query.ProcessLogQuery;
+import com.ycl.domain.vo.ProcessLogVO;
+import com.ycl.framework.utils.PageUtil;
import com.ycl.mapper.ProcessLogMapper;
import com.ycl.service.ProcessLogService;
-import com.ycl.common.base.Result;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ycl.domain.vo.ProcessLogVO;
-import com.ycl.domain.query.ProcessLogQuery;
-import org.apache.commons.collections4.CollectionUtils;
-import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
-import com.ycl.framework.utils.PageUtil;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import java.util.List;
@@ -118,4 +124,25 @@
.list();
return CollectionUtils.isNotEmpty(list);
}
+
+
+ @Override
+ public Result projectProcessLogPage(ProcessLogQuery query) {
+ List<ProcessLogVO> list = baseMapper.projectProcessLogPage(query);
+ // json鍙嶅簭鍒楀寲
+ list.stream().forEach(log -> {
+ if (StringUtils.isNotBlank(log.getEventDataJson())) {
+ if (ProcessLogEventTypeEnum.DELEGATE.equals(log.getEventType())) {
+ log.setEventDataObj(JSON.parseObject(log.getEventDataJson(), DelegateData.class));
+ } else if (ProcessLogEventTypeEnum.JUMP.equals(log.getEventType())) {
+ log.setEventDataObj(JSON.parseObject(log.getEventDataJson(), JumpData.class));
+ } else if (ProcessLogEventTypeEnum.REJECT.equals(log.getEventType())) {
+ log.setEventDataObj(JSON.parseObject(log.getEventDataJson(), RejectData.class));
+ } else if (ProcessLogEventTypeEnum.SUPERVISE.equals(log.getEventType())) {
+ log.setEventDataObj(JSON.parseObject(log.getEventDataJson(), SuperviseData.class));
+ }
+ }
+ });
+ return Result.ok().data(list);
+ }
}
diff --git a/flowable/src/main/java/com/ycl/domain/query/ProcessLogQuery.java b/flowable/src/main/java/com/ycl/domain/query/ProcessLogQuery.java
index 12efd3d..a6c19a4 100644
--- a/flowable/src/main/java/com/ycl/domain/query/ProcessLogQuery.java
+++ b/flowable/src/main/java/com/ycl/domain/query/ProcessLogQuery.java
@@ -18,5 +18,16 @@
@Data
@ApiModel(value = "FlowLog鏌ヨ鍙傛暟", description = "娴佺▼鏃ュ織鏌ヨ鍙傛暟")
public class ProcessLogQuery extends AbsQuery {
+
+ /**
+ * 椤圭洰id
+ */
+ private Long projectId;
+
+ /**
+ * 娴佺▼瀹炰緥id
+ */
+ private String processInsId;
+
}
diff --git a/flowable/src/main/java/com/ycl/domain/vo/ProcessLogVO.java b/flowable/src/main/java/com/ycl/domain/vo/ProcessLogVO.java
index af7ee57..1cab38f 100644
--- a/flowable/src/main/java/com/ycl/domain/vo/ProcessLogVO.java
+++ b/flowable/src/main/java/com/ycl/domain/vo/ProcessLogVO.java
@@ -1,5 +1,6 @@
package com.ycl.domain.vo;
+import com.ycl.common.enums.business.ProcessLogEventTypeEnum;
import com.ycl.system.domain.base.AbsVo;
import com.ycl.domain.entity.ProcessLog;
import org.springframework.lang.NonNull;
@@ -24,7 +25,7 @@
/** 浜嬩欢鏃ュ織绫诲瀷 */
@ApiModelProperty("浜嬩欢鏃ュ織绫诲瀷")
- private String eventType;
+ private ProcessLogEventTypeEnum eventType;
/** 椤圭洰id */
@ApiModelProperty("椤圭洰id")
@@ -38,10 +39,16 @@
@ApiModelProperty("浜х敓鏃ュ織鐨勪汉/鎴栧叾瀹�")
private Long userId;
+ @ApiModelProperty("鐢ㄦ埛鍚�")
+ private String nickName;
+
/** 浜嬩欢鏁版嵁锛屾牴鎹笉鍚岀殑浜嬩欢鍙瓨鍌ㄥ搴旂殑鎵╁睍鏁版嵁銆傚杞姙浜嬩欢鍙瓨鍌ㄨ浆鍔炲墠鍚庣殑澶勭悊浜轰俊鎭� */
@ApiModelProperty("浜嬩欢鏁版嵁锛屾牴鎹笉鍚岀殑浜嬩欢鍙瓨鍌ㄥ搴旂殑鎵╁睍鏁版嵁銆傚杞姙浜嬩欢鍙瓨鍌ㄨ浆鍔炲墠鍚庣殑澶勭悊浜轰俊鎭�")
private String eventDataJson;
+ @ApiModelProperty("json杞崲鍚庣殑瀵硅薄")
+ private Object eventDataObj;
+
public static ProcessLogVO getVoByEntity(@NonNull ProcessLog entity, ProcessLogVO vo) {
if(vo == null) {
vo = new ProcessLogVO();
diff --git a/flowable/src/main/java/com/ycl/mapper/ProcessLogMapper.java b/flowable/src/main/java/com/ycl/mapper/ProcessLogMapper.java
index 1852b82..607ed43 100644
--- a/flowable/src/main/java/com/ycl/mapper/ProcessLogMapper.java
+++ b/flowable/src/main/java/com/ycl/mapper/ProcessLogMapper.java
@@ -8,6 +8,8 @@
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
+import java.util.List;
+
/**
* 娴佺▼鏃ュ織 Mapper 鎺ュ彛
*
@@ -29,4 +31,11 @@
*/
IPage getPage(IPage page, @Param("query") ProcessLogQuery query);
+ /**
+ * 鑾峰彇娴佺▼鎺ㄨ繘鏃ュ織
+ *
+ * @param query
+ * @return
+ */
+ List<ProcessLogVO> projectProcessLogPage(@Param("query") ProcessLogQuery query);
}
diff --git a/flowable/src/main/resources/mapper/ProcessLogMapper.xml b/flowable/src/main/resources/mapper/ProcessLogMapper.xml
index a377afe..cea40f0 100644
--- a/flowable/src/main/resources/mapper/ProcessLogMapper.xml
+++ b/flowable/src/main/resources/mapper/ProcessLogMapper.xml
@@ -5,10 +5,12 @@
<!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
<resultMap id="BaseResultMap" type="com.ycl.domain.vo.ProcessLogVO">
<result column="task_id" property="taskId" />
- <result column="event_type" property="eventType" />
+ <result column="event_type" property="eventType" typeHandler="com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler"/>
<result column="project_id" property="projectId" />
<result column="flow_ins_id" property="flowInsId" />
<result column="user_id" property="userId" />
+ <result column="nick_name" property="nickName" />
+ <result column="gmt_create" property="gmtCreate" />
<result column="event_data_json" property="eventDataJson" />
</resultMap>
@@ -42,6 +44,7 @@
TFL.flow_ins_id,
TFL.user_id,
TFL.event_data_json,
+ TFL.gmt_create,
TFL.id
FROM
t_process_log TFL
@@ -49,4 +52,25 @@
TFL.deleted = 0
</select>
+
+ <select id="projectProcessLogPage" resultMap="BaseResultMap">
+ SELECT
+ TFL.task_id,
+ TFL.event_type,
+ TFL.project_id,
+ TFL.flow_ins_id,
+ TFL.user_id,
+ SU.nick_name,
+ TFL.event_data_json,
+ TFL.gmt_create,
+ TFL.id
+ FROM
+ t_process_log TFL
+ LEFT JOIN sys_user SU ON SU.user_id = TFL.user_id
+ WHERE
+ TFL.deleted = 0 AND TFL.project_id = #{query.projectId} AND TFL.process_ins_id = #{query.processInsId}
+ ORDER BY
+ TFL.gmt_create DESC
+ </select>
+
</mapper>
--
Gitblit v1.8.0