|
@@ -8,6 +8,7 @@ import com.aizuda.bpm.engine.assist.ObjectUtils;
|
|
|
import com.aizuda.bpm.engine.core.Execution;
|
|
|
import com.aizuda.bpm.engine.core.FlowCreator;
|
|
|
import com.aizuda.bpm.engine.core.enums.NodeSetType;
|
|
|
+import com.aizuda.bpm.engine.core.enums.TaskType;
|
|
|
import com.aizuda.bpm.engine.entity.FlwTaskActor;
|
|
|
import com.aizuda.bpm.engine.model.NodeAssignee;
|
|
|
import com.aizuda.bpm.engine.model.NodeModel;
|
|
@@ -15,6 +16,7 @@ import com.aizuda.core.api.ApiAssert;
|
|
|
import com.aizuda.service.spring.SpringHelper;
|
|
|
import com.aizuda.service.web.UserSession;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
+import org.apache.ibatis.ognl.NodeType;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import java.util.Collections;
|
|
@@ -31,12 +33,12 @@ public class FlowTaskActorProvider implements TaskActorProvider {
|
|
|
List<NodeAssignee> nodeAssigneeList = nodeModel.getNodeAssigneeList();
|
|
|
if (ObjectUtils.isNotEmpty(nodeAssigneeList)) {
|
|
|
if (NodeSetType.specifyMembers.eq(nodeModel.getSetType())) {
|
|
|
- // 指定成员类型
|
|
|
+ // 1,指定成员
|
|
|
return nodeAssigneeList.stream().anyMatch((t) -> Objects.equals(t.getId(), flowCreator.getCreateId()));
|
|
|
}
|
|
|
|
|
|
if (NodeSetType.role.eq(nodeModel.getSetType())) {
|
|
|
- // 角色类型
|
|
|
+ // 3,角色
|
|
|
ISysUserRoleService sysUserRoleService = SpringHelper.getBean(ISysUserRoleService.class);
|
|
|
List<Long> roleIds = nodeModel.getNodeAssigneeList().stream().map(t -> Long.valueOf(t.getId())).toList();
|
|
|
ApiAssert.fail(!sysUserRoleService.existRoles(Long.valueOf(flowCreator.getCreateId()), roleIds), "当前用户无操作权限");
|
|
@@ -47,11 +49,11 @@ public class FlowTaskActorProvider implements TaskActorProvider {
|
|
|
|
|
|
@Override
|
|
|
public List<FlwTaskActor> getTaskActors(NodeModel nodeModel, Execution execution) {
|
|
|
- if (nodeModel.getType() == 0) {
|
|
|
+ if (TaskType.major.eq(nodeModel.getType())) {
|
|
|
// 发起人审批,经过 isAllowed 验证合法,直接返回当前执行人
|
|
|
return Collections.singletonList(FlwTaskActor.ofFlowCreator(execution.getFlowCreator()));
|
|
|
}
|
|
|
- if (nodeModel.getType() == 1) {
|
|
|
+ if (TaskType.approval.eq(nodeModel.getType())) {
|
|
|
/*
|
|
|
* 审核人类型
|
|
|
* <p>
|
|
@@ -60,29 +62,30 @@ public class FlowTaskActorProvider implements TaskActorProvider {
|
|
|
* 3,角色
|
|
|
* 4,发起人自选
|
|
|
* 5,发起人自己
|
|
|
- * 7,连续多级主管
|
|
|
+ * 6,连续多级主管
|
|
|
+ * 7,部门
|
|
|
* </p>
|
|
|
*/
|
|
|
- if (Objects.equals(nodeModel.getSetType(), 2)) {
|
|
|
+ if (NodeSetType.supervisor.eq(nodeModel.getSetType())) {
|
|
|
// 2,主管
|
|
|
return getDepartmentHeadInfo(nodeModel.getExamineLevel(), false, () -> "请设置直接主管信息");
|
|
|
- } else if (Objects.equals(nodeModel.getSetType(), 5)) {
|
|
|
+ } else if (NodeSetType.initiatorThemselves.eq(nodeModel.getSetType())) {
|
|
|
// 5,发起人自己
|
|
|
return Collections.singletonList(FlowHelper.getFlwTaskActor());
|
|
|
- } else if (Objects.equals(nodeModel.getSetType(), 7)) {
|
|
|
- // 7,连续多级主管
|
|
|
+ } else if (NodeSetType.multiLevelSupervisors.eq(nodeModel.getSetType())) {
|
|
|
+ // 6,连续多级主管
|
|
|
return getDepartmentHeadInfo(nodeModel.getExamineLevel(), true, () -> "未找到任何主管信息");
|
|
|
}
|
|
|
}
|
|
|
List<NodeAssignee> nodeAssigneeList = nodeModel.getNodeAssigneeList();
|
|
|
if (ObjectUtils.isNotEmpty(nodeAssigneeList)) {
|
|
|
if (NodeSetType.specifyMembers.eq(nodeModel.getSetType())) {
|
|
|
- // 指定成员类型
|
|
|
+ // 1,指定成员
|
|
|
return nodeAssigneeList.stream().map(FlwTaskActor::ofNodeAssignee).collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
if (NodeSetType.role.eq(nodeModel.getSetType())) {
|
|
|
- // 角色类型
|
|
|
+ // 3,角色
|
|
|
return nodeAssigneeList.stream().map(t -> FlwTaskActor.ofRole(t.getTenantId(), t.getId(), t.getName()))
|
|
|
.collect(Collectors.toList());
|
|
|
}
|