feat:[REQ-3488] 修改为collection类, 集合处理不关心子类
This commit is contained in:
parent
ae91917153
commit
b7343d92a9
@ -2,6 +2,7 @@ package cn.axzo.orgmanax.server.cooperateship.foundation;
|
||||
|
||||
import cn.axzo.orgmanax.infra.dao.cooperateship.entity.SaasCooperateShip;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
@ -14,7 +15,7 @@ public interface CooperateShipFoundationService {
|
||||
* @param nodeIds
|
||||
* @param includeExitPerson
|
||||
*/
|
||||
void filterNodeIdsByPerson(Long filterPersonId, List<Long> nodeIds, Boolean includeExitPerson, List<String> excludeJobCodes);
|
||||
void filterNodeIdsByPerson(Long filterPersonId, Collection<Long> nodeIds, Boolean includeExitPerson, Collection<String> excludeJobCodes);
|
||||
|
||||
/**
|
||||
* 通过person进行过滤
|
||||
@ -22,14 +23,14 @@ public interface CooperateShipFoundationService {
|
||||
* @param nodeIds
|
||||
* @param includeExitPerson
|
||||
*/
|
||||
void filterNodeIdsByPerson(Long filterPersonId, List<Long> nodeIds, Boolean includeExitPerson);
|
||||
void filterNodeIdsByPerson(Long filterPersonId, Collection<Long> nodeIds, Boolean includeExitPerson);
|
||||
|
||||
/**
|
||||
* 提取祖级的数据
|
||||
* @param list
|
||||
* @return
|
||||
*/
|
||||
Set<Long> extractAncestorIds(List<SaasCooperateShip> list);
|
||||
Collection<Long> extractAncestorIds(Collection<SaasCooperateShip> list);
|
||||
|
||||
/**
|
||||
* 提取path数据
|
||||
@ -37,14 +38,22 @@ public interface CooperateShipFoundationService {
|
||||
* @param suffix 后缀
|
||||
* @return
|
||||
*/
|
||||
Set<String> extractPaths(List<SaasCooperateShip> list, String suffix);
|
||||
Collection<String> extractPaths(Collection<SaasCooperateShip> list, String suffix);
|
||||
|
||||
/**
|
||||
* 提取父级id
|
||||
* @param currentNodeList
|
||||
* @return
|
||||
*/
|
||||
Set<Long> extractParentIds(List<SaasCooperateShip> currentNodeList);
|
||||
Collection<Long> extractParentIds(Collection<SaasCooperateShip> currentNodeList);
|
||||
|
||||
/**
|
||||
* 提取id
|
||||
* @param currentNodeList
|
||||
* @return
|
||||
*/
|
||||
Collection<Long> extractIds(Collection<SaasCooperateShip> currentNodeList);
|
||||
|
||||
|
||||
/**
|
||||
* 提取集合中的字段值
|
||||
@ -52,6 +61,6 @@ public interface CooperateShipFoundationService {
|
||||
* @param function
|
||||
* @return
|
||||
*/
|
||||
<T> Set<T> extract(List<SaasCooperateShip> currentNodeList, Function<SaasCooperateShip, T> function);
|
||||
<T> Collection<T> extract(Collection<SaasCooperateShip> currentNodeList, Function<SaasCooperateShip, T> function);
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,16 @@
|
||||
package cn.axzo.orgmanax.server.cooperateship.foundation.dto;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 协同关系入参查询
|
||||
*/
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Data
|
||||
@Builder
|
||||
public class CooperateShipListReq {
|
||||
}
|
||||
@ -15,10 +15,7 @@ import cn.hutool.core.collection.CollStreamUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@ -33,7 +30,7 @@ public class CooperateShipFoundationServiceImpl implements CooperateShipFoundati
|
||||
private final OrgJobQueryRepository jobQueryRepository;
|
||||
|
||||
@Override
|
||||
public void filterNodeIdsByPerson(Long filterPersonId, List<Long> nodeIds, Boolean includeExitPerson, List<String> excludeJobCodes) {
|
||||
public void filterNodeIdsByPerson(Long filterPersonId, Collection<Long> nodeIds, Boolean includeExitPerson, Collection<String> excludeJobCodes) {
|
||||
if (filterPersonId == null) {
|
||||
return;
|
||||
}
|
||||
@ -72,29 +69,34 @@ public class CooperateShipFoundationServiceImpl implements CooperateShipFoundati
|
||||
}
|
||||
|
||||
@Override
|
||||
public void filterNodeIdsByPerson(Long filterPersonId, List<Long> nodeIds, Boolean includeExitPerson) {
|
||||
public void filterNodeIdsByPerson(Long filterPersonId, Collection<Long> nodeIds, Boolean includeExitPerson) {
|
||||
filterNodeIdsByPerson(filterPersonId, nodeIds, includeExitPerson, Collections.emptyList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<Long> extractAncestorIds(List<SaasCooperateShip> list) {
|
||||
public Collection<Long> extractAncestorIds(Collection<SaasCooperateShip> list) {
|
||||
return list.stream()
|
||||
.flatMap(e -> e.parseAncestorIdsFromPath().stream())
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> extractPaths(List<SaasCooperateShip> list, String suffix) {
|
||||
public Collection<String> extractPaths(Collection<SaasCooperateShip> list, String suffix) {
|
||||
return list.stream().map(t -> StrUtil.isNotBlank(suffix) ? StrUtil.concat(true, t.getPath(), suffix) : t.getPath()).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<Long> extractParentIds(List<SaasCooperateShip> list) {
|
||||
public Collection<Long> extractParentIds(Collection<SaasCooperateShip> list) {
|
||||
return list.stream().map(SaasCooperateShip::getParentId).filter(parentId -> parentId != 0).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Set<T> extract(List<SaasCooperateShip> currentNodeList, Function<SaasCooperateShip, T> function) {
|
||||
public Collection<Long> extractIds(Collection<SaasCooperateShip> currentNodeList) {
|
||||
return extract(currentNodeList, SaasCooperateShip::getId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Collection<T> extract(Collection<SaasCooperateShip> currentNodeList, Function<SaasCooperateShip, T> function) {
|
||||
return currentNodeList.stream().map(function).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
|
||||
@ -28,6 +28,7 @@ import cn.hutool.core.collection.CollStreamUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.BooleanUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -135,26 +136,27 @@ public class CooperateShipServiceImpl implements CooperateShipService {
|
||||
boolean isFilterCurrentAndBelowByPerson = !isFilterCurrentNodeByPerson && ObjectUtil.isNotNull(req.getFilterByPersonId())
|
||||
&& Objects.equals(req.getFilterMethod(), ListOrgCooperateShipReq.FILTER_PERSON_TYPE_CURRENT_AND_BELOW_NODE);
|
||||
|
||||
// 构建查询条件
|
||||
CooperateShipQueryRepository.ListReq listReq = CooperateShipQueryRepository.ListReq.builder()
|
||||
.ids(req.getIds())
|
||||
.workspaceIds(req.getWorkspaceIds())
|
||||
.workspaceTypes(req.getWorkspaceTypes())
|
||||
.ouIds(req.getOuIds())
|
||||
.includeCooperateTypes(req.getIncludeCooperateTypes())
|
||||
.excludeCooperateTypes(req.getExcludeCooperateTypes())
|
||||
.organizationNodeIds(req.getOrganizationNodeIds())
|
||||
.partnerShips(req.getPartnerShips())
|
||||
.statuses(req.getStatuses())
|
||||
.build();
|
||||
// 根据入参查询数据
|
||||
List<SaasCooperateShip> currentNodeList = cooperateShipQueryRepository.list(
|
||||
CooperateShipQueryRepository.ListReq.builder()
|
||||
.ids(req.getIds())
|
||||
.workspaceIds(req.getWorkspaceIds())
|
||||
.workspaceTypes(req.getWorkspaceTypes())
|
||||
.ouIds(req.getOuIds())
|
||||
.includeCooperateTypes(req.getIncludeCooperateTypes())
|
||||
.excludeCooperateTypes(req.getExcludeCooperateTypes())
|
||||
.organizationNodeIds(req.getOrganizationNodeIds())
|
||||
.partnerShips(req.getPartnerShips())
|
||||
.statuses(req.getStatuses())
|
||||
.build());
|
||||
List<SaasCooperateShip> currentNodeList = cooperateShipQueryRepository.list(listReq);
|
||||
log.info("【协同关系基础数据查询】 入参 {},结果:{}", JSONUtil.toJsonStr(listReq), JSONUtil.toJsonStr(currentNodeList));
|
||||
if (CollUtil.isEmpty(currentNodeList)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
// 协同关系id集合
|
||||
List<Long> cooperateShipNodeIds = CollUtil.map(currentNodeList, SaasCooperateShip::getOrganizationalNodeId, true);
|
||||
|
||||
Collection<Long> cooperateShipNodeIds = cooperateShipFoundationService.extractIds(currentNodeList);
|
||||
// 根据person过滤当前节点
|
||||
if (isFilterCurrentNodeByPerson) {
|
||||
// 根据personId过滤节点
|
||||
@ -171,20 +173,20 @@ public class CooperateShipServiceImpl implements CooperateShipService {
|
||||
|
||||
// 是否查询祖先节点
|
||||
if (BooleanUtil.isTrue(req.getIncludeParent())) {
|
||||
Set<Long> parentIds = cooperateShipFoundationService.extractParentIds(currentNodeList);
|
||||
Collection<Long> parentIds = cooperateShipFoundationService.extractParentIds(currentNodeList);
|
||||
List<SaasCooperateShip> ancestorShipNodes = cooperateShipQueryRepository.list(CooperateShipQueryRepository.ListReq.builder().ids(parentIds).build());
|
||||
resultNodeList.addAll(ancestorShipNodes);
|
||||
}
|
||||
|
||||
// 是否查询父级节点
|
||||
if (BooleanUtil.isTrue(req.getIncludeAncestors())) {
|
||||
Set<Long> ancestorIds = cooperateShipFoundationService.extractAncestorIds(currentNodeList);
|
||||
Collection<Long> ancestorIds = cooperateShipFoundationService.extractAncestorIds(currentNodeList);
|
||||
List<SaasCooperateShip> ancestorShipNodes = cooperateShipQueryRepository.list(CooperateShipQueryRepository.ListReq.builder().ids(ancestorIds).statuses(req.getStatuses()).build());
|
||||
resultNodeList.addAll(ancestorShipNodes);
|
||||
}
|
||||
// 是否查询子节点
|
||||
if (BooleanUtil.isTrue(req.getIncludeDescendants())) {
|
||||
Set<String> paths = cooperateShipFoundationService.extractPaths(currentNodeList, ",");
|
||||
Collection<String> paths = cooperateShipFoundationService.extractPaths(currentNodeList, ",");
|
||||
List<SaasCooperateShip> descendantShipNodes = cooperateShipQueryRepository.list(
|
||||
CooperateShipQueryRepository.ListReq.builder()
|
||||
.statuses(req.getStatuses())
|
||||
@ -199,7 +201,7 @@ public class CooperateShipServiceImpl implements CooperateShipService {
|
||||
|
||||
// 是否查询子孙节点
|
||||
if (BooleanUtil.isTrue(req.getIncludeChildren())) {
|
||||
Set<Long> ids = cooperateShipFoundationService.extract(currentNodeList, SaasCooperateShip::getId);
|
||||
Collection<Long> ids = cooperateShipFoundationService.extract(currentNodeList, SaasCooperateShip::getId);
|
||||
List<SaasCooperateShip> childrenShipNodes = cooperateShipQueryRepository.list(
|
||||
CooperateShipQueryRepository.ListReq.builder()
|
||||
.statuses(req.getStatuses())
|
||||
|
||||
Loading…
Reference in New Issue
Block a user