feat:[REQ-3282]实现协同关系方查询接口
This commit is contained in:
parent
0fea429003
commit
0e2b853c8f
@ -7,6 +7,7 @@ import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Set;
|
||||
|
||||
@NoArgsConstructor
|
||||
@ -14,67 +15,111 @@ import java.util.Set;
|
||||
@Data
|
||||
@Builder
|
||||
public class ListOrgCooperateShipReq {
|
||||
@CriteriaField
|
||||
private Long id;
|
||||
/**
|
||||
* 协同关系集合
|
||||
*/
|
||||
@CriteriaField(field = "id", operator = Operator.IN)
|
||||
private Set<Long> ids;
|
||||
@CriteriaField
|
||||
private Long parentId;
|
||||
@CriteriaField(field = "parentId", operator = Operator.IN)
|
||||
private Set<Long> parentIds;
|
||||
@Builder.Default
|
||||
private Set<Long> ids = Collections.emptySet();
|
||||
|
||||
/**
|
||||
* 用于遍历数据
|
||||
* 工作台id
|
||||
*/
|
||||
@CriteriaField(field = "id", operator = Operator.GT)
|
||||
private Long idGt;
|
||||
|
||||
/**
|
||||
* 工作台ID
|
||||
*/
|
||||
@CriteriaField
|
||||
private Long workspaceId;
|
||||
@CriteriaField(field = "workspaceId", operator = Operator.IN)
|
||||
private Long workspaceIds;
|
||||
|
||||
@CriteriaField
|
||||
private Integer workspaceType;
|
||||
@CriteriaField(field = "workspaceType", operator = Operator.IN)
|
||||
private Set<Integer> workspaceTypes;
|
||||
|
||||
@CriteriaField
|
||||
private Integer status;
|
||||
@CriteriaField(field = "status", operator = Operator.IN)
|
||||
private Set<Integer> statuses;
|
||||
|
||||
@CriteriaField
|
||||
private Integer cooperateType;
|
||||
@CriteriaField(field = "cooperateType", operator = Operator.IN)
|
||||
private Set<Integer> cooperateTypes;
|
||||
|
||||
|
||||
@CriteriaField
|
||||
private Integer partnerShip;
|
||||
@CriteriaField(field = "partnerShip", operator = Operator.IN)
|
||||
private Set<Integer> partnerShips;
|
||||
@Builder.Default
|
||||
private Set<Long> workspaceIds = Collections.emptySet();
|
||||
|
||||
/**
|
||||
* 组织节点id
|
||||
* 工作台类型
|
||||
*/
|
||||
@CriteriaField
|
||||
private Long organizationalNodeId;
|
||||
@CriteriaField(field = "organizationalNodeId", operator = Operator.IN)
|
||||
private Set<Long> organizationalNodeIds;
|
||||
@CriteriaField(field = "workspaceType", operator = Operator.IN)
|
||||
@Builder.Default
|
||||
private Set<Integer> workspaceType = Collections.emptySet();
|
||||
|
||||
@CriteriaField
|
||||
private Long organizationalUnitId;
|
||||
/**
|
||||
* 单位id集合(如果是班组则插入队伍id)
|
||||
*/
|
||||
@CriteriaField(field = "organizationalUnitId", operator = Operator.IN)
|
||||
private Long organizationalUnitIds;
|
||||
@Builder.Default
|
||||
private Set<Long> ouIds = Collections.emptySet();
|
||||
|
||||
@CriteriaField(ignore = true)
|
||||
private Long personId;
|
||||
/**
|
||||
* 指定的协同关系类型
|
||||
*/
|
||||
@CriteriaField(field = "cooperateType", operator = Operator.IN)
|
||||
@Builder.Default
|
||||
private Set<Integer> includeCooperateTypes = Collections.emptySet();
|
||||
/**
|
||||
* 待排除的协同关系类型
|
||||
*/
|
||||
@CriteriaField(field = "cooperateType", operator = Operator.NOT_IN)
|
||||
@Builder.Default
|
||||
private Set<Integer> excludeCooperateTypes = Collections.emptySet();
|
||||
|
||||
@CriteriaField(ignore = true)
|
||||
private Boolean needParent;
|
||||
/**
|
||||
* 节点id
|
||||
*/
|
||||
@CriteriaField(field = "organizationalNodeId", operator = Operator.IN)
|
||||
@Builder.Default
|
||||
private Set<Long> organizationNodeIds = Collections.emptySet();
|
||||
|
||||
/**
|
||||
* 合作关系 1.合作 2.直属
|
||||
*/
|
||||
@CriteriaField(field = "partnerShip", operator = Operator.IN)
|
||||
@Builder.Default
|
||||
private Set<Integer> partnerShips = Collections.emptySet();
|
||||
|
||||
|
||||
/**
|
||||
* 在场状态集合
|
||||
*/
|
||||
@CriteriaField(field = "status", operator = Operator.IN)
|
||||
@Builder.Default
|
||||
private Set<Integer> statuses = Collections.emptySet();
|
||||
|
||||
/**
|
||||
* 需要过滤的personId
|
||||
* personId
|
||||
*/
|
||||
private Long filterPersonId;
|
||||
|
||||
/**
|
||||
* 当personId有值时,为必填项
|
||||
* 1只过滤当前节点数据 2过滤当前节点及以下数据
|
||||
*/
|
||||
private Integer filterPersonType;
|
||||
|
||||
/**
|
||||
* 是否过滤工人
|
||||
*/
|
||||
@Builder.Default
|
||||
private Boolean isFilterWorker = false;
|
||||
|
||||
|
||||
/**
|
||||
* 人员过滤是否包含已退场
|
||||
*/
|
||||
@Builder.Default
|
||||
private Boolean includeExitPerson = false;
|
||||
|
||||
/**
|
||||
* 是否查询祖先节点
|
||||
*/
|
||||
@Builder.Default
|
||||
private Boolean isSelectAncestors = false;
|
||||
|
||||
/**
|
||||
* 是否查询子孙节点
|
||||
*/
|
||||
@Builder.Default
|
||||
private Boolean isSelectDescendant = false;
|
||||
|
||||
/**
|
||||
* 条件:当需要查询上下级数据时启用
|
||||
* 是否只查一级
|
||||
*/
|
||||
@Builder.Default
|
||||
private Boolean isSelectLevelOne = false;
|
||||
|
||||
}
|
||||
|
||||
@ -90,28 +90,4 @@ public class OrgCooperateShipDTO implements Serializable {
|
||||
*/
|
||||
private JSONObject ext;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createAt;
|
||||
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
private Date updateAt;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 修改人
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 是否删除
|
||||
*/
|
||||
private Long isDelete = 0L;
|
||||
}
|
||||
|
||||
@ -16,36 +16,109 @@ import java.util.Set;
|
||||
@Data
|
||||
@Builder
|
||||
public class ListNodeReq implements IPageReq {
|
||||
@CriteriaField
|
||||
private Long id;
|
||||
@CriteriaField(field = "id", operator = Operator.IN)
|
||||
/**
|
||||
* 页数
|
||||
*/
|
||||
private Integer page;
|
||||
|
||||
/**
|
||||
* 条数
|
||||
*/
|
||||
private Integer pageSize;
|
||||
|
||||
/**
|
||||
* ids
|
||||
*/
|
||||
private Set<Long> ids;
|
||||
@CriteriaField
|
||||
private Long parentId;
|
||||
@CriteriaField(field = "parentId", operator = Operator.IN)
|
||||
private Set<Long> parentIds;
|
||||
/**
|
||||
* 用于遍历数据
|
||||
*/
|
||||
@CriteriaField(field = "id", operator = Operator.GT)
|
||||
private Long idGt;
|
||||
@CriteriaField
|
||||
private Long organizationalUnitId;
|
||||
@CriteriaField(field = "organizationalUnitId", operator = Operator.IN)
|
||||
private Long organizationalUnitIds;
|
||||
|
||||
@CriteriaField(ignore = true)
|
||||
private Boolean needParent;
|
||||
|
||||
@CriteriaField(ignore = true)
|
||||
@Builder.Default
|
||||
Integer page = 1;
|
||||
/**
|
||||
* 最大支持1000条数据,不支持单页超过1000的查询,接入方按需分页
|
||||
* 组织单位ids
|
||||
*/
|
||||
@Builder.Default
|
||||
@CriteriaField(ignore = true)
|
||||
Integer pageSize = 1000;
|
||||
@CriteriaField(ignore = true)
|
||||
List<String> sort;
|
||||
private Set<Long> ouIds;
|
||||
|
||||
/**
|
||||
* 节点名称集合
|
||||
*/
|
||||
private Set<String> nodeNames;
|
||||
|
||||
/**
|
||||
* 节点名称查询(模糊)
|
||||
*/
|
||||
private Set<String> nodeName;
|
||||
|
||||
/**
|
||||
* 指定部门类型
|
||||
*/
|
||||
private Set<Integer> includeOrgNodeTypes;
|
||||
/**
|
||||
* 排除部门类型
|
||||
*/
|
||||
private Set<Integer> excludeOrgNodeTypes;
|
||||
|
||||
/**
|
||||
* 顶级节点ID集合
|
||||
*/
|
||||
private Set<Long> topNodeIds;
|
||||
|
||||
/**
|
||||
* 是否查询祖先节点
|
||||
*/
|
||||
private Boolean isSelectAncestors;
|
||||
|
||||
/**
|
||||
* 是否查询子孙节点
|
||||
*/
|
||||
private Boolean isSelectDescendant;
|
||||
|
||||
/**
|
||||
* 是否查询节点用户
|
||||
*/
|
||||
private Boolean isSelectNodeUser;
|
||||
|
||||
/**
|
||||
* 是否查询删除的
|
||||
*/
|
||||
private Boolean isSelectDelete;
|
||||
|
||||
/**
|
||||
* 数据权限缓存数据key
|
||||
*/
|
||||
private String dataPermissionCacheKey;
|
||||
|
||||
/**
|
||||
* 只返回topNode
|
||||
*/
|
||||
private Boolean isSelectTopNodeOnly;
|
||||
|
||||
|
||||
/**
|
||||
* 根据workspace和ouId组合查询
|
||||
*/
|
||||
private Set<WorkspaceOuPair> workspaceOuPairs;
|
||||
|
||||
/**
|
||||
* 需要返回管理员信息
|
||||
*/
|
||||
private Boolean needAdmin;
|
||||
|
||||
/**
|
||||
* 岗位编码
|
||||
*/
|
||||
private Set<String> jobCodes;
|
||||
|
||||
/**
|
||||
* 当前用户personId
|
||||
*/
|
||||
private Long personId;
|
||||
|
||||
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Data
|
||||
@Builder
|
||||
public static class WorkspaceOuPair {
|
||||
private Long workspaceId;
|
||||
private Long ouId;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -18,8 +18,8 @@ import lombok.experimental.Accessors;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* (SaasCooperateShip)表实体类
|
||||
@ -37,6 +37,9 @@ import java.util.Objects;
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class SaasCooperateShip implements Serializable {
|
||||
|
||||
|
||||
public static final String PATH_SPLITER = ",";
|
||||
|
||||
/**
|
||||
* 主健
|
||||
*/
|
||||
@ -164,5 +167,37 @@ public class SaasCooperateShip implements Serializable {
|
||||
private final String desc;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否为根节点
|
||||
* @param path
|
||||
* @return
|
||||
*/
|
||||
public boolean isRootNode(String path) {
|
||||
return !path.contains(PATH_SPLITER);
|
||||
}
|
||||
|
||||
/**
|
||||
* 从path中提取祖先的节点id
|
||||
* @return
|
||||
*/
|
||||
public List<Long> parseAncestorIdsFromPath() {
|
||||
if (isRootNode(path)) {
|
||||
// 根节点没有父节点
|
||||
return Collections.emptyList();
|
||||
}
|
||||
List<Long> parentIds = parsePath(path);
|
||||
// 移除路径的最后一个结点
|
||||
return parentIds.subList(0, parentIds.size() - 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析path
|
||||
* @param path
|
||||
* @return
|
||||
*/
|
||||
public List<Long> parsePath(String path) {
|
||||
return Arrays.stream(path.split(PATH_SPLITER)).map(e -> Long.valueOf(e.trim())).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -15,13 +15,13 @@ import java.util.Optional;
|
||||
|
||||
public interface CooperateShipQueryRepository {
|
||||
|
||||
List<CooperateShipResp> list(ListOrgCooperateShipReq req);
|
||||
List<SaasCooperateShip> list(ListOrgCooperateShipReq req);
|
||||
|
||||
default CooperateShipResp one(OneReq req) {
|
||||
default SaasCooperateShip one(OneReq req) {
|
||||
return oneOpt(req).orElse(null);
|
||||
}
|
||||
|
||||
default Optional<CooperateShipResp> oneOpt(OneReq req) {
|
||||
default Optional<SaasCooperateShip> oneOpt(OneReq req) {
|
||||
req.check();
|
||||
ListOrgCooperateShipReq listReq = BeanUtil.toBean(req, ListOrgCooperateShipReq.class);
|
||||
return list(listReq).stream().findFirst();
|
||||
@ -45,7 +45,7 @@ public interface CooperateShipQueryRepository {
|
||||
@AllArgsConstructor
|
||||
@Data
|
||||
@SuperBuilder
|
||||
class CooperateShipResp extends SaasCooperateShip {
|
||||
class CooperateShip extends SaasCooperateShip {
|
||||
// 按需扩展字段,占个位。避免报错
|
||||
private String todo;
|
||||
}
|
||||
|
||||
@ -27,29 +27,29 @@ public class CooperateShipQueryRepositoryImpl implements CooperateShipQueryRepos
|
||||
private final NodeUserQueryRepository nodeUserQueryRepository;
|
||||
|
||||
@Override
|
||||
public List<CooperateShipResp> list(ListOrgCooperateShipReq req) {
|
||||
public List<SaasCooperateShip> list(ListOrgCooperateShipReq 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();
|
||||
}
|
||||
List<CooperateShipResp> results = cooperateShipDao.list(wrapper)
|
||||
.stream().map(e -> BeanUtil.toBean(e, CooperateShipResp.class)).collect(Collectors.toList());
|
||||
List<SaasCooperateShip> results = cooperateShipDao.list(wrapper)
|
||||
.stream().map(e -> BeanUtil.toBean(e, SaasCooperateShip.class)).collect(Collectors.toList());
|
||||
|
||||
results = filterByPersonIds(results, req);
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
private List<CooperateShipResp> filterByPersonIds(List<CooperateShipResp> results, ListOrgCooperateShipReq req) {
|
||||
if (req.getPersonId() == null) {
|
||||
private List<SaasCooperateShip> filterByPersonIds(List<SaasCooperateShip> results, ListOrgCooperateShipReq req) {
|
||||
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.getPersonId())
|
||||
.personId(req.getFilterPersonId())
|
||||
.organizationalNodeIds(organizationalNodeIds)
|
||||
.build())
|
||||
.stream().map(NodeUserQueryRepository.NodeUserResp::getTopNodeId).collect(Collectors.toSet());
|
||||
|
||||
@ -0,0 +1,23 @@
|
||||
package cn.axzo.orgmanax.server.cooperateship.foundation;
|
||||
|
||||
import cn.axzo.orgmanax.infra.dao.cooperateship.entity.SaasCooperateShip;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public interface CooperateShipFoundationService {
|
||||
|
||||
/**
|
||||
* 通过person进行过滤
|
||||
* @param filterPersonId
|
||||
* @param list
|
||||
*/
|
||||
void filterByPerson(Long filterPersonId, List<SaasCooperateShip> list);
|
||||
|
||||
/**
|
||||
* 提取祖级的数据
|
||||
* @param list
|
||||
* @return
|
||||
*/
|
||||
Set<Long> extractAncestorIds(List<SaasCooperateShip> list);
|
||||
}
|
||||
@ -0,0 +1,44 @@
|
||||
package cn.axzo.orgmanax.server.cooperateship.foundation.impl;
|
||||
|
||||
import cn.axzo.orgmanax.api.nodeuser.req.ListNodeUserReq;
|
||||
import cn.axzo.orgmanax.infra.dao.cooperateship.entity.SaasCooperateShip;
|
||||
import cn.axzo.orgmanax.infra.dao.nodeuser.repository.NodeUserQueryRepository;
|
||||
import cn.axzo.orgmanax.server.cooperateship.foundation.CooperateShipFoundationService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class CooperateShipFoundationServiceImpl implements CooperateShipFoundationService {
|
||||
|
||||
|
||||
private final NodeUserQueryRepository nodeUserQueryRepository;
|
||||
|
||||
@Override
|
||||
public void filterByPerson(Long filterPersonId, List<SaasCooperateShip> list) {
|
||||
|
||||
if (filterPersonId == null) {
|
||||
return;
|
||||
}
|
||||
Set<Long> organizationalNodeIds = list.stream().map(SaasCooperateShip::getOrganizationalNodeId).collect(Collectors.toSet());
|
||||
Set<Long> personInNodeIds = nodeUserQueryRepository.list(ListNodeUserReq.builder()
|
||||
.personId(filterPersonId)
|
||||
.organizationalNodeIds(organizationalNodeIds)
|
||||
.build())
|
||||
.stream().map(NodeUserQueryRepository.NodeUserResp::getTopNodeId).collect(Collectors.toSet());
|
||||
list.removeIf(t -> !personInNodeIds.contains(t.getOrganizationalNodeId()));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<Long> extractAncestorIds(List<SaasCooperateShip> list) {
|
||||
return list.stream()
|
||||
.flatMap(e -> e.parseAncestorIdsFromPath().stream())
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
}
|
||||
@ -3,6 +3,7 @@ package cn.axzo.orgmanax.server.cooperateship.service;
|
||||
import cn.axzo.foundation.exception.Axssert;
|
||||
import cn.axzo.orgmanax.api.cooperateship.req.ListOrgCooperateShipReq;
|
||||
import cn.axzo.orgmanax.api.cooperateship.resp.OrgCooperateShipDTO;
|
||||
import cn.axzo.orgmanax.infra.dao.cooperateship.entity.SaasCooperateShip;
|
||||
import cn.axzo.orgmanax.infra.dao.cooperateship.repository.CooperateShipQueryRepository;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
@ -13,7 +14,7 @@ import java.util.List;
|
||||
|
||||
public interface CooperateShipService {
|
||||
|
||||
CooperateShipQueryRepository.CooperateShipResp create(CreateReq req);
|
||||
SaasCooperateShip create(CreateReq req);
|
||||
|
||||
List<OrgCooperateShipDTO> list(ListOrgCooperateShipReq req);
|
||||
|
||||
|
||||
@ -9,26 +9,29 @@ 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;
|
||||
import cn.axzo.orgmanax.infra.dao.cooperateship.repository.CooperateShipQueryRepository;
|
||||
import cn.axzo.orgmanax.infra.dao.cooperateship.repository.CooperateShipUpsertRepository;
|
||||
import cn.axzo.orgmanax.infra.dao.node.repository.NodeQueryRepository;
|
||||
import cn.axzo.orgmanax.infra.dao.nodeuser.repository.NodeUserQueryRepository;
|
||||
import cn.axzo.orgmanax.infra.dao.unit.repository.UnitQueryRepository;
|
||||
import cn.axzo.orgmanax.server.cooperateship.event.inner.CooperateShipEventType;
|
||||
import cn.axzo.orgmanax.server.cooperateship.event.inner.payload.CoopeateShipUpsertedPayload;
|
||||
import cn.axzo.orgmanax.server.cooperateship.foundation.CooperateShipFoundationService;
|
||||
import cn.axzo.orgmanax.server.cooperateship.service.CooperateShipService;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.BooleanUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@ -53,9 +56,11 @@ public class CooperateShipServiceImpl implements CooperateShipService {
|
||||
private final UnitQueryRepository unitQueryRepository;
|
||||
private final WorkspaceGateway workspaceGateway;
|
||||
private final EventProducer eventProducer;
|
||||
private final CooperateShipFoundationService cooperateShipFoundationService;
|
||||
private final NodeUserQueryRepository nodeUserQueryRepository;
|
||||
|
||||
@Override
|
||||
public CooperateShipQueryRepository.CooperateShipResp create(CreateReq req) {
|
||||
public SaasCooperateShip create(CreateReq req) {
|
||||
// node check
|
||||
NodeQueryRepository.NodeResp node = nodeQueryRepository.oneOpt(NodeQueryRepository.OneReq.builder().id(req.getOrganizationalNodeId()).build())
|
||||
.orElseThrow(() -> BizResultCode.ENTITY_NOT_FOUND.toException("部门不存在{}", req.getOrganizationalNodeId()));
|
||||
@ -63,7 +68,7 @@ public class CooperateShipServiceImpl implements CooperateShipService {
|
||||
// workspace check
|
||||
WorkspaceDetailResp workspace = workspaceGateway.getDetail(WorkspaceDetailReq.builder().id(req.getWorkspaceId()).build());
|
||||
Axssert.checkNonNull(workspace, "工作台不存在{}", req.getWorkspaceId());
|
||||
CooperateShipQueryRepository.CooperateShipResp parentShip = null;
|
||||
SaasCooperateShip parentShip = null;
|
||||
if (!ALLOWED_TOP_COOPERATE_TYPES.contains(req.getCooperateType())) {
|
||||
Axssert.check(req.getParentId() > 0L, BizResultCode.INVALID_PARAM, "父级协同类型不能为空");
|
||||
parentShip = cooperateShipQueryRepository
|
||||
@ -119,9 +124,26 @@ public class CooperateShipServiceImpl implements CooperateShipService {
|
||||
|
||||
@Override
|
||||
public List<OrgCooperateShipDTO> list(ListOrgCooperateShipReq req) {
|
||||
List<OrgCooperateShipDTO> results = cooperateShipQueryRepository.list(req).stream()
|
||||
.map(e -> BeanUtil.toBean(e, OrgCooperateShipDTO.class)).collect(Collectors.toList());
|
||||
// assemble other data
|
||||
return results;
|
||||
|
||||
boolean isFilterCurrentNodeByPerson = ObjectUtil.isNotNull(req.getFilterPersonId()) && Objects.equals(req.getFilterPersonType(), 1);
|
||||
|
||||
// 根据入参查询数据
|
||||
List<SaasCooperateShip> list = cooperateShipQueryRepository.list(req);
|
||||
if (CollUtil.isEmpty(list)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
// 是否根据person过滤当前节点
|
||||
if (isFilterCurrentNodeByPerson) {
|
||||
cooperateShipFoundationService.filterByPerson(req.getFilterPersonId(), list);
|
||||
}
|
||||
|
||||
// 是否查询祖先
|
||||
if (BooleanUtil.isTrue(req.getIsSelectAncestors())) {
|
||||
Set<Long> ancestorIds = cooperateShipFoundationService.extractAncestorIds(list);
|
||||
List<SaasCooperateShip> ancestorShipNodes = cooperateShipQueryRepository.list(ListOrgCooperateShipReq.builder().ids(ancestorIds).build());
|
||||
list.addAll(ancestorShipNodes);
|
||||
}
|
||||
return BeanUtil.copyToList(list, OrgCooperateShipDTO.class);
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,6 +7,7 @@ import cn.axzo.orgmanax.common.config.BizResultCode;
|
||||
import cn.axzo.orgmanax.infra.client.profile.PersonProfileGateway;
|
||||
import cn.axzo.orgmanax.infra.client.profile.dto.ProfileIdentityResp;
|
||||
import cn.axzo.orgmanax.infra.client.profile.dto.ProfilePersonResp;
|
||||
import cn.axzo.orgmanax.infra.dao.cooperateship.entity.SaasCooperateShip;
|
||||
import cn.axzo.orgmanax.infra.dao.cooperateship.repository.CooperateShipQueryRepository;
|
||||
import cn.axzo.orgmanax.infra.dao.node.entity.OrganizationalNode;
|
||||
import cn.axzo.orgmanax.infra.dao.node.repository.NodeQueryRepository;
|
||||
@ -134,7 +135,7 @@ public class NodeUserFoundationServiceImpl implements NodeUserFoundationService
|
||||
}
|
||||
return cooperateShipQueryRepository.oneOpt(CooperateShipQueryRepository.OneReq.builder()
|
||||
.organizationalNodeId(node.getOrganizationalUnitId())
|
||||
.build()).map(CooperateShipQueryRepository.CooperateShipResp::getWorkspaceId)
|
||||
.build()).map(SaasCooperateShip::getWorkspaceId)
|
||||
.orElseThrow(() -> BizResultCode.ENTITY_NOT_FOUND.toException("部门人员所属项目未找到,请稍后重试"));
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user