camunda-任务历史(待办已办)
任务流经每个节点后生成的历史操作
- 待办
- 已办
TaskController
@RestController
public class TaskController {
@Autowired
private TaskService taskService;
@Autowired
private RuntimeService runtimeService;
@Autowired
private HistoryService historyService;
/**
* 已办(历史)
* @param query
* @return
*/
@PostMapping("/process/task/his/list")
public PageDto<TaskTodoDto> hisList(TaskHisPageQuery query) {
int offset = (query.getPageIndex() - 1) * query.getPageSize();
HistoricTaskInstanceQuery countHisQuery =
historyService.createHistoricTaskInstanceQuery().taskAssignee(query.getAssignee());
if (StringUtils.isNotBlank(query.getDefinitionId())){
countHisQuery.caseDefinitionId(query.getDefinitionId());
}
long count = countHisQuery.count();
PageDto<TaskTodoDto> page = new PageDto<>();
page.setTotal(count);
if (count == 0) {
return page;
}
HistoricTaskInstanceQuery historicTaskInstanceQuery = historyService.createHistoricTaskInstanceQuery().taskAssignee(query.getAssignee());
if (StringUtils.isNotBlank(query.getDefinitionId())){
historicTaskInstanceQuery.caseDefinitionId(query.getDefinitionId());
}
List<HistoricTaskInstance> histories = historicTaskInstanceQuery.listPage(query.getPageIndex(), offset);
List<TaskTodoDto> collect = histories.stream().map(t -> {
TaskTodoDto taskTodoDto = new TaskTodoDto();
taskTodoDto.setAssignee(t.getAssignee());
taskTodoDto.setCreateTime(t.getStartTime());
taskTodoDto.setDescription((String) runtimeService.getVariable(t.getExecutionId(), "title"));
taskTodoDto.setExecutionId(t.getExecutionId());
taskTodoDto.setProcessDefinitionId(t.getProcessDefinitionId());
taskTodoDto.setTaskId(t.getId());
taskTodoDto.setTaskName(t.getName());
taskTodoDto.setTaskDefinitionKey(t.getTaskDefinitionKey());
taskTodoDto.setProcessInstanceId(t.getProcessInstanceId());
return taskTodoDto;
}).collect(Collectors.toList());
page.setData(collect);
return page;
}
/**
* 待办任务
* @param query
* @return
*/
@PostMapping("/process/task/todo/list")
public PageDto<TaskTodoDto> hisList(TodoListPageQuery query) {
int offset = (query.getPageIndex() - 1) * query.getPageSize();
TaskQuery countTaskQuery = taskService.createTaskQuery().taskAssignee(query.getAssignee());
if (StringUtils.isNotBlank(query.getDefinitionId())){
countTaskQuery.caseDefinitionId(query.getDefinitionId());
}
long count = countTaskQuery.count();
PageDto<TaskTodoDto> page = new PageDto<>();
page.setTotal(count);
if (count == 0) {
return page;
}
TaskQuery taskQuery = taskService.createTaskQuery().taskAssignee(query.getAssignee());
if (StringUtils.isNotBlank(query.getDefinitionId())){
taskQuery.caseDefinitionId(query.getDefinitionId());
}
List<Task> tasks = taskQuery.listPage(query.getPageIndex(), offset);
List<TaskTodoDto> collect = tasks.stream().map(t -> {
TaskTodoDto taskTodoDto = new TaskTodoDto();
taskTodoDto.setAssignee(t.getAssignee());
taskTodoDto.setCreateTime(t.getCreateTime());
taskTodoDto.setDescription((String) runtimeService.getVariable(t.getExecutionId(), "title"));
taskTodoDto.setExecutionId(t.getExecutionId());
taskTodoDto.setProcessDefinitionId(t.getProcessDefinitionId());
taskTodoDto.setTaskId(t.getId());
taskTodoDto.setTaskName(t.getName());
taskTodoDto.setTaskDefinitionKey(t.getTaskDefinitionKey());
taskTodoDto.setProcessInstanceId(t.getProcessInstanceId());
return taskTodoDto;
}).collect(Collectors.toList());
page.setData(collect);
return page;
}
}
TaskHisPageQuery
@Data
public class TaskHisPageQuery extends BasePage {
/**
* 处理人
*/
private String assignee;
/**
* 流程Id
*/
private String definitionId;
}
TodoListPageQuery
@Data
public class TodoListPageQuery extends BasePage {
/**
* 处理人
*/
private String assignee;
/**
* 流程Id
*/
private String definitionId;
}
@Data
public class BasePage {
private Integer pageIndex;
private Integer pageSize;
}