调整流程预览

This commit is contained in:
songgaoshuai 2023-06-14 18:47:52 +08:00
parent fd22331be1
commit b07b60fe60
4 changed files with 73 additions and 7 deletions

View File

@ -7,13 +7,12 @@ import org.dromara.common.core.domain.R;
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.ActHistoryInfoVo;
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.*;
import java.util.List;
import java.util.Map;
/**
* 流程实例管理 控制层
@ -65,7 +64,7 @@ public class ActProcessInstanceController extends BaseController {
* @param processInstanceId 流程实例id
*/
@GetMapping("/getHistoryRecord/{processInstanceId}")
public R<List<ActHistoryInfoVo>> getHistoryRecord(@NotBlank(message = "流程实例id不能为空") @PathVariable String processInstanceId) {
public R<Map<String, Object>> getHistoryRecord(@NotBlank(message = "流程实例id不能为空") @PathVariable String processInstanceId) {
return R.ok(iActProcessInstanceService.getHistoryRecord(processInstanceId));
}
}

View File

@ -0,0 +1,47 @@
package org.dromara.workflow.domain.vo;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 节点图形信息
*
* @author may
*/
@Data
public class GraphicInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* x坐标
*/
private double x;
/**
* y坐标
*/
private double y;
/**
* 节点高度
*/
private double height;
/**
* 节点宽度
*/
private double width;
/**
* 节点id
*/
private String nodeId;
/**
* 节点名称
*/
private String nodeName;
}

View File

@ -7,6 +7,7 @@ import org.dromara.workflow.domain.vo.ActHistoryInfoVo;
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
import java.util.List;
import java.util.Map;
/**
* 流程实例 服务层
@ -44,5 +45,5 @@ public interface IActProcessInstanceService {
* @param processInstanceId 流程实例id
* @return 结果
*/
List<ActHistoryInfoVo> getHistoryRecord(String processInstanceId);
Map<String, Object> getHistoryRecord(String processInstanceId);
}

View File

@ -16,10 +16,11 @@ import org.dromara.system.service.ISysUserService;
import org.dromara.workflow.common.constant.FlowConstant;
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
import org.dromara.workflow.domain.vo.ActHistoryInfoVo;
import org.dromara.workflow.domain.vo.GraphicInfoVo;
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;
import org.flowable.bpmn.model.*;
import org.flowable.engine.HistoryService;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.RuntimeService;
@ -27,6 +28,7 @@ import org.flowable.engine.TaskService;
import org.flowable.engine.history.HistoricActivityInstance;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.history.HistoricProcessInstanceQuery;
import org.flowable.engine.impl.util.ProcessDefinitionUtil;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.engine.runtime.ProcessInstanceQuery;
import org.flowable.engine.task.Comment;
@ -210,7 +212,8 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
* @param processInstanceId 流程实例id
*/
@Override
public List<ActHistoryInfoVo> getHistoryRecord(String processInstanceId) {
public Map<String, Object> getHistoryRecord(String processInstanceId) {
Map<String, Object> map = new HashMap<>();
//查询任务办理记录
List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(processInstanceId).taskTenantId(TenantHelper.getTenantId()).orderByHistoricTaskInstanceEndTime().desc().list();
@ -247,7 +250,23 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
List<ActHistoryInfoVo> finishTask = StreamUtils.filter(actHistoryInfoVoList, e -> e.getEndTime() != null);
collect.addAll(waitingTask);
collect.addAll(finishTask);
return collect;
//审批记录
map.put("historyRecordList", collect);
BpmnModel bpmnModel = repositoryService.getBpmnModel(list.get(0).getProcessDefinitionId());
List<GraphicInfoVo> graphicInfoVos = new ArrayList<>();
Collection<FlowElement> flowElements = bpmnModel.getMainProcess().getFlowElements();
for (FlowElement flowElement : flowElements) {
if (flowElement instanceof UserTask) {
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowElement.getId());
GraphicInfoVo graphicInfoVo = BeanUtil.toBean(graphicInfo, GraphicInfoVo.class);
graphicInfoVo.setNodeId(flowElement.getId());
graphicInfoVo.setNodeName(flowElement.getName());
graphicInfoVos.add(graphicInfoVo);
}
}
//节点图形信息
map.put("graphicInfoVos", graphicInfoVos);
return map;
}
/**