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())); }