Merge remote-tracking branch 'refs/remotes/origin/feature/REQ-3488' into feature/REQ-3488-zhh
This commit is contained in:
commit
80e8b40c87
@ -1,4 +1,4 @@
|
||||
package cn.axzo.orgmanax.common.model;
|
||||
package cn.axzo.orgmanax.dto.common;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -11,6 +11,14 @@ import lombok.experimental.SuperBuilder;
|
||||
@Data
|
||||
@SuperBuilder
|
||||
public class WorkspaceOuPair {
|
||||
|
||||
/**
|
||||
* 项目ID
|
||||
*/
|
||||
private Long workspaceId;
|
||||
|
||||
/**
|
||||
* 组织单位ID
|
||||
*/
|
||||
private Long ouId;
|
||||
}
|
||||
|
||||
@ -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<cn.axzo.orgmanax.dto.common.WorkspaceOuPair> workspaceOuPairs;
|
||||
private Set<WorkspaceOuPair> workspaceOuPairs;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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);
|
||||
|
||||
/**
|
||||
* 根据条件聚合查询节点用户
|
||||
|
||||
@ -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()));
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user