feat:[REQ-3282] 暂时提交

This commit is contained in:
liuyang 2024-12-23 14:14:57 +08:00
parent 3da7df020d
commit 2761939b14
6 changed files with 36 additions and 42 deletions

View File

@ -1,7 +1,5 @@
package cn.axzo.orgmanax.api.cooperateship.req;
import cn.axzo.foundation.dao.support.wrapper.CriteriaField;
import cn.axzo.foundation.dao.support.wrapper.Operator;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@ -66,26 +64,17 @@ public class ListOrgCooperateShipReq {
@Builder.Default
private Set<Integer> partnerShips = Collections.emptySet();
/**
* 在场状态集合
*/
@Builder.Default
private Set<Integer> statuses = Collections.emptySet();
/**
* 查询策略使用取模方式自由组合进行数据查询
* 参数说明1当前节点 2父节点 4祖父节点 8子节点 16孙节点
* 案例查询当前节点及子孙节点则传3, 当前节点及祖父节点则传5当前节点
*/
@Builder.Default
private Integer selectStrategy = 1;
/**
* 需要过滤的personId
* personId
*/
private Long filterByPersonId ;
private Long filterPersonId;
/**
* 当personId有值时为必填项
@ -129,11 +118,4 @@ public class ListOrgCooperateShipReq {
@Builder.Default
private Boolean includeChildren = false;
/**
* 条件当需要查询上下级数据时启用
* 是否只查一级
*/
@Builder.Default
private Boolean isSelectLevelOne = false;
}

View File

@ -121,7 +121,7 @@ public interface CooperateShipQueryRepository {
/**
* path右值
*/
@CriteriaField(field = "path", operator = Operator.IN)
@CriteriaField(ignore = true)
@Builder.Default
private Set<String> pathsRight = Collections.emptySet();

View File

@ -9,7 +9,6 @@ import cn.axzo.orgmanax.infra.dao.cooperateship.repository.CooperateShipQueryRep
import cn.axzo.orgmanax.infra.dao.nodeuser.repository.NodeUserQueryRepository;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -31,12 +30,6 @@ public class CooperateShipQueryRepositoryImpl implements CooperateShipQueryRepos
@Override
public List<SaasCooperateShip> list(CooperateShipQueryRepository.ListReq req) {
QueryWrapper<SaasCooperateShip> wrapper = QueryWrapperHelper.fromBean(req, SaasCooperateShip.class);
if (wrapper.isEmptyOfWhere()) {
//
log.warn("CooperateShipResp empty of where query. return empty list. req = {}", req);
return Collections.emptyList();
}
// 查询子集
if (CollUtil.isNotEmpty(req.getPathsRight())) {
// 遍历pathsRight转换成wrapper
@ -46,19 +39,24 @@ public class CooperateShipQueryRepositoryImpl implements CooperateShipQueryRepos
}
});
}
if (wrapper.isEmptyOfWhere()) {
log.warn("CooperateShipResp empty of where query. return empty list. req = {}", req);
return Collections.emptyList();
}
return cooperateShipDao.list(wrapper)
.stream().map(e -> BeanUtil.toBean(e, SaasCooperateShip.class)).collect(Collectors.toList());
}
private List<SaasCooperateShip> filterByPersonIds(List<SaasCooperateShip> results, ListOrgCooperateShipReq req) {
if (req.getFilterByPersonId() == null) {
if (req.getFilterPersonId() == null) {
// filter by personIds
return results;
}
Set<Long> organizationalNodeIds = results.stream().map(SaasCooperateShip::getOrganizationalNodeId).collect(Collectors.toSet());
Set<Long> personInNodeIds = nodeUserQueryRepository.list(ListNodeUserReq.builder()
.personId(req.getFilterByPersonId())
.personId(req.getFilterPersonId())
.organizationalNodeIds(organizationalNodeIds)
.build())
.stream().map(NodeUserQueryRepository.NodeUserResp::getTopNodeId).collect(Collectors.toSet());

View File

@ -4,6 +4,7 @@ import cn.axzo.orgmanax.infra.dao.cooperateship.entity.SaasCooperateShip;
import java.util.List;
import java.util.Set;
import java.util.function.Function;
public interface CooperateShipFoundationService {
@ -35,4 +36,12 @@ public interface CooperateShipFoundationService {
* @return
*/
Set<Long> extractParentIds(List<SaasCooperateShip> currentNodeList);
/**
* 提取集合中的字段值
* @param currentNodeList
* @param function
* @return
*/
<T> Set<T> extract(List<SaasCooperateShip> currentNodeList, Function<SaasCooperateShip, T> function);
}

View File

@ -10,6 +10,7 @@ import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
@RequiredArgsConstructor
@ -49,7 +50,12 @@ public class CooperateShipFoundationServiceImpl implements CooperateShipFoundati
@Override
public Set<Long> extractParentIds(List<SaasCooperateShip> list) {
return list.stream().filter(t -> t.getParentId() != 0).map(SaasCooperateShip::getParentId).collect(Collectors.toSet());
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) {
return currentNodeList.stream().map(function).collect(Collectors.toSet());
}
}

View File

@ -9,7 +9,6 @@ import cn.axzo.orgmanax.api.cooperateship.req.ListOrgCooperateShipReq;
import cn.axzo.orgmanax.api.cooperateship.resp.CooperateShipStatusEnum;
import cn.axzo.orgmanax.api.cooperateship.resp.CooperateShipTypeEnum;
import cn.axzo.orgmanax.api.cooperateship.resp.OrgCooperateShipDTO;
import cn.axzo.orgmanax.api.nodeuser.req.ListNodeUserReq;
import cn.axzo.orgmanax.common.config.BizResultCode;
import cn.axzo.orgmanax.infra.client.workspace.WorkspaceGateway;
import cn.axzo.orgmanax.infra.dao.cooperateship.entity.SaasCooperateShip;
@ -32,7 +31,6 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@Service
@ -127,10 +125,10 @@ public class CooperateShipServiceImpl implements CooperateShipService {
public List<OrgCooperateShipDTO> list(ListOrgCooperateShipReq req) {
// 全局变量定义是否查询当前节点的人员
boolean isFilterCurrentNodeByPerson = ObjectUtil.isNotNull(req.getFilterByPersonId()) &&
boolean isFilterCurrentNodeByPerson = ObjectUtil.isNotNull(req.getFilterPersonId()) &&
Objects.equals(req.getFilterPersonType(), ListOrgCooperateShipReq.FILTER_PERSON_TYPE_CURRENT_NODE);
// 全局变量定义是否查询当前节点及以下节点的人员
boolean isFilterCurrentAndBelowByPerson = !isFilterCurrentNodeByPerson && ObjectUtil.isNotNull(req.getFilterByPersonId())
boolean isFilterCurrentAndBelowByPerson = !isFilterCurrentNodeByPerson && ObjectUtil.isNotNull(req.getFilterPersonId())
&& Objects.equals(req.getFilterPersonType(), ListOrgCooperateShipReq.FILTER_PERSON_TYPE_CURRENT_AND_BELOW_NODE);
// 根据入参查询数据
@ -152,7 +150,7 @@ public class CooperateShipServiceImpl implements CooperateShipService {
// 根据person过滤当前节点
if (isFilterCurrentNodeByPerson) {
cooperateShipFoundationService.filterByPerson(req.getFilterByPersonId(), currentNodeList);
cooperateShipFoundationService.filterByPerson(req.getFilterPersonId(), currentNodeList);
if (CollUtil.isEmpty(currentNodeList)) {
return Collections.emptyList();
}
@ -176,7 +174,7 @@ public class CooperateShipServiceImpl implements CooperateShipService {
}
// 是否查询子节点
if (BooleanUtil.isTrue(req.getIncludeChildren())) {
if (BooleanUtil.isTrue(req.getIncludeDescendants())) {
Set<String> paths = cooperateShipFoundationService.extractPaths(currentNodeList, ",");
List<SaasCooperateShip> descendantShipNodes = cooperateShipQueryRepository.list(
CooperateShipQueryRepository.ListReq.builder()
@ -184,24 +182,25 @@ public class CooperateShipServiceImpl implements CooperateShipService {
resultNodeList.addAll(descendantShipNodes);
// 是否查询当前节点及以下节点的人员
if (isFilterCurrentAndBelowByPerson) {
cooperateShipFoundationService.filterByPerson(req.getFilterByPersonId(), resultNodeList);
cooperateShipFoundationService.filterByPerson(req.getFilterPersonId(), resultNodeList);
}
}
// 是否查询子孙节点
if (BooleanUtil.isTrue(req.getIncludeDescendants())) {
Set<Long> parentIds = cooperateShipFoundationService.extractParentIds(currentNodeList);
if (BooleanUtil.isTrue(req.getIncludeChildren())) {
Set<Long> ids = cooperateShipFoundationService.extract(currentNodeList, SaasCooperateShip::getId);
List<SaasCooperateShip> descendantShipNodes = cooperateShipQueryRepository.list(
CooperateShipQueryRepository.ListReq.builder()
.parentIds(parentIds).build());
.parentIds(ids).build());
resultNodeList.addAll(descendantShipNodes);
// 是否查询当前节点及以下节点的人员
if (isFilterCurrentAndBelowByPerson) {
cooperateShipFoundationService.filterByPerson(req.getFilterByPersonId(), resultNodeList);
cooperateShipFoundationService.filterByPerson(req.getFilterPersonId(), resultNodeList);
}
}
// resultNodeList 根据path进行正序
resultNodeList.sort(Comparator.comparing(SaasCooperateShip::getPath));
return BeanUtil.copyToList(resultNodeList, OrgCooperateShipDTO.class);
}
}