fix -- 优化流程任务方法,统一响应格式

This commit is contained in:
hewenqiang
2022-02-11 10:58:39 +08:00
parent 3022396404
commit e6bfd5bf0a
6 changed files with 64 additions and 68 deletions

View File

@@ -1,10 +1,17 @@
package com.ruoyi.workflow.service;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.workflow.domain.dto.FlowTaskDto;
import com.ruoyi.workflow.domain.vo.FlowTaskVo;
import com.ruoyi.workflow.domain.vo.FlowViewerVo;
import org.flowable.bpmn.model.UserTask;
import org.flowable.task.api.Task;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
/**
* @author XuanXuan
@@ -17,7 +24,7 @@ public interface IFlowTaskService {
*
* @param task 请求实体参数
*/
R complete(FlowTaskVo task);
void complete(FlowTaskVo task);
/**
* 驳回任务
@@ -40,7 +47,7 @@ public interface IFlowTaskService {
* @param flowTaskVo
* @return
*/
R findReturnTaskList(FlowTaskVo flowTaskVo);
List<UserTask> findReturnTaskList(FlowTaskVo flowTaskVo);
/**
* 删除任务
@@ -80,45 +87,40 @@ public interface IFlowTaskService {
/**
* 我发起的流程
* @param pageNum
* @param pageSize
*
* @return
*/
R myProcess(Integer pageNum, Integer pageSize);
TableDataInfo<FlowTaskDto> myProcess(PageQuery pageQuery);
/**
* 取消申请
* @param flowTaskVo
* @return
*/
R stopProcess(FlowTaskVo flowTaskVo);
void stopProcess(FlowTaskVo flowTaskVo);
/**
* 撤回流程
* @param flowTaskVo
* @return
*/
R revokeProcess(FlowTaskVo flowTaskVo);
void revokeProcess(FlowTaskVo flowTaskVo);
/**
* 代办任务列表
*
* @param pageNum 当前页码
* @param pageSize 每页条数
* @return
*/
R todoList(Integer pageNum, Integer pageSize);
TableDataInfo<FlowTaskDto> todoList(PageQuery pageQuery);
/**
* 已办任务列表
*
* @param pageNum 当前页码
* @param pageSize 每页条数
* @return
*/
R finishedList(Integer pageNum, Integer pageSize);
TableDataInfo<FlowTaskDto> finishedList(PageQuery pageQuery);
/**
* 流程历史流转记录
@@ -126,7 +128,7 @@ public interface IFlowTaskService {
* @param procInsId 流程实例Id
* @return
*/
R flowRecord(String procInsId, String deployId);
Map<String, Object> flowRecord(String procInsId, String deployId);
/**
* 根据任务ID查询挂载的表单信息
@@ -148,7 +150,7 @@ public interface IFlowTaskService {
* @param procInsId
* @return
*/
R getFlowViewer(String procInsId);
FlowViewerVo getFlowViewer(String procInsId);
/**
* 获取流程变量

View File

@@ -4,9 +4,12 @@ package com.ruoyi.workflow.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.JsonUtils;
import com.ruoyi.flowable.common.constant.ProcessConstants;
@@ -86,10 +89,10 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
*/
@Transactional(rollbackFor = Exception.class)
@Override
public R complete(FlowTaskVo taskVo) {
public void complete(FlowTaskVo taskVo) {
Task task = taskService.createTaskQuery().taskId(taskVo.getTaskId()).singleResult();
if (Objects.isNull(task)) {
return R.fail("任务不存在");
throw new ServiceException("任务不存在");
}
if (DelegationState.PENDING.equals(task.getDelegationState())) {
taskService.addComment(taskVo.getTaskId(), taskVo.getInstanceId(), FlowComment.DELEGATE.getType(), taskVo.getComment());
@@ -104,7 +107,6 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
taskService.complete(taskVo.getTaskId());
}
}
return R.ok();
}
/**
@@ -318,7 +320,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
* @return
*/
@Override
public R findReturnTaskList(FlowTaskVo flowTaskVo) {
public List<UserTask> findReturnTaskList(FlowTaskVo flowTaskVo) {
// 当前任务 task
Task task = taskService.createTaskQuery().taskId(flowTaskVo.getTaskId()).singleResult();
// 获取流程定义信息
@@ -349,7 +351,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
userTaskList.retainAll(road);
}
}
return R.ok(userTaskList);
return userTaskList;
}
/**
@@ -411,19 +413,18 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
/**
* 我发起的流程
*
* @param pageNum
* @param pageSize
* @return
*/
@Override
public R myProcess(Integer pageNum, Integer pageSize) {
public TableDataInfo<FlowTaskDto> myProcess(PageQuery pageQuery) {
Page<FlowTaskDto> page = new Page<>();
Long userId = LoginHelper.getUserId();
HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery()
.startedBy(userId.toString())
.orderByProcessInstanceStartTime()
.desc();
List<HistoricProcessInstance> historicProcessInstances = historicProcessInstanceQuery.listPage(pageNum - 1, pageSize);
List<HistoricProcessInstance> historicProcessInstances = historicProcessInstanceQuery
.listPage(pageQuery.getPageNum() - 1, pageQuery.getPageSize());
page.setTotal(historicProcessInstanceQuery.count());
List<FlowTaskDto> flowList = new ArrayList<>();
for (HistoricProcessInstance hisIns : historicProcessInstances) {
@@ -461,7 +462,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
flowList.add(flowTask);
}
page.setRecords(flowList);
return R.ok(page);
return TableDataInfo.build(page);
}
/**
@@ -471,7 +472,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
* @return
*/
@Override
public R stopProcess(FlowTaskVo flowTaskVo) {
public void stopProcess(FlowTaskVo flowTaskVo) {
List<Task> task = taskService.createTaskQuery().processInstanceId(flowTaskVo.getInstanceId()).list();
if (CollectionUtils.isEmpty(task)) {
throw new RuntimeException("流程未启动或已执行完成,取消申请失败");
@@ -496,8 +497,6 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
endId).changeState();
}
}
return R.ok();
}
/**
@@ -507,7 +506,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
* @return
*/
@Override
public R revokeProcess(FlowTaskVo flowTaskVo) {
public void revokeProcess(FlowTaskVo flowTaskVo) {
Task task = taskService.createTaskQuery().processInstanceId(flowTaskVo.getInstanceId()).singleResult();
if (task == null) {
throw new RuntimeException("流程未启动或已执行完成,无法撤回");
@@ -553,20 +552,15 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
//记录原活动方向
List<SequenceFlow> oriSequenceFlows = new ArrayList<>(flowNode.getOutgoingFlows());
return R.ok();
}
/**
* 代办任务列表
*
* @param pageNum 当前页码
* @param pageSize 每页条数
* @return
*/
@Override
public R todoList(Integer pageNum, Integer pageSize) {
public TableDataInfo<FlowTaskDto> todoList(PageQuery pageQuery) {
Page<FlowTaskDto> page = new Page<>();
Long userId = LoginHelper.getUserId();
TaskQuery taskQuery = taskService.createTaskQuery()
@@ -575,7 +569,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
.taskCandidateOrAssigned(userId.toString())
.orderByTaskCreateTime().desc();
page.setTotal(taskQuery.count());
List<Task> taskList = taskQuery.listPage(pageNum - 1, pageSize);
List<Task> taskList = taskQuery.listPage(pageQuery.getPageNum() - 1, pageQuery.getPageSize());
List<FlowTaskDto> flowList = new ArrayList<>();
for (Task task : taskList) {
FlowTaskDto flowTask = new FlowTaskDto();
@@ -607,19 +601,17 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
}
page.setRecords(flowList);
return R.ok(page);
return TableDataInfo.build(page);
}
/**
* 已办任务列表
*
* @param pageNum 当前页码
* @param pageSize 每页条数
* @return
*/
@Override
public R finishedList(Integer pageNum, Integer pageSize) {
public TableDataInfo<FlowTaskDto> finishedList(PageQuery pageQuery) {
Page<FlowTaskDto> page = new Page<>();
Long userId = LoginHelper.getUserId();
HistoricTaskInstanceQuery taskInstanceQuery = historyService.createHistoricTaskInstanceQuery()
@@ -628,7 +620,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
.taskAssignee(userId.toString())
.orderByHistoricTaskInstanceEndTime()
.desc();
List<HistoricTaskInstance> historicTaskInstanceList = taskInstanceQuery.listPage(pageNum - 1, pageSize);
List<HistoricTaskInstance> historicTaskInstanceList = taskInstanceQuery.listPage(pageQuery.getPageNum() - 1, pageQuery.getPageSize());
List<FlowTaskDto> hisTaskList = Lists.newArrayList();
for (HistoricTaskInstance histTask : historicTaskInstanceList) {
FlowTaskDto flowTask = new FlowTaskDto();
@@ -667,7 +659,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
// Map<String, Object> result = new HashMap<>();
// result.put("result",page);
// result.put("finished",true);
return R.ok(page);
return TableDataInfo.build(page);
}
private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
@@ -682,7 +674,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
* @return
*/
@Override
public R flowRecord(String procInsId, String deployId) {
public Map<String, Object> flowRecord(String procInsId, String deployId) {
Map<String, Object> map = new HashMap<>();
if (StringUtils.isNotBlank(procInsId)) {
List<HistoricActivityInstance> list = historyService
@@ -748,11 +740,11 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
if (StringUtils.isNotBlank(deployId)) {
SysForm sysForm = sysInstanceFormService.selectSysDeployFormByDeployId(deployId);
if (Objects.isNull(sysForm)) {
return R.fail("请先配置流程表单");
throw new ServiceException("请先配置流程表单");
}
map.put("formData", JsonUtils.parseObject(sysForm.getFormContent(), Map.class));
}
return R.ok(map);
return map;
}
/**
@@ -822,7 +814,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
* @return
*/
@Override
public R getFlowViewer(String procInsId) {
public FlowViewerVo getFlowViewer(String procInsId) {
// 构建查询条件
HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery()
.processInstanceId(procInsId);
@@ -835,7 +827,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
.stream().distinct().map(HistoricActivityInstance::getActivityId)
.collect(Collectors.toList());
// 构建视图类
return R.ok(new FlowViewerVo(finishedTaskList, unfinishedTaskList));
return new FlowViewerVo(finishedTaskList, unfinishedTaskList);
}
/**