Merge remote-tracking branch 'refs/remotes/origin/feature/REQ-3488' into feature/REQ-3488-zhh

This commit is contained in:
zhanghonghao 2024-12-27 11:45:28 +08:00
commit 80e8b40c87
6 changed files with 33 additions and 36 deletions

View File

@ -1,4 +1,4 @@
package cn.axzo.orgmanax.common.model;
package cn.axzo.orgmanax.dto.common;
import java.util.List;

View File

@ -11,6 +11,14 @@ import lombok.experimental.SuperBuilder;
@Data
@SuperBuilder
public class WorkspaceOuPair {
/**
* 项目ID
*/
private Long workspaceId;
/**
* 组织单位ID
*/
private Long ouId;
}

View File

@ -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;
/**
* 是否返回祖先节点 TODOliuyang
*/
private Boolean needAncestorNode;
/**
* 根据workspace和ouId组合查询
*/
private Set<cn.axzo.orgmanax.dto.common.WorkspaceOuPair> workspaceOuPairs;
private Set<WorkspaceOuPair> workspaceOuPairs;
}

View File

@ -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())
@ -106,20 +106,14 @@ public class NodeServiceImpl implements NodeService {
if (CollUtil.isEmpty(nodeUsers)) {
return emptyPageResp;
}
// 获取岗位信息
if (CollUtil.isNotEmpty(req.getJobCodes())) {
List<OrgJobQueryRepository.JobResp> 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<Long> parentIds = nodeFoundationService.extractParentIds(page.getData());
List<OrganizationalNode> 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<Long> ancestorIds = nodeFoundationService.extractAncestorIds(page.getData());
List<OrganizationalNode> 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<String> paths = nodeFoundationService.extractPaths(page.getData(), ",");
List<OrganizationalNode> 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<Long> ids = nodeFoundationService.extract(page.getData(), OrganizationalNode::getId);
List<OrganizationalNode> childrenNodes = nodeQueryRepository.list(
NodeQueryRepository.ListReq.builder()

View File

@ -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
*/
<T extends NodeUserQueryRepository.NodeUserResp, Job extends OrgJob> void filterByJobs(List<T> nodeUsers, List<Job> orgJobs);
<T extends OrganizationalNodeUser> void filterByJobs(Collection<T> nodeUsers, Collection<String> jobCodes);
/**
* 根据条件聚合查询节点用户

View File

@ -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 <T extends NodeUserQueryRepository.NodeUserResp, Job extends OrgJob> void filterByJobs(List<T> nodeUsers, List<Job> orgJobs) {
public <T extends OrganizationalNodeUser> void filterByJobs(Collection<T> nodeUsers, Collection<String> jobCodes) {
List<OrgJobQueryRepository.JobResp> orgJobs = orgJobQueryRepository.list(OrgJobQueryRepository.ListReq.builder()
.ids(CollUtil.map(nodeUsers, OrganizationalNodeUser::getOrganizationalJobId, true))
.codes(jobCodes)
.build());
List<Long> jobIds = CollUtil.map(orgJobs, OrgJob::getId, true);
nodeUsers.removeIf(e -> !jobIds.contains(e.getOrganizationalJobId()));
}