mirror of
https://github.com/dromara/RuoYi-Vue-Plus.git
synced 2025-09-30 15:16:41 +08:00
add 添加流程实例运行中,已结束分页查询
This commit is contained in:
parent
fa3e9f82bd
commit
11643253a0
@ -3,7 +3,10 @@ package org.dromara.workflow.controller;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
|
||||
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
|
||||
import org.dromara.workflow.service.IActProcessInstanceService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@ -21,6 +24,26 @@ public class ActProcessInstanceController extends BaseController {
|
||||
|
||||
private final IActProcessInstanceService iActProcessInstanceService;
|
||||
|
||||
/**
|
||||
* 分页查询正在运行的流程实例
|
||||
*
|
||||
* @param processInstanceBo 参数
|
||||
*/
|
||||
@GetMapping("/getProcessInstanceRunningByPage")
|
||||
public TableDataInfo<ProcessInstanceVo> getProcessInstanceRunningByPage(ProcessInstanceBo processInstanceBo) {
|
||||
return iActProcessInstanceService.getProcessInstanceRunningByPage(processInstanceBo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询已结束的流程实例
|
||||
*
|
||||
* @param processInstanceBo 参数
|
||||
*/
|
||||
@GetMapping("/getProcessInstanceFinishByPage")
|
||||
public TableDataInfo<ProcessInstanceVo> getProcessInstanceFinishByPage(ProcessInstanceBo processInstanceBo) {
|
||||
return iActProcessInstanceService.getProcessInstanceFinishByPage(processInstanceBo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过流程实例id获取历史流程图
|
||||
*
|
||||
@ -28,8 +51,7 @@ public class ActProcessInstanceController extends BaseController {
|
||||
* @param response 响应
|
||||
*/
|
||||
@GetMapping("/getHistoryProcessImage/{processInstanceId}")
|
||||
public void getHistoryProcessImage(@NotBlank(message = "流程实例id不能为空") @PathVariable String processInstanceId,
|
||||
HttpServletResponse response) {
|
||||
public void getHistoryProcessImage(@NotBlank(message = "流程实例id不能为空") @PathVariable String processInstanceId, HttpServletResponse response) {
|
||||
iActProcessInstanceService.getHistoryProcessImage(processInstanceId, response);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,36 @@
|
||||
package org.dromara.workflow.domain.bo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.workflow.common.PageEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 流程实例请求对象
|
||||
*
|
||||
* @author may
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class ProcessInstanceBo extends PageEntity implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 流程名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 任务发起人
|
||||
*/
|
||||
private String startUserId;
|
||||
|
||||
/**
|
||||
* 业务id
|
||||
*/
|
||||
private String businessKey;
|
||||
}
|
@ -0,0 +1,79 @@
|
||||
package org.dromara.workflow.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 流程实例视图
|
||||
*
|
||||
* @author may
|
||||
*/
|
||||
@Data
|
||||
public class ProcessInstanceVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 流程实例id
|
||||
*/
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 流程定义id
|
||||
*/
|
||||
private String processDefinitionId;
|
||||
|
||||
/**
|
||||
* 流程定义名称
|
||||
*/
|
||||
private String processDefinitionName;
|
||||
|
||||
/**
|
||||
* 流程定义key
|
||||
*/
|
||||
private String processDefinitionKey;
|
||||
|
||||
/**
|
||||
* 流程定义版本
|
||||
*/
|
||||
private String processDefinitionVersion;
|
||||
|
||||
/**
|
||||
* 部署id
|
||||
*/
|
||||
private String deploymentId;
|
||||
|
||||
/**
|
||||
* 业务id
|
||||
*/
|
||||
private String businessKey;
|
||||
|
||||
/**
|
||||
* 是否挂起
|
||||
*/
|
||||
private boolean isSuspended;
|
||||
|
||||
/**
|
||||
* 租户id
|
||||
*/
|
||||
private String tenantId;
|
||||
|
||||
/**
|
||||
* 启动时间
|
||||
*/
|
||||
private Date startTime;
|
||||
|
||||
/**
|
||||
* 结束时间
|
||||
*/
|
||||
private Date endTime;
|
||||
|
||||
/**
|
||||
* 启动人id
|
||||
*/
|
||||
private String startUserId;
|
||||
}
|
@ -1,6 +1,9 @@
|
||||
package org.dromara.workflow.service;
|
||||
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
|
||||
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
|
||||
|
||||
/**
|
||||
* 流程实例 服务层
|
||||
@ -15,4 +18,20 @@ public interface IActProcessInstanceService {
|
||||
* @param response 响应
|
||||
*/
|
||||
void getHistoryProcessImage(String processInstanceId, HttpServletResponse response);
|
||||
|
||||
/**
|
||||
* 分页查询正在运行的流程实例
|
||||
*
|
||||
* @param processInstanceBo 参数
|
||||
* @return 结果
|
||||
*/
|
||||
TableDataInfo<ProcessInstanceVo> getProcessInstanceRunningByPage(ProcessInstanceBo processInstanceBo);
|
||||
|
||||
/**
|
||||
* 分页查询已结束的流程实例
|
||||
*
|
||||
* @param processInstanceBo 参数
|
||||
* @return 结果
|
||||
*/
|
||||
TableDataInfo<ProcessInstanceVo> getProcessInstanceFinishByPage(ProcessInstanceBo processInstanceBo);
|
||||
}
|
||||
|
@ -1,10 +1,16 @@
|
||||
package org.dromara.workflow.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import jakarta.servlet.ServletOutputStream;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.tenant.helper.TenantHelper;
|
||||
import org.dromara.workflow.common.constant.FlowConstant;
|
||||
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
|
||||
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
|
||||
import org.dromara.workflow.flowable.CustomDefaultProcessDiagramGenerator;
|
||||
import org.dromara.workflow.service.IActProcessInstanceService;
|
||||
import org.flowable.bpmn.model.BpmnModel;
|
||||
@ -13,7 +19,9 @@ import org.flowable.engine.RepositoryService;
|
||||
import org.flowable.engine.RuntimeService;
|
||||
import org.flowable.engine.history.HistoricActivityInstance;
|
||||
import org.flowable.engine.history.HistoricProcessInstance;
|
||||
import org.flowable.engine.history.HistoricProcessInstanceQuery;
|
||||
import org.flowable.engine.runtime.ProcessInstance;
|
||||
import org.flowable.engine.runtime.ProcessInstanceQuery;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@ -23,7 +31,6 @@ import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 流程实例 服务层实现
|
||||
@ -48,6 +55,61 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
|
||||
@Value("${flowable.annotation-font-name}")
|
||||
private String annotationFontName;
|
||||
|
||||
/**
|
||||
* 分页查询正在运行的流程实例
|
||||
*
|
||||
* @param processInstanceBo 参数
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<ProcessInstanceVo> getProcessInstanceRunningByPage(ProcessInstanceBo processInstanceBo) {
|
||||
List<ProcessInstanceVo> list = new ArrayList<>();
|
||||
ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery();
|
||||
query.processInstanceTenantId(TenantHelper.getTenantId());
|
||||
if (StringUtils.isNotBlank(processInstanceBo.getName())) {
|
||||
query.processInstanceNameLikeIgnoreCase("%" + processInstanceBo.getName() + "%");
|
||||
}
|
||||
if (StringUtils.isNotBlank(processInstanceBo.getStartUserId())) {
|
||||
query.startedBy(processInstanceBo.getStartUserId());
|
||||
}
|
||||
if (StringUtils.isNotBlank(processInstanceBo.getBusinessKey())) {
|
||||
query.processInstanceBusinessKey(processInstanceBo.getBusinessKey());
|
||||
}
|
||||
List<ProcessInstance> processInstances = query.listPage(processInstanceBo.getPageNum(), processInstanceBo.getPageSize());
|
||||
for (ProcessInstance processInstance : processInstances) {
|
||||
list.add(BeanUtil.toBean(processInstance, ProcessInstanceVo.class));
|
||||
}
|
||||
long count = query.count();
|
||||
return new TableDataInfo<>(list, count);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询已结束的流程实例
|
||||
*
|
||||
* @param processInstanceBo 参数
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<ProcessInstanceVo> getProcessInstanceFinishByPage(ProcessInstanceBo processInstanceBo) {
|
||||
List<ProcessInstanceVo> list = new ArrayList<>();
|
||||
HistoricProcessInstanceQuery query = historyService.createHistoricProcessInstanceQuery().finished()
|
||||
.orderByProcessInstanceEndTime().desc();
|
||||
query.processInstanceTenantId(TenantHelper.getTenantId());
|
||||
if (StringUtils.isNotEmpty(processInstanceBo.getName())) {
|
||||
query.processInstanceNameLike(processInstanceBo.getName());
|
||||
}
|
||||
if (StringUtils.isNotEmpty(processInstanceBo.getStartUserId())) {
|
||||
query.startedBy(processInstanceBo.getStartUserId());
|
||||
}
|
||||
if (StringUtils.isNotBlank(processInstanceBo.getBusinessKey())) {
|
||||
query.processInstanceBusinessKey(processInstanceBo.getBusinessKey());
|
||||
}
|
||||
List<HistoricProcessInstance> historicProcessInstances = query.listPage(processInstanceBo.getPageNum(), processInstanceBo.getPageSize());
|
||||
for (HistoricProcessInstance historicProcessInstance : historicProcessInstances) {
|
||||
list.add(BeanUtil.toBean(historicProcessInstance, ProcessInstanceVo.class));
|
||||
}
|
||||
long count = query.count();
|
||||
return new TableDataInfo<>(list, count);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过流程实例id获取历史流程图
|
||||
*
|
||||
@ -98,7 +160,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
|
||||
}
|
||||
List<String> highLightedNodeList = new ArrayList<>();
|
||||
//运行中的节点
|
||||
List<String> redNodeCollect = highLightedNodes.stream().filter(e -> e.contains(Color.RED.toString())).collect(Collectors.toList());
|
||||
List<String> redNodeCollect = highLightedNodes.stream().filter(e -> e.contains(Color.RED.toString())).toList();
|
||||
//排除与运行中相同的节点
|
||||
for (String nodeId : highLightedNodes) {
|
||||
if (!nodeId.contains(Color.RED.toString()) && !redNodeCollect.contains(Color.RED + nodeId)) {
|
||||
|
Loading…
Reference in New Issue
Block a user