Merge remote-tracking branch 'refs/remotes/origin/feature/REQ-3282' into feature/REQ-3282-zhh
This commit is contained in:
commit
faf3ee9636
@ -114,15 +114,32 @@ public interface NodeQueryRepository {
|
||||
@CriteriaField(field = "topNodeId", operator = Operator.IN)
|
||||
private Collection<Long> topNodeIds = Collections.emptySet();
|
||||
|
||||
/**
|
||||
* path右值
|
||||
*/
|
||||
@CriteriaField(ignore = true)
|
||||
@Builder.Default
|
||||
private Set<String> pathsRight = Collections.emptySet();
|
||||
|
||||
/**
|
||||
* path右值
|
||||
*/
|
||||
@CriteriaField(field = "parentId", operator = Operator.IN)
|
||||
@Builder.Default
|
||||
private Set<Long> parentIds = Collections.emptySet();
|
||||
|
||||
|
||||
/**
|
||||
* 是否查询删除的
|
||||
*/
|
||||
@CriteriaField(ignore = true)
|
||||
@Builder.Default
|
||||
private Boolean includeDelete = false;
|
||||
|
||||
/**
|
||||
* 只返回topNode节点
|
||||
*/
|
||||
@CriteriaField(ignore = true)
|
||||
@Builder.Default
|
||||
private Boolean isSelectTopNodeOnly = false;
|
||||
|
||||
|
||||
@ -37,10 +37,20 @@ public class NodeQueryRepositoryImpl implements NodeQueryRepository {
|
||||
IPage<OrganizationalNode> page = PageConverter.toMybatis(req, OrganizationalNode.class);
|
||||
QueryWrapper<OrganizationalNode> wrapper = QueryWrapperHelper.fromBean(req, OrganizationalNode.class);
|
||||
|
||||
if (req.getIsSelectTopNodeOnly()) {
|
||||
if (BooleanUtil.isTrue(req.getIsSelectTopNodeOnly())) {
|
||||
wrapper.apply(" top_node_id = id ");
|
||||
}
|
||||
|
||||
// 查询子集
|
||||
if (CollUtil.isNotEmpty(req.getPathsRight())) {
|
||||
// 遍历pathsRight转换成wrapper
|
||||
wrapper.and(w -> {
|
||||
for (String pathRight : req.getPathsRight()) {
|
||||
w.or().likeRight("path", pathRight);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
IPage<NodeResp> results = nodeDao.page(page, wrapper)
|
||||
.convert(e -> BeanUtil.toBean(e, NodeResp.class));
|
||||
PageResp<NodeResp> resp = PageConverter.toResp(results);
|
||||
|
||||
@ -59,6 +59,6 @@ public interface NodeFoundationService {
|
||||
* @param function
|
||||
* @return
|
||||
*/
|
||||
<T> Set<T> extract(List<OrganizationalNode> currentNodeList, Function<OrganizationalNode, T> function);
|
||||
<R, T extends OrganizationalNode> Set<R> extract(List<T> currentNodeList, Function<T, R> function);
|
||||
|
||||
}
|
||||
|
||||
@ -116,7 +116,7 @@ public class NodeFoundationServiceImpl implements NodeFoundationService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Set<T> extract(List<OrganizationalNode> list, Function<OrganizationalNode, T> function) {
|
||||
public <R, T extends OrganizationalNode> Set<R> extract(List<T> list, Function<T, R> function) {
|
||||
return list.stream().map(function).collect(Collectors.toSet());
|
||||
}
|
||||
}
|
||||
|
||||
@ -121,7 +121,7 @@ public class NodeServiceImpl implements NodeService {
|
||||
if (CollUtil.isNotEmpty(req.getWorkspaceIds())) {
|
||||
List<Long> topNodeIds = CollUtil.map(cooperateShipQueryRepository.list(CooperateShipQueryRepository.ListReq.builder()
|
||||
.workspaceIds(req.getWorkspaceIds())
|
||||
.workspaceOuPairs(BeanUtil.copyToList(req.getWorkspaceIds(), CooperateShipQueryRepository.WorkspaceOuPair.class))
|
||||
.workspaceOuPairs(BeanUtil.copyToList(req.getWorkspaceOuPairs(), CooperateShipQueryRepository.WorkspaceOuPair.class))
|
||||
.build()), SaasCooperateShip::getOrganizationalNodeId, true);
|
||||
if (CollUtil.isEmpty(topNodeIds)) {
|
||||
return emptyPageResp;
|
||||
@ -135,36 +135,40 @@ public class NodeServiceImpl implements NodeService {
|
||||
return emptyPageResp;
|
||||
}
|
||||
|
||||
// 是否查询祖父节点
|
||||
// 是否查询父级节点
|
||||
if (BooleanUtil.isTrue(req.getIncludeParent())) {
|
||||
nodeFoundationService.extractParentIds(page.getData());
|
||||
Set<Long> parentIds = nodeFoundationService.extractParentIds(page.getData());
|
||||
List<NodeQueryRepository.NodeResp> parentNodes = nodeQueryRepository.list(NodeQueryRepository.ListReq.builder().ids(parentIds).build());
|
||||
page.getData().addAll(parentNodes);
|
||||
}
|
||||
|
||||
// 是否查询祖父节点
|
||||
if (BooleanUtil.isTrue(req.getIncludeAncestors())) {
|
||||
Set<Long> ancestorIds = nodeFoundationService.extractAncestorIds(page.getData());
|
||||
List<NodeQueryRepository.NodeResp> parentNodes = nodeQueryRepository.list(NodeQueryRepository.ListReq.builder().ids(ancestorIds).build());
|
||||
page.getData().addAll(parentNodes);
|
||||
}
|
||||
|
||||
// 是否查询子孙节点
|
||||
if (BooleanUtil.isTrue(req.getIncludeDescendants())) {
|
||||
Set<String> paths = nodeFoundationService.extractPaths(page.getData(), ",");
|
||||
List<NodeQueryRepository.NodeResp> descendantsNodes = nodeQueryRepository.list(
|
||||
NodeQueryRepository.ListReq.builder()
|
||||
.pathsRight(paths).build());
|
||||
page.getData().addAll(descendantsNodes);
|
||||
}
|
||||
|
||||
// 是否查询子节点
|
||||
if (BooleanUtil.isTrue(req.getIncludeChildren())) {
|
||||
Set<Long> ids = nodeFoundationService.extract(page.getData(), NodeQueryRepository.NodeResp::getId);
|
||||
List<NodeQueryRepository.NodeResp> descendantShipNodes = nodeQueryRepository.list(
|
||||
NodeQueryRepository.ListReq.builder()
|
||||
.parentIds(ids).build());
|
||||
page.getData().addAll(descendantShipNodes);
|
||||
}
|
||||
List<OrgNodeDTO> records = page.getData().stream().map(e -> BeanUtil.toBean(e, OrgNodeDTO.class)).collect(Collectors.toList());
|
||||
return new PageResp<>(page.getTotal(), page.getSize(), page.getCurrent(), records);
|
||||
}
|
||||
|
||||
|
||||
// private void assembleCooperateShip(List<OrganizationalNodeResp> nodes) {
|
||||
// List<Long> nodeTopNodeIds = nodes.stream().map(OrganizationalNodeResp::getTopNodeId).distinct().collect(Collectors.toList());
|
||||
// Map<Long, SaasCooperateShip> cooperateShips = saasCooperateShipDao.listByBO(SaasCooperateShipBO.builder()
|
||||
// .organizationalNodeIds(nodeTopNodeIds)
|
||||
// .build()).stream().collect(Collectors.toMap(SaasCooperateShip::getOrganizationalNodeId, Function.identity()));
|
||||
// // 补充 workspaceId 和 cooperateType
|
||||
// nodes.forEach(node -> {
|
||||
// SaasCooperateShip cooperateShip = cooperateShips.get(node.getTopNodeId());
|
||||
// if (cooperateShip != null) {
|
||||
// node.setWorkspaceId(cooperateShip.getWorkspaceId());
|
||||
// // 平台班组类型,找到的是 平台班组所属的企业
|
||||
// if (Objects.equals(node.getNodeType(), OrganizationalNodeTypeEnum.TEAM.getValue())) {
|
||||
// node.setCooperateType(SaasCooperateShipCooperateTypeEnum.ENT_TEAM.getCode());
|
||||
// node.setCooperateStatus(SaasCooperateShipStatusEnum.ACTIVE.getStatus());
|
||||
// } else {
|
||||
// node.setCooperateType(cooperateShip.getCooperateType());
|
||||
// node.setCooperateStatus(cooperateShip.getStatus());
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user