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 89395fb..79ad55d 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 @@ -5,6 +5,7 @@ import cn.axzo.orgmanax.dto.common.WorkspaceOuPair; import lombok.*; import lombok.experimental.SuperBuilder; +import java.util.Collections; import java.util.Set; @EqualsAndHashCode(callSuper = true) @@ -16,17 +17,20 @@ public class ListNodeReq extends PageReqV2 { /** * ids */ - private Set ids; + @Builder.Default + private Set ids = Collections.emptySet(); /** * 组织单位ids */ - private Set ouIds; + @Builder.Default + private Set ouIds = Collections.emptySet(); /** * 节点名称集合 */ - private Set nodeNames; + @Builder.Default + private Set nodeNames = Collections.emptySet();; /** * 节点名称查询(模糊) @@ -36,16 +40,19 @@ public class ListNodeReq extends PageReqV2 { /** * 指定部门类型 */ - private Set includeOrgNodeTypes; + @Builder.Default + private Set includeOrgNodeTypes = Collections.emptySet();; /** * 排除部门类型 */ - private Set excludeOrgNodeTypes; + @Builder.Default + private Set excludeOrgNodeTypes = Collections.emptySet();; /** * 顶级节点ID集合 */ - private Set topNodeIds; + @Builder.Default + private Set topNodeIds = Collections.emptySet();; /** * 是否包含祖先节点 @@ -74,28 +81,38 @@ public class ListNodeReq extends PageReqV2 { /** * 是否查询删除的 */ + @Builder.Default private Boolean includeDelete = false; + /** + * 是否包含协同关系 + */ + @Builder.Default + private Boolean includeCooperateShip = false; + /** * 只返回topNode */ - private Boolean isSelectTopNodeOnly; - + @Builder.Default + private Boolean isSelectTopNodeOnly = false; /** * 根据workspace和ouId组合查询 */ - private Set workspaceOuPairs; + @Builder.Default + private Set workspaceOuPairs = Collections.emptySet();; /** * 项目id集合 */ - private Set workspaceIds; + @Builder.Default + private Set workspaceIds = Collections.emptySet();; /** * 岗位编码 */ - private Set jobCodes; + @Builder.Default + private Set jobCodes = Collections.emptySet();; /** * 当前用户personId 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 dc31984..79ddf4a 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 @@ -3,6 +3,7 @@ package cn.axzo.orgmanax.server.node.service.impl; import cn.axzo.foundation.exception.Axssert; import cn.axzo.foundation.page.PageResp; import cn.axzo.orgmanax.common.config.BizResultCode; +import cn.axzo.orgmanax.dto.cooperateship.dto.OrgCooperateShipDTO; import cn.axzo.orgmanax.dto.node.dto.OrgNodeDTO; import cn.axzo.orgmanax.dto.node.req.ListNodeReq; import cn.axzo.orgmanax.dto.node.req.ProcessNodeReq; @@ -143,6 +144,12 @@ public class NodeServiceImpl implements NodeService { // 转换为DTO List records = page.getData().stream().map(e -> BeanUtil.toBean(e, OrgNodeDTO.class)).collect(Collectors.toList()); + // 是否包含协同关系 + if (req.getIncludeCooperateShip()) { + assembleCooperateShip(records); + } + + // 是否查询父级节点 if (BooleanUtil.isTrue(req.getIncludeParent())) { Set parentIds = nodeFoundationService.extractParentIds(page.getData()); @@ -263,4 +270,14 @@ public class NodeServiceImpl implements NodeService { e.setChildrenNodes(CollUtil.emptyIfNull(orgNodeDTOS)); }); } + + private void assembleCooperateShip(List nodes) { + 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())); + // 补充 workspaceId 和 cooperateType + nodes.forEach(node -> { + SaasCooperateShip cooperateShip = cooperateShips.get(node.getTopNodeId()); + node.setCooperateShip(BeanUtil.copyProperties(cooperateShip, OrgCooperateShipDTO.class)); + }); + } }