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