package com.zzg.system.service.state.impl;
|
|
import cn.hutool.core.util.ObjectUtil;
|
import com.aizuda.bpm.engine.ProcessService;
|
import com.aizuda.bpm.engine.TaskActorProvider;
|
import com.aizuda.bpm.engine.assist.ObjectUtils;
|
import com.aizuda.bpm.engine.core.Execution;
|
import com.aizuda.bpm.engine.core.enums.NodeSetType;
|
import com.aizuda.bpm.engine.entity.FlwTaskActor;
|
import com.aizuda.bpm.engine.model.NodeAssignee;
|
import com.aizuda.bpm.engine.model.NodeModel;
|
import com.alibaba.fastjson2.JSON;
|
import com.zzg.common.core.domain.entity.system.SysRole;
|
import com.zzg.system.service.system.ISysRoleService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import java.util.ArrayList;
|
import java.util.Iterator;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* 任务参与者控制
|
*/
|
@Component
|
public class ProcessActorProvider implements TaskActorProvider {
|
|
@Autowired
|
private ISysRoleService iSysRoleService;
|
|
@Override
|
public List<FlwTaskActor> getTaskActors(NodeModel nodeModel, Execution execution) {
|
List<FlwTaskActor> flwTaskActors = new ArrayList();
|
if (ObjectUtils.isNotEmpty(nodeModel.getNodeAssigneeList())) {
|
Integer actorType = getActorType(nodeModel);
|
if (null != actorType && actorType == 1) {
|
List<String> roleIds = nodeModel.getNodeAssigneeList().stream().map(NodeAssignee::getId).collect(Collectors.toList());
|
List<SysRole> actorList = iSysRoleService.selectRoleByUserIds(roleIds);
|
if(ObjectUtils.isNotEmpty(actorList)) {
|
for (SysRole sysRole : actorList) {
|
if(ObjectUtil.isEmpty(sysRole.getRoleName())) {
|
continue;
|
}
|
NodeAssignee nodeAssignee = new NodeAssignee();
|
nodeAssignee.setId(sysRole.getRoleId());
|
nodeAssignee.setName(sysRole.getRoleName());
|
flwTaskActors.add(FlwTaskActor.of(nodeAssignee, 0));
|
}
|
}
|
}else{
|
Iterator var5 = nodeModel.getNodeAssigneeList().iterator();
|
while (var5.hasNext()) {
|
NodeAssignee nodeAssignee = (NodeAssignee) var5.next();
|
flwTaskActors.add(FlwTaskActor.of(nodeAssignee, actorType));
|
}
|
}
|
}
|
System.out.println(JSON.toJSONString(flwTaskActors));
|
return ObjectUtils.isEmpty(flwTaskActors) ? null : flwTaskActors;
|
}
|
|
private static Integer getActorType(NodeModel nodeModel) {
|
if (!NodeSetType.specifyMembers.eq(nodeModel.getSetType()) && !NodeSetType.initiatorThemselves.eq(nodeModel.getSetType()) && !NodeSetType.initiatorSelected.eq(nodeModel.getSetType())) {
|
if (NodeSetType.role.eq(nodeModel.getSetType())) {
|
return 1;
|
} else {
|
return NodeSetType.department.eq(nodeModel.getSetType()) ? 2 : null;
|
}
|
} else {
|
return 0;
|
}
|
}
|
}
|