diff --git a/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/node/dto/OrgNodeDTO.java b/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/node/dto/OrgNodeDTO.java index 106456e..e86226c 100644 --- a/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/node/dto/OrgNodeDTO.java +++ b/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/node/dto/OrgNodeDTO.java @@ -19,6 +19,7 @@ import java.util.List; public class OrgNodeDTO implements Serializable { protected Long id; + /** * 上级id,为0时为顶级节点 */ diff --git a/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/node/req/ListNodeReq.java b/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/node/req/ListNodeReq.java index 79ad55d..a8b6f64 100644 --- a/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/node/req/ListNodeReq.java +++ b/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/node/req/ListNodeReq.java @@ -90,6 +90,12 @@ public class ListNodeReq extends PageReqV2 { @Builder.Default private Boolean includeCooperateShip = false; + /** + * 指定的协同关系类型, 当includeCooperateShip=true时生效 + */ + @Builder.Default + private Set includeCooperateTypes = Collections.emptySet(); + /** * 只返回topNode */ diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/node/service/impl/NodeServiceImpl.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/node/service/impl/NodeServiceImpl.java index f9b4364..8b830d1 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/node/service/impl/NodeServiceImpl.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/node/service/impl/NodeServiceImpl.java @@ -145,7 +145,7 @@ public class NodeServiceImpl implements NodeService { // 是否包含协同关系 if (req.getIncludeCooperateShip()) { - assembleCooperateShip(records); + assembleCooperateShip(records, req.getIncludeCooperateTypes()); } @@ -270,9 +270,12 @@ public class NodeServiceImpl implements NodeService { }); } - private void assembleCooperateShip(List nodes) { + private void assembleCooperateShip(List nodes, Set cooperateTypes) { List nodeTopNodeIds = nodes.stream().map(OrgNodeDTO::getTopNodeId).distinct().collect(Collectors.toList()); - Map cooperateShips = cooperateShipQueryRepository.list(CooperateShipQueryRepository.ListReq.builder().organizationNodeIds(nodeTopNodeIds).build()).stream().collect(Collectors.toMap(SaasCooperateShip::getOrganizationalNodeId, Function.identity())); + Map cooperateShips = cooperateShipQueryRepository.list(CooperateShipQueryRepository.ListReq.builder() + .organizationNodeIds(nodeTopNodeIds) + .includeCooperateTypes(cooperateTypes) + .build()).stream().collect(Collectors.toMap(SaasCooperateShip::getOrganizationalNodeId, Function.identity())); // 补充 workspaceId 和 cooperateType nodes.forEach(node -> { SaasCooperateShip cooperateShip = cooperateShips.get(node.getTopNodeId());