aiciviti查询已办列表
查询已办要用到 HistoryService historyService.createHistoricTaskInstanceQuery()
代码
//添加查询条件 ,创建一个实体类接收前台传来的值
public class SearchTodoTaskVo {
private String processCategory;
private String processDefinitionKey;
private String processDefinitionName;
private Date startDueDate;
private Date endDueDate;
private String taskName;
}
//Controller层接收参数,调用service层方法
@GetMapping("/done/list")
public Map donelist( @RequestParam Integer num,@RequestParam String processDefinitionName ,@RequestParam String taskName ,
@RequestParam Integer size,@RequestParam String startDueDate,@RequestParam String endDueDate) throws Exception{
SearchTodoTaskVo searchTodoTaskVo = new SearchTodoTaskVo();
String processDefinitionNameLike="";
String taskNameLike="";
//模糊查询字符串前后一定要加 %%
if(StringUtils.isNotEmpty(processDefinitionName)) {
StringBuffer buf=new StringBuffer();
buf.append("%");
buf.append(processDefinitionName);
buf.append("%");
processDefinitionNameLike=buf.toString();
}
if(StringUtils.isNotEmpty(taskName)) {
StringBuffer buf1=new StringBuffer();
buf1.append("%");
buf1.append(taskName);
buf1.append("%");
taskNameLike=buf1.toString();
}
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
//查询摸个时间是否在时间区间
if(!StringUtils.isEmpty(startDueDate)) {
Date startDueDate1 = formatter.parse(startDueDate);
searchTodoTaskVo.setStartDueDate(startDueDate1);
}
if(!StringUtils.isEmpty(endDueDate)) {
Date endDueDate1 = formatter.parse(endDueDate);
Calendar calendar = Calendar.getInstance(); //得到日历
calendar.setTime(endDueDate1);//把当前时间赋给日历
calendar.add(Calendar.DAY_OF_MONTH, +1); //设置为后一天
String day2 = formatter.format(calendar.getTime());
endDueDate1=formatter.parse(day2);
searchTodoTaskVo.setEndDueDate(endDueDate1);
}
searchTodoTaskVo.setProcessDefinitionName(processDefinitionNameLike);
searchTodoTaskVo.setTaskName(taskNameLike);
return **taskExtService.getTaskDoneQuery**(num,size,searchTodoTaskVo);
}
public Map<String,Object> getTaskDoneQuery(int pageNo, int pageSize, SearchTodoTaskVo searchTodoTaskVo) {
Map<String,Object> result = new HashMap<String,Object>();
//已办列表根据流程处理时间排序,添加过滤查询条件调用getTaskDoneQuery
HistoricTaskInstanceQuery taskQuery =getTaskDoneQuery(searchTodoTaskVo).orderByHistoricTaskInstanceEndTime().desc();;
//查询已经完成的任务要加.finished()
List<HistoricTaskInstance> hiTask = taskQuery.finished().listPage((pageNo-1)*pageSize, pageSize);
List<DoneTaskVo> doneTaskVos = new ArrayList<DoneTaskVo>();
String procInstName = "";
for(HistoricTaskInstance historicTaskInstance:hiTask) {
DoneTaskVo doneTaskVo = new DoneTaskVo();
HistoricProcessInstance processInstance = historyService.createHistoricProcessInstanceQuery().
processInstanceId(historicTaskInstance.getProcessInstanceId()).singleResult();
doneTaskVo.setProcessInstanceId(historicTaskInstance.getProcessInstanceId());
doneTaskVo.setProcessDefinitionId(processInstance.getProcessDefinitionId());
doneTaskVo.setEndTime(historicTaskInstance.getEndTime());
doneTaskVo.setProcessDefinitionName(processDefinition.getName());
doneTaskVo.setTaskId(historicTaskInstance.getId());
doneTaskVo.setTaskName(historicTaskInstance.getName());
doneTaskVo.setFormKey(historicTaskInstance.getFormKey());
doneTaskVo.setBusinessKey(processInstance.getBusinessKey() );
doneTaskVos.add(doneTaskVo);
}
result.put("pageSize",pageSize);
result.put("pageNum",pageNo);
result.put("list", doneTaskVos);
result.put("total", taskQuery.count());
return result;
}
private HistoricTaskInstanceQuery getTaskDoneQuery(SearchTodoTaskVo searchTodoTaskVo) {
HistoricTaskInstanceQuery hisTask = historyService.createHistoricTaskInstanceQuery();
if (searchTodoTaskVo != null) {
String processDefinitionKey = searchTodoTaskVo.getProcessDefinitionKey();
if (StringUtils.isNotEmpty(processDefinitionKey)) {
hisTask = hisTask.processDefinitionKey(processDefinitionKey);
}
String processDefinitionName = searchTodoTaskVo.getProcessDefinitionName();
if (StringUtils.isNotEmpty(processDefinitionName)) {
hisTask = hisTask.processDefinitionNameLike(processDefinitionName);
}
String taskName = searchTodoTaskVo.getTaskName();
if (StringUtils.isNotEmpty(taskName)) {
hisTask = hisTask.taskNameLike(taskName);
}
//before,after 调用官方api查询时间
Date startDueDate = searchTodoTaskVo.getStartDueDate();
if ( startDueDate!= null) {
hisTask.taskCompletedAfter(startDueDate);
}
Date endDueDate = searchTodoTaskVo.getEndDueDate();
if ( endDueDate!= null) {
hisTask.taskCompletedBefore(endDueDate);
}
}
return hisTask;
}