activiti6 用户分页查询待办任务
Controller
@RequestMapping("/queryTask")
@ApiOperation(value = "用户分页查询待办任务", httpMethod = "POST", notes = "用户分页查询待办任务")
@ResponseBody
public ResponseVo<IPage> queryTask(String userId, PageRequest pageRequest, String drafterName, Date startTime, Date endTime) {
if (null == userId || "".equals(userId)) {
throw new BaseException(CoreErrorCode.REQUIRED_PARAM_EMPTY.getCode());
}
IPage page = jbpmProcessinstanceService.selectAgentTask(userId, pageRequest,drafterName,startTime,endTime);
return new ResponseVo<>(page);
}
createTaskyiban
/**
*
* 查询用户待办任务
*
* @param userId 用户id
* @param offset 从数据库中的第几条数据开始查询
* @param limit 查询几条数据
* @return :List<Task>
*/
public List<Task> createTaskQuery(String userId, Integer offset, Integer limit) {
List<Task> candidateUserTasks = ProcessEngines.getDefaultProcessEngine().getTaskService().createTaskQuery()
.taskCandidateOrAssigned(userId).orderByTaskCreateTime().desc().listPage(offset, limit);
return candidateUserTasks;
}
Service
public IPage selectAgentTask(String userId, PageRequest pageRequest, String name,Date startTime,Date endTime) {
if (null == userId || "".equals(userId)) {
throw new BaseException(CoreErrorCode.REQUIRED_PARAM_EMPTY.getCode());
}
Integer offset = pageRequest.getOffset();
Integer limit = pageRequest.getLimit();
// 查询出用户待办任务
List<Task> taskQuery = activitiInstanceService.createTaskQuery(userId, offset, limit);
List<TfJbpmWfInstanceTaskVO> taskVOList = new ArrayList<>();
JbpmProcessinstance jbpmProcessinstance = null;
for (Task task : taskQuery) {
// 流程实例ID
String processInstanceId = task.getProcessInstanceId();
// 根据流程实例ID,查询需要返回给用户的任务列表
QueryWrapper<JbpmProcessinstance> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("process_instance_id", processInstanceId);
if(name != null && !"".equals(name)){
queryWrapper.like("drafter_name",name);
}
if(startTime != null && !"".equals(startTime) && endTime != null && !"".equals(endTime)) {
queryWrapper.between("ct",startTime,endTime);
}
jbpmProcessinstance = this.getOne(queryWrapper, true);
// 转换 VO对象
TfJbpmWfInstanceTaskVO tfJbpmWfInstanceTaskVO = new TfJbpmWfInstanceTaskVO();
if (null != jbpmProcessinstance) {
// 任务名称
String taskName = task.getName();
// 获取流程Id
Long processId = jbpmProcessinstance.getProcessId();
// 返回activiti流程实例ID
String jbpmProcessInstanceId = jbpmProcessinstance.getProcessInstanceId();
// 获取businessKey
String businessKey = jbpmProcessinstance.getBusinessKey();
// 申请者ID
String drafter = jbpmProcessinstance.getDrafter();
// 申请者姓名
String drafterName = jbpmProcessinstance.getDrafterName();
//开始时间
Date ct = jbpmProcessinstance.getCt();
//任务状态
String flowstate = jbpmProcessinstance.getFlowstate();
//当前任务
String topic = jbpmProcessinstance.getTopic();
tfJbpmWfInstanceTaskVO.setTaskId(task.getId());
tfJbpmWfInstanceTaskVO.setTaskName(taskName);
tfJbpmWfInstanceTaskVO.setProcessId(processId);
tfJbpmWfInstanceTaskVO.setProcessInstanceId(jbpmProcessInstanceId);
tfJbpmWfInstanceTaskVO.setBusinessKey(businessKey);
tfJbpmWfInstanceTaskVO.setDrafter(drafter);
tfJbpmWfInstanceTaskVO.setDrafterName(drafterName);
tfJbpmWfInstanceTaskVO.setBegindate(ct);
tfJbpmWfInstanceTaskVO.setFlowstate(flowstate);
tfJbpmWfInstanceTaskVO.setTopic(topic);
taskVOList.add(tfJbpmWfInstanceTaskVO);
}
}
IPage page = new Page();
long count = activitiInstanceService.createTaskQueryCount(userId);
page.setTotal(count);
page.setRecords(taskVOList);
page.setCurrent(pageRequest.getPage());
page.setSize(pageRequest.getLimit());
return page;
}
TfJbpmWfInstanceTaskVO
private Long id;
/** 当前任务. */
private String taskId;
/** 当前任务名称. */
private String taskName;
/** process id. */
private Long processId;
/** 流程名称. */
private String processName;
/** 发起流程描述. */
private String option;
/** activiti流程实例id,此id来源于jbpm内流程实例信息id. */
private String processInstanceId;
/** 业务实体id. */
private String businessKey;
/** 主题信息. */
private String topic;
/** 发起人姓名. */
private String drafterName;
/** 发起人id. */
private String drafter;
/** 发起时间. */
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date draftDate;
/** 结束时间. */
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date enddate;
/** 开始时间. */
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date begindate;
/** 流程状态. */
private String flowstate;
/** 上一节点任务. */
private Long previoustask;
/** 当前节点任务. */
private Long currenttask;