From f950393393a0f7e1f1375a87ea090a04260f7c5b Mon Sep 17 00:00:00 2001 From: liuyang Date: Fri, 27 Dec 2024 10:36:48 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:[REQ-3488]=20=E6=9A=82=E6=97=B6?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/orgmanax/dto/common}/IBaseTree.java | 2 +- .../orgmanax/dto/common/WorkspaceOuPair.java | 8 ++++++++ .../node/repository/NodeQueryRepository.java | 20 ++++--------------- .../node/service/impl/NodeServiceImpl.java | 2 +- 4 files changed, 14 insertions(+), 18 deletions(-) rename {orgmanax-common/src/main/java/cn/axzo/orgmanax/common/model => orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/common}/IBaseTree.java (92%) diff --git a/orgmanax-common/src/main/java/cn/axzo/orgmanax/common/model/IBaseTree.java b/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/common/IBaseTree.java similarity index 92% rename from orgmanax-common/src/main/java/cn/axzo/orgmanax/common/model/IBaseTree.java rename to orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/common/IBaseTree.java index 54aa3cd..b2af7e5 100644 --- a/orgmanax-common/src/main/java/cn/axzo/orgmanax/common/model/IBaseTree.java +++ b/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/common/IBaseTree.java @@ -1,4 +1,4 @@ -package cn.axzo.orgmanax.common.model; +package cn.axzo.orgmanax.dto.common; import java.util.List; diff --git a/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/common/WorkspaceOuPair.java b/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/common/WorkspaceOuPair.java index 806e146..a9724f2 100644 --- a/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/common/WorkspaceOuPair.java +++ b/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/common/WorkspaceOuPair.java @@ -11,6 +11,14 @@ import lombok.experimental.SuperBuilder; @Data @SuperBuilder public class WorkspaceOuPair { + + /** + * 项目ID + */ private Long workspaceId; + + /** + * 组织单位ID + */ private Long ouId; } diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/repository/NodeQueryRepository.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/repository/NodeQueryRepository.java index 4dce07b..f116a0a 100644 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/repository/NodeQueryRepository.java +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/node/repository/NodeQueryRepository.java @@ -5,22 +5,15 @@ import cn.axzo.foundation.dao.support.wrapper.CriteriaField; import cn.axzo.foundation.dao.support.wrapper.Operator; import cn.axzo.foundation.page.PageReqV2; import cn.axzo.foundation.page.PageResp; +import cn.axzo.orgmanax.dto.common.WorkspaceOuPair; import cn.axzo.orgmanax.infra.dao.node.entity.OrganizationalNode; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import com.google.common.base.Preconditions; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; +import lombok.*; import lombok.experimental.SuperBuilder; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Optional; -import java.util.Set; +import java.util.*; /** * @author tanjie@axzo.cn @@ -144,15 +137,10 @@ public interface NodeQueryRepository { @Builder.Default private Boolean isSelectTopNodeOnly = false; - /** - * 是否返回祖先节点 TODO:liuyang - */ - private Boolean needAncestorNode; - /** * 根据workspace和ouId组合查询 */ - private Set workspaceOuPairs; + private Set workspaceOuPairs; } 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 1f8e060..093107f 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 @@ -84,7 +84,7 @@ public class NodeServiceImpl implements NodeService { .page(req.getPage()) .pageSize(req.getPageSize()) .ids(req.getIds()) - .parentIds(req.getIds()) + .parentIds(req.getParentIds()) .ouIds(req.getOuIds()) .topNodeIds(req.getTopNodeIds()) .nodeName(req.getNodeName()) From f0f840be3140db7b8da41b8e30921c52b513bae3 Mon Sep 17 00:00:00 2001 From: liuyang Date: Fri, 27 Dec 2024 11:09:27 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:[REQ-3488]=20=E6=9A=82=E6=97=B6?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../node/service/impl/NodeServiceImpl.java | 23 +++++++------------ .../foundation/NodeUserFoundationService.java | 5 ++-- .../impl/NodeUserFoundationServiceImpl.java | 9 +++++++- 3 files changed, 19 insertions(+), 18 deletions(-) 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 093107f..7d84801 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 @@ -106,20 +106,14 @@ public class NodeServiceImpl implements NodeService { if (CollUtil.isEmpty(nodeUsers)) { return emptyPageResp; } - // 获取岗位信息 if (CollUtil.isNotEmpty(req.getJobCodes())) { - List orgJobs = orgJobQueryRepository.list(OrgJobQueryRepository.ListReq.builder() - .ids(CollUtil.map(nodeUsers, OrganizationalNodeUser::getOrganizationalJobId, true)) - .codes(req.getJobCodes()) - .build()); - nodeUserFoundationService.filterByJobs(nodeUsers, orgJobs); + nodeUserFoundationService.filterByJobs(nodeUsers, req.getJobCodes()); } - if (CollUtil.isEmpty(nodeUsers)) { return emptyPageResp; } - reqListBuilder.ids(nodeUsers.stream().map(OrganizationalNodeUser::getOrganizationalNodeId).collect(Collectors.toSet())); + reqListBuilder.ids(CollUtil.map(nodeUsers, OrganizationalNodeUser::getOrganizationalNodeId, true)); } // 根据项目ID获取topNodeId进行组织节点过滤 @@ -149,15 +143,15 @@ public class NodeServiceImpl implements NodeService { } - // 是否查询父级节点 + // 是否聚合父节点 if (BooleanUtil.isTrue(req.getIncludeParent())) { Set parentIds = nodeFoundationService.extractParentIds(page.getData()); List parentNodes = nodeQueryRepository.list(NodeQueryRepository.ListReq.builder().ids(parentIds).build()); nodeFoundationService.assembleParentNodes(records, parentNodes); } - // 是否查询祖父节点 - if (BooleanUtil.isTrue(req.getIncludeAncestors())) { + // 是否聚合祖先节点 + else if (BooleanUtil.isTrue(req.getIncludeAncestors())) { Set ancestorIds = nodeFoundationService.extractAncestorIds(page.getData()); List parentNodes = nodeQueryRepository.list(NodeQueryRepository.ListReq.builder().ids(ancestorIds).build()); if (CollUtil.isNotEmpty(parentNodes)) { @@ -166,7 +160,7 @@ public class NodeServiceImpl implements NodeService { } } - // 是否查询子孙节点 + // 是否聚合子孙节点 if (BooleanUtil.isTrue(req.getIncludeDescendants())) { Set paths = nodeFoundationService.extractPaths(page.getData(), ","); List descendantsNodes = nodeQueryRepository.list( @@ -175,9 +169,8 @@ public class NodeServiceImpl implements NodeService { nodeFoundationService.assembleChildrenNodes(records, descendantsNodes); nodeFoundationService.assembleDescendantNodes(records, descendantsNodes); } - - // 是否查询子节点 - if (BooleanUtil.isTrue(req.getIncludeChildren())) { + // 是否聚合子节点 + else if (BooleanUtil.isTrue(req.getIncludeChildren())) { Set ids = nodeFoundationService.extract(page.getData(), OrganizationalNode::getId); List childrenNodes = nodeQueryRepository.list( NodeQueryRepository.ListReq.builder() diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/foundation/NodeUserFoundationService.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/foundation/NodeUserFoundationService.java index 8f23c91..5ee1cc3 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/foundation/NodeUserFoundationService.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/foundation/NodeUserFoundationService.java @@ -10,6 +10,7 @@ import cn.axzo.orgmanax.server.nodeuser.foundation.req.NodeUserCreate; import cn.axzo.orgmanax.server.nodeuser.foundation.req.NodeUserUpdate; import org.springframework.transaction.annotation.Transactional; +import java.util.Collection; import java.util.List; public interface NodeUserFoundationService { @@ -34,9 +35,9 @@ public interface NodeUserFoundationService { /** * 根据岗位进行过滤 * @param nodeUsers - * @param orgJobs + * @param jobCodes */ - void filterByJobs(List nodeUsers, List orgJobs); + void filterByJobs(Collection nodeUsers, Collection jobCodes); /** * 根据条件聚合查询节点用户 diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/foundation/impl/NodeUserFoundationServiceImpl.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/foundation/impl/NodeUserFoundationServiceImpl.java index 5aa6d98..a3fe0c1 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/foundation/impl/NodeUserFoundationServiceImpl.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/foundation/impl/NodeUserFoundationServiceImpl.java @@ -19,6 +19,7 @@ import cn.axzo.orgmanax.infra.dao.nodeuser.mapper.OrganizationalNodeUserMapper; import cn.axzo.orgmanax.infra.dao.nodeuser.repository.NodeUserQueryRepository; import cn.axzo.orgmanax.infra.dao.nodeuser.repository.NodeUserUpsertRepository; import cn.axzo.orgmanax.infra.dao.orgjob.entity.OrgJob; +import cn.axzo.orgmanax.infra.dao.orgjob.repository.OrgJobQueryRepository; import cn.axzo.orgmanax.server.node.event.inner.NodeEventType; import cn.axzo.orgmanax.server.nodeuser.event.inner.payload.NodeUserUpsertedPayload; import cn.axzo.orgmanax.server.nodeuser.foundation.NodeUserFoundationService; @@ -31,6 +32,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Collection; import java.util.List; import java.util.Objects; @@ -49,6 +51,7 @@ public class NodeUserFoundationServiceImpl implements NodeUserFoundationService private final EventProducer eventProducer; private final PersonProfileGateway profileGateway; private final OrganizationalNodeUserMapper organizationalNodeUserMapper; + private final OrgJobQueryRepository orgJobQueryRepository; /** @@ -139,7 +142,11 @@ public class NodeUserFoundationServiceImpl implements NodeUserFoundationService } @Override - public void filterByJobs(List nodeUsers, List orgJobs) { + public void filterByJobs(Collection nodeUsers, Collection jobCodes) { + List orgJobs = orgJobQueryRepository.list(OrgJobQueryRepository.ListReq.builder() + .ids(CollUtil.map(nodeUsers, OrganizationalNodeUser::getOrganizationalJobId, true)) + .codes(jobCodes) + .build()); List jobIds = CollUtil.map(orgJobs, OrgJob::getId, true); nodeUsers.removeIf(e -> !jobIds.contains(e.getOrganizationalJobId())); }