diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/node/impl/AssignUserLeaderStrategyImpl.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/node/impl/AssignUserLeaderStrategyImpl.java index 8c6b7e822..c74536d60 100644 --- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/node/impl/AssignUserLeaderStrategyImpl.java +++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/node/impl/AssignUserLeaderStrategyImpl.java @@ -1,7 +1,9 @@ package com.pig4cloud.pigx.flow.engine.node.impl; +import cn.hutool.core.collection.CollUtil; import com.pig4cloud.pigx.admin.api.feign.RemoteDeptService; import com.pig4cloud.pigx.common.core.util.R; +import com.pig4cloud.pigx.common.security.util.SecurityUtils; import com.pig4cloud.pigx.flow.engine.node.AssignUserStrategy; import com.pig4cloud.pigx.flow.task.constant.ProcessInstanceConstant; import com.pig4cloud.pigx.flow.task.dto.Node; @@ -9,6 +11,7 @@ import com.pig4cloud.pigx.flow.task.dto.NodeUser; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.function.Function; @@ -26,17 +29,23 @@ import java.util.stream.Stream; @Component(ProcessInstanceConstant.AssignedTypeClass.LEADER + "AssignUserStrategy") public class AssignUserLeaderStrategyImpl implements AssignUserStrategy { - private final RemoteDeptService deptService; + private final RemoteDeptService deptService; - @Override - public List handle(Node node, NodeUser rootUser, Map variables) { - // 获取部门ID - return node.getNodeUserList() - .stream() - .map(nodeUser -> deptService.getAllDeptLeader(nodeUser.getId())) - .flatMap((Function>, Stream>) listR -> listR.getData() == null ? null - : listR.getData().stream()) - .collect(Collectors.toList()); - } + @Override + public List handle(Node node, NodeUser rootUser, Map variables) { + // 如果节点没有设置部门主管,则默认为当前用户的部门主管 + if (CollUtil.isEmpty(node.getNodeUserList())) { + List nodeUserList = new ArrayList<>(); + nodeUserList.add(NodeUser.builder().id(SecurityUtils.getUser().getDeptId()).build()); + node.setNodeUserList(nodeUserList); + } + + return node.getNodeUserList() + .stream() + .map(nodeUser -> deptService.getAllDeptLeader(nodeUser.getId())) + .flatMap((Function>, Stream>) listR -> listR.getData() == null ? null + : listR.getData().stream()) + .collect(Collectors.toList()); + } }