66 lines
2.4 KiB
Java
66 lines
2.4 KiB
Java
|
|
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<String> getMyTodoInstanceIds(String code,String projectSn) {
|
|||
|
|
if (SecurityUtils.getUser() == null) {
|
|||
|
|
ArrayList<String> 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<String> stringSet = processInstanceQuery.list().stream().map(p -> p.getProcessInstanceId()).collect(Collectors.toSet());
|
|||
|
|
taskQuery.active().taskTenantId(projectSn)
|
|||
|
|
.processInstanceIdIn(stringSet)
|
|||
|
|
.taskCandidateOrAssigned(userId)
|
|||
|
|
.orderByTaskCreateTime().desc();
|
|||
|
|
Page<ProcessTaskVo> page = new Page<>();
|
|||
|
|
List<Task> taskList = new ArrayList<>();
|
|||
|
|
taskList = taskQuery.list();
|
|||
|
|
List<String> list = taskList.stream().map(o -> o.getProcessInstanceId()).collect(Collectors.toList());
|
|||
|
|
if (CollUtil.isEmpty(list)) {
|
|||
|
|
list.add("-1");
|
|||
|
|
}
|
|||
|
|
return list;
|
|||
|
|
}
|
|||
|
|
}
|