business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
flowable/src/main/java/com/ycl/domain/query/ProcessLogQuery.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
flowable/src/main/java/com/ycl/domain/vo/DoFormDetailVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
flowable/src/main/resources/mapper/ProcessLogMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
@@ -7,6 +7,7 @@ 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.base.Result; import com.ycl.common.constant.ProcessConstants; import com.ycl.common.core.domain.AjaxResult; import com.ycl.common.core.domain.entity.SysDept; @@ -27,10 +28,8 @@ import com.ycl.domain.entity.ProjectProcess; import com.ycl.domain.entity.SysForm; import com.ycl.domain.json.RejectData; import com.ycl.domain.vo.DoFormDetailVO; import com.ycl.domain.vo.FlowQueryVo; import com.ycl.domain.vo.FlowTaskVo; import com.ycl.domain.vo.FormDetailVO; import com.ycl.domain.query.ProcessLogQuery; import com.ycl.domain.vo.*; import com.ycl.event.event.TaskLogEvent; import com.ycl.factory.FlowServiceFactory; import com.ycl.flow.CustomProcessDiagramGenerator; @@ -1304,11 +1303,11 @@ } } // 判断任务是否存在特殊操作(如跳过、转办等),需要在前端展示出来 List<ProcessLog> logList = new LambdaQueryChainWrapper<>(processLogService.getBaseMapper()) .eq(ProcessLog::getTaskDefKey, node.getBeforeNodeDefId()) .eq(ProcessLog::getProcessInsId, finalProcessInsId) .orderByDesc(ProcessLog::getGmtCreate) .list(); ProcessLogQuery query = new ProcessLogQuery(); query.setTaskId(taskId); query.setProcessInsId(finalProcessInsId); Result result = processLogService.projectProcessLogPage(query); List<ProcessLogVO> logList = (List<ProcessLogVO>) result.get("data"); DoFormDetailVO vo = new DoFormDetailVO(); BeanUtils.copyProperties(node, vo); if (CollectionUtils.isNotEmpty(logList)) { @@ -1375,11 +1374,11 @@ } } // 判断任务是否存在特殊操作(如跳过、转办等),需要在前端展示出来 List<ProcessLog> logList = new LambdaQueryChainWrapper<>(processLogService.getBaseMapper()) .eq(ProcessLog::getTaskId, hisTask.getId()) .eq(ProcessLog::getProcessInsId, hisTask.getProcessInstanceId()) .orderByDesc(ProcessLog::getGmtCreate) .list(); ProcessLogQuery query = new ProcessLogQuery(); query.setTaskId(hisTask.getId()); query.setProcessInsId(hisTask.getProcessInstanceId()); Result result = processLogService.projectProcessLogPage(query); List<ProcessLogVO> logList = (List<ProcessLogVO>) result.get("data"); DoFormDetailVO vo = new DoFormDetailVO(); BeanUtils.copyProperties(node, vo); if (CollectionUtils.isNotEmpty(logList)) { @@ -1427,11 +1426,11 @@ } } // 判断任务是否存在特殊操作(如跳过、转办等),需要在前端展示出来 List<ProcessLog> logList = new LambdaQueryChainWrapper<>(processLogService.getBaseMapper()) .eq(ProcessLog::getTaskId, task.getId()) .eq(ProcessLog::getProcessInsId, task.getProcessInstanceId()) .orderByDesc(ProcessLog::getGmtCreate) .list(); ProcessLogQuery query = new ProcessLogQuery(); query.setTaskId(task.getId()); query.setProcessInsId(task.getProcessInstanceId()); Result result = processLogService.projectProcessLogPage(query); List<ProcessLogVO> logList = (List<ProcessLogVO>) result.get("data"); DoFormDetailVO vo = new DoFormDetailVO(); BeanUtils.copyProperties(node, vo); if (CollectionUtils.isNotEmpty(logList)) { business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
@@ -1128,25 +1128,27 @@ .orderByHistoricTaskInstanceStartTime() .desc() .list(); vo.setTaskStatus(TaskStatusEnum.FINISHED); // 如果是已完成的,信息需要单独赋值 vo.setTaskId(hisTaskList.get(0).getId()); vo.setExecutionId(hisTaskList.get(0).getExecutionId()); vo.setCreateTime(hisTaskList.get(0).getStartTime()); // 查询实际处理人 long handlerUserId = Long.parseLong(hisTaskList.get(0).getAssignee()); SysUser handlerUser = sysUserService.selectUserById(handlerUserId); if (Objects.nonNull(handlerUser)) { vo.setActualHandlerUserId(hisTaskList.get(0).getAssignee()); vo.setActualHandlerUserName(handlerUser.getNickName()); // 如果未找到历史任务,说明这个任务可能处于某个互斥网关下,实际并未执行 if (CollectionUtils.isEmpty(hisTaskList)) { vo.setTaskStatus(TaskStatusEnum.NOT_START); } else { vo.setTaskStatus(TaskStatusEnum.FINISHED); // 如果是已完成的,信息需要单独赋值 vo.setTaskId(hisTaskList.get(0).getId()); vo.setExecutionId(hisTaskList.get(0).getExecutionId()); vo.setCreateTime(hisTaskList.get(0).getStartTime()); // 查询实际处理人 long handlerUserId = Long.parseLong(hisTaskList.get(0).getAssignee()); SysUser handlerUser = sysUserService.selectUserById(handlerUserId); if (Objects.nonNull(handlerUser)) { vo.setActualHandlerUserId(hisTaskList.get(0).getAssignee()); vo.setActualHandlerUserName(handlerUser.getNickName()); } vo.setTaskDefinitionKey(hisTaskList.get(0).getTaskDefinitionKey()); this.setPromoterAndHandler(vo, hisTaskList.get(0).getIdentityLinks()); } vo.setTaskDefinitionKey(hisTaskList.get(0).getTaskDefinitionKey()); this.setPromoterAndHandler(vo, hisTaskList.get(0).getIdentityLinks()); return vo; }).collect(Collectors.toList()); }).filter(Objects::nonNull).collect(Collectors.toList()); return vos; } flowable/src/main/java/com/ycl/domain/query/ProcessLogQuery.java
@@ -25,6 +25,11 @@ private String projectId; /** * 任务id */ private String taskId; /** * 流程实例id */ private String processInsId; flowable/src/main/java/com/ycl/domain/vo/DoFormDetailVO.java
@@ -20,7 +20,7 @@ public class DoFormDetailVO extends FormDetailVO { @ApiModelProperty("任务事件") private List<ProcessLog> events = new ArrayList<>(); private List<ProcessLogVO> events = new ArrayList<>(); } flowable/src/main/resources/mapper/ProcessLogMapper.xml
@@ -73,7 +73,9 @@ LEFT JOIN sys_user SU ON SU.user_id = TFL.user_id LEFT JOIN sys_dept SD ON SU.dept_id = SD.dept_id WHERE TFL.deleted = 0 AND TFL.project_id = #{query.projectId} AND TFL.process_ins_id = #{query.processInsId} TFL.deleted = 0 AND TFL.process_ins_id = #{query.processInsId} <if test="query.taskId != null and query.taskId != ''">AND TFL.task_id = #{query.taskId}</if> <if test="query.projectId != null and query.projectId != ''">AND TFL.project_id = #{query.projectId}</if> ORDER BY TFL.gmt_create DESC </select>