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