feat:[REQ-3282] 实现二期协同关系代码逻辑
This commit is contained in:
parent
d297589892
commit
4f36fcb0a3
@ -7,6 +7,7 @@ import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@NoArgsConstructor
|
||||
@ -72,16 +73,21 @@ public class ListOrgCooperateShipReq {
|
||||
private Set<Integer> statuses = Collections.emptySet();
|
||||
|
||||
/**
|
||||
* 需要过滤的personId
|
||||
* personId
|
||||
* 根据人员进行节点过滤
|
||||
*/
|
||||
private Long filterPersonId;
|
||||
private Long filterByPersonId;
|
||||
|
||||
/**
|
||||
* 当personId有值时,为必填项
|
||||
* 1只过滤当前节点数据 2过滤当前节点及以下数据
|
||||
* 当filterByPersonId有值时,为必填项
|
||||
* 值说明:1只过滤当前节点数据 2过滤当前节点及以下数据
|
||||
*/
|
||||
private Integer filterPersonType;
|
||||
private Integer filterMethod;
|
||||
|
||||
/**
|
||||
* 过滤人员状态集合
|
||||
*/
|
||||
@Builder.Default
|
||||
private Boolean filterIncludeExitPerson = false;
|
||||
|
||||
/**
|
||||
* 是否包含祖先节点
|
||||
|
||||
@ -13,7 +13,7 @@ public interface CooperateShipFoundationService {
|
||||
* @param filterPersonId
|
||||
* @param list
|
||||
*/
|
||||
void filterByPerson(Long filterPersonId, List<SaasCooperateShip> list);
|
||||
void filterByPerson(Long filterPersonId, List<SaasCooperateShip> list, Boolean includeExitPerson);
|
||||
|
||||
/**
|
||||
* 提取祖级的数据
|
||||
|
||||
@ -23,7 +23,7 @@ public class CooperateShipFoundationServiceImpl implements CooperateShipFoundati
|
||||
private final NodeUserQueryRepository nodeUserQueryRepository;
|
||||
|
||||
@Override
|
||||
public void filterByPerson(Long filterPersonId, List<SaasCooperateShip> list) {
|
||||
public void filterByPerson(Long filterPersonId, List<SaasCooperateShip> list, Boolean includeExitPerson) {
|
||||
|
||||
if (filterPersonId == null) {
|
||||
return;
|
||||
@ -32,6 +32,7 @@ public class CooperateShipFoundationServiceImpl implements CooperateShipFoundati
|
||||
Set<Long> personInNodeIds = nodeUserQueryRepository.list(NodeUserQueryRepository.ListReq.builder()
|
||||
.personId(filterPersonId)
|
||||
.organizationalNodeIds(organizationalNodeIds)
|
||||
.includeDeleted(includeExitPerson)
|
||||
.build())
|
||||
.stream().map(OrganizationalNodeUser::getTopNodeId).collect(Collectors.toSet());
|
||||
list.removeIf(t -> !personInNodeIds.contains(t.getOrganizationalNodeId()));
|
||||
|
||||
@ -125,11 +125,11 @@ public class CooperateShipServiceImpl implements CooperateShipService {
|
||||
public List<OrgCooperateShipDTO> list(ListOrgCooperateShipReq req) {
|
||||
|
||||
// 全局变量定义:是否查询当前节点的人员
|
||||
boolean isFilterCurrentNodeByPerson = ObjectUtil.isNotNull(req.getFilterPersonId()) &&
|
||||
Objects.equals(req.getFilterPersonType(), ListOrgCooperateShipReq.FILTER_PERSON_TYPE_CURRENT_NODE);
|
||||
boolean isFilterCurrentNodeByPerson = ObjectUtil.isNotNull(req.getFilterByPersonId()) &&
|
||||
Objects.equals(req.getFilterMethod(), ListOrgCooperateShipReq.FILTER_PERSON_TYPE_CURRENT_NODE);
|
||||
// 全局变量定义:是否查询当前节点及以下节点的人员
|
||||
boolean isFilterCurrentAndBelowByPerson = !isFilterCurrentNodeByPerson && ObjectUtil.isNotNull(req.getFilterPersonId())
|
||||
&& Objects.equals(req.getFilterPersonType(), ListOrgCooperateShipReq.FILTER_PERSON_TYPE_CURRENT_AND_BELOW_NODE);
|
||||
boolean isFilterCurrentAndBelowByPerson = !isFilterCurrentNodeByPerson && ObjectUtil.isNotNull(req.getFilterByPersonId())
|
||||
&& Objects.equals(req.getFilterMethod(), ListOrgCooperateShipReq.FILTER_PERSON_TYPE_CURRENT_AND_BELOW_NODE);
|
||||
|
||||
// 根据入参查询数据
|
||||
List<SaasCooperateShip> currentNodeList = cooperateShipQueryRepository.list(
|
||||
@ -150,7 +150,7 @@ public class CooperateShipServiceImpl implements CooperateShipService {
|
||||
|
||||
// 根据person过滤当前节点
|
||||
if (isFilterCurrentNodeByPerson) {
|
||||
cooperateShipFoundationService.filterByPerson(req.getFilterPersonId(), currentNodeList);
|
||||
cooperateShipFoundationService.filterByPerson(req.getFilterByPersonId(), currentNodeList, req.getFilterIncludeExitPerson());
|
||||
if (CollUtil.isEmpty(currentNodeList)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
@ -170,20 +170,20 @@ public class CooperateShipServiceImpl implements CooperateShipService {
|
||||
// 是否查询父级节点
|
||||
if (BooleanUtil.isTrue(req.getIncludeAncestors())) {
|
||||
Set<Long> ancestorIds = cooperateShipFoundationService.extractAncestorIds(currentNodeList);
|
||||
List<SaasCooperateShip> ancestorShipNodes = cooperateShipQueryRepository.list(CooperateShipQueryRepository.ListReq.builder().ids(ancestorIds).build());
|
||||
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, ",");
|
||||
List<SaasCooperateShip> descendantShipNodes = cooperateShipQueryRepository.list(
|
||||
CooperateShipQueryRepository.ListReq.builder()
|
||||
.statuses(req.getStatuses())
|
||||
.pathsRight(paths).build());
|
||||
resultNodeList.addAll(descendantShipNodes);
|
||||
// 是否查询当前节点及以下节点的人员
|
||||
if (isFilterCurrentAndBelowByPerson) {
|
||||
cooperateShipFoundationService.filterByPerson(req.getFilterPersonId(), resultNodeList);
|
||||
cooperateShipFoundationService.filterByPerson(req.getFilterByPersonId(), resultNodeList, req.getFilterIncludeExitPerson());
|
||||
}
|
||||
}
|
||||
|
||||
@ -192,11 +192,12 @@ public class CooperateShipServiceImpl implements CooperateShipService {
|
||||
Set<Long> ids = cooperateShipFoundationService.extract(currentNodeList, SaasCooperateShip::getId);
|
||||
List<SaasCooperateShip> descendantShipNodes = cooperateShipQueryRepository.list(
|
||||
CooperateShipQueryRepository.ListReq.builder()
|
||||
.statuses(req.getStatuses())
|
||||
.parentIds(ids).build());
|
||||
resultNodeList.addAll(descendantShipNodes);
|
||||
// 是否查询当前节点及以下节点的人员
|
||||
if (isFilterCurrentAndBelowByPerson) {
|
||||
cooperateShipFoundationService.filterByPerson(req.getFilterPersonId(), resultNodeList);
|
||||
cooperateShipFoundationService.filterByPerson(req.getFilterByPersonId(), resultNodeList, req.getFilterIncludeExitPerson());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user