package com.zhgd.xmgl.util; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.wflow.workflow.bean.vo.ProcessTaskVo; import com.zhgd.xmgl.security.SecurityUtil; import com.zhgd.xmgl.security.util.SecurityUtils; import com.zhgd.xmgl.tenant.TenantContextHolder; import org.flowable.engine.RuntimeService; import org.flowable.engine.TaskService; import org.flowable.engine.runtime.ProcessInstanceQuery; import org.flowable.task.api.Task; import org.flowable.task.api.TaskQuery; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.stream.Collectors; @Component public class FlowSeviceUtil { @Lazy @Autowired private TaskService taskService; @Lazy @Autowired private RuntimeService runtimeService; /** * 获取我的待办的instanceIdList * * @param code 表单id,安全检查:wf66f6451c48b718d0aaf27522 * @return */ public List getMyTodoInstanceIds(String code,String projectSn) { if (SecurityUtils.getUser() == null) { ArrayList list = new ArrayList<>(); list.add("-1"); return list; } String userId = String.valueOf(SecurityUtils.getUser().getUserId()); TaskQuery taskQuery = taskService.createTaskQuery(); if (StrUtil.isNotBlank(code)) { taskQuery.processDefinitionKey(code); } ProcessInstanceQuery processInstanceQuery = runtimeService.createProcessInstanceQuery(); Set stringSet = processInstanceQuery.list().stream().map(p -> p.getProcessInstanceId()).collect(Collectors.toSet()); taskQuery.active().taskTenantId(projectSn) .processInstanceIdIn(stringSet) .taskCandidateOrAssigned(userId) .orderByTaskCreateTime().desc(); Page page = new Page<>(); List taskList = new ArrayList<>(); taskList = taskQuery.list(); List list = taskList.stream().map(o -> o.getProcessInstanceId()).collect(Collectors.toList()); if (CollUtil.isEmpty(list)) { list.add("-1"); } return list; } }