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,6 +1,8 @@
package com.ruoyi.web.controller.workflow; package com.ruoyi.web.controller.workflow;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R; 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.dto.FlowTaskDto;
import com.ruoyi.workflow.domain.vo.FlowTaskVo; import com.ruoyi.workflow.domain.vo.FlowTaskVo;
import com.ruoyi.workflow.service.IFlowTaskService; import com.ruoyi.workflow.service.IFlowTaskService;
@@ -35,42 +37,41 @@ public class FlowTaskController {
@ApiOperation(value = "我发起的流程", response = FlowTaskDto.class) @ApiOperation(value = "我发起的流程", response = FlowTaskDto.class)
@GetMapping(value = "/myProcess") @GetMapping(value = "/myProcess")
public R myProcess(@ApiParam(value = "当前页码", required = true) @RequestParam Integer pageNum, public TableDataInfo<FlowTaskDto> myProcess(PageQuery pageQuery) {
@ApiParam(value = "每页条数", required = true) @RequestParam Integer pageSize) { return flowTaskService.myProcess(pageQuery);
return flowTaskService.myProcess(pageNum, pageSize);
} }
@ApiOperation(value = "取消申请", response = FlowTaskDto.class) @ApiOperation(value = "取消申请", response = FlowTaskDto.class)
@PostMapping(value = "/stopProcess") @PostMapping(value = "/stopProcess")
public R stopProcess(@RequestBody FlowTaskVo flowTaskVo) { public R stopProcess(@RequestBody FlowTaskVo flowTaskVo) {
return flowTaskService.stopProcess(flowTaskVo); flowTaskService.stopProcess(flowTaskVo);
return R.ok();
} }
@ApiOperation(value = "撤回流程", response = FlowTaskDto.class) @ApiOperation(value = "撤回流程", response = FlowTaskDto.class)
@PostMapping(value = "/revokeProcess") @PostMapping(value = "/revokeProcess")
public R revokeProcess(@RequestBody FlowTaskVo flowTaskVo) { public R revokeProcess(@RequestBody FlowTaskVo flowTaskVo) {
return flowTaskService.revokeProcess(flowTaskVo); flowTaskService.revokeProcess(flowTaskVo);
return R.ok();
} }
@ApiOperation(value = "获取待办列表", response = FlowTaskDto.class) @ApiOperation(value = "获取待办列表", response = FlowTaskDto.class)
@GetMapping(value = "/todoList") @GetMapping(value = "/todoList")
public R todoList(@ApiParam(value = "当前页码", required = true) @RequestParam Integer pageNum, public TableDataInfo<FlowTaskDto> todoList(PageQuery pageQuery) {
@ApiParam(value = "每页条数", required = true) @RequestParam Integer pageSize) { return flowTaskService.todoList(pageQuery);
return flowTaskService.todoList(pageNum, pageSize);
} }
@ApiOperation(value = "获取已办任务", response = FlowTaskDto.class) @ApiOperation(value = "获取已办任务", response = FlowTaskDto.class)
@GetMapping(value = "/finishedList") @GetMapping(value = "/finishedList")
public R finishedList(@ApiParam(value = "当前页码", required = true) @RequestParam Integer pageNum, public TableDataInfo<FlowTaskDto> finishedList(PageQuery pageQuery) {
@ApiParam(value = "每页条数", required = true) @RequestParam Integer pageSize) { return flowTaskService.finishedList(pageQuery);
return flowTaskService.finishedList(pageNum, pageSize);
} }
@ApiOperation(value = "流程历史流转记录", response = FlowTaskDto.class) @ApiOperation(value = "流程历史流转记录", response = FlowTaskDto.class)
@GetMapping(value = "/flowRecord") @GetMapping(value = "/flowRecord")
public R flowRecord(String procInsId, String deployId) { public R flowRecord(String procInsId, String deployId) {
return flowTaskService.flowRecord(procInsId,deployId); return R.ok(flowTaskService.flowRecord(procInsId, deployId));
} }
@ApiOperation(value = "获取流程变量", response = FlowTaskDto.class) @ApiOperation(value = "获取流程变量", response = FlowTaskDto.class)
@@ -82,7 +83,8 @@ public class FlowTaskController {
@ApiOperation(value = "审批任务") @ApiOperation(value = "审批任务")
@PostMapping(value = "/complete") @PostMapping(value = "/complete")
public R complete(@RequestBody FlowTaskVo flowTaskVo) { public R complete(@RequestBody FlowTaskVo flowTaskVo) {
return flowTaskService.complete(flowTaskVo); flowTaskService.complete(flowTaskVo);
return R.ok();
} }
@@ -103,7 +105,7 @@ public class FlowTaskController {
@ApiOperation(value = "获取所有可回退的节点") @ApiOperation(value = "获取所有可回退的节点")
@PostMapping(value = "/returnList") @PostMapping(value = "/returnList")
public R findReturnTaskList(@RequestBody FlowTaskVo flowTaskVo) { public R findReturnTaskList(@RequestBody FlowTaskVo flowTaskVo) {
return flowTaskService.findReturnTaskList(flowTaskVo); return R.ok(flowTaskService.findReturnTaskList(flowTaskVo));
} }
@ApiOperation(value = "删除任务") @ApiOperation(value = "删除任务")
@@ -186,6 +188,6 @@ public class FlowTaskController {
*/ */
@RequestMapping("/flowViewer/{procInsId}") @RequestMapping("/flowViewer/{procInsId}")
public R getFlowViewer(@PathVariable("procInsId") String procInsId) { public R getFlowViewer(@PathVariable("procInsId") String procInsId) {
return flowTaskService.getFlowViewer(procInsId); return R.ok(flowTaskService.getFlowViewer(procInsId));
} }
} }

View File

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

View File

@@ -138,8 +138,8 @@ export default {
getList() { getList() {
this.loading = true; this.loading = true;
finishedList(this.queryParams).then(response => { finishedList(this.queryParams).then(response => {
this.finishedList = response.data.records; this.finishedList = response.rows;
this.total = response.data.total; this.total = response.total;
this.loading = false; this.loading = false;
}); });
}, },

View File

@@ -215,8 +215,8 @@ export default {
getList() { getList() {
this.loading = true; this.loading = true;
myProcessList(this.queryParams).then(response => { myProcessList(this.queryParams).then(response => {
this.myProcessList = response.data.records; this.myProcessList = response.rows;
this.total = response.data.total; this.total = response.total;
this.loading = false; this.loading = false;
}); });
}, },

View File

@@ -135,8 +135,8 @@ export default {
getList() { getList() {
this.loading = true; this.loading = true;
todoList(this.queryParams).then(response => { todoList(this.queryParams).then(response => {
this.todoList = response.data.records; this.todoList = response.rows;
this.total = response.data.total; this.total = response.total;
this.loading = false; this.loading = false;
}); });
}, },