feat(REQ-3282): WorkspaceOuPair放到dto.common包。
This commit is contained in:
parent
b5f89e591b
commit
6bc3228b00
@ -0,0 +1,15 @@
|
|||||||
|
package cn.axzo.orgmanax.dto.common;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
public class WorkspaceOuPair {
|
||||||
|
private Long workspaceId;
|
||||||
|
private Long ouId;
|
||||||
|
}
|
||||||
@ -1,6 +1,7 @@
|
|||||||
package cn.axzo.orgmanax.dto.node.req;
|
package cn.axzo.orgmanax.dto.node.req;
|
||||||
|
|
||||||
import cn.axzo.foundation.page.PageReqV2;
|
import cn.axzo.foundation.page.PageReqV2;
|
||||||
|
import cn.axzo.orgmanax.dto.common.WorkspaceOuPair;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
import lombok.experimental.SuperBuilder;
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
@ -118,13 +119,4 @@ public class ListNodeReq extends PageReqV2 {
|
|||||||
private Long personId;
|
private Long personId;
|
||||||
|
|
||||||
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
@Data
|
|
||||||
@Builder
|
|
||||||
public static class WorkspaceOuPair {
|
|
||||||
private Long workspaceId;
|
|
||||||
private Long ouId;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,8 +3,11 @@ package cn.axzo.orgmanax.dto.nodeuser.req;
|
|||||||
import cn.axzo.foundation.dao.support.wrapper.CriteriaField;
|
import cn.axzo.foundation.dao.support.wrapper.CriteriaField;
|
||||||
import cn.axzo.foundation.dao.support.wrapper.Operator;
|
import cn.axzo.foundation.dao.support.wrapper.Operator;
|
||||||
import cn.axzo.foundation.page.PageReqV2;
|
import cn.axzo.foundation.page.PageReqV2;
|
||||||
|
import cn.axzo.foundation.page.PageResp;
|
||||||
import cn.axzo.orgmanax.dto.common.DistinctRule;
|
import cn.axzo.orgmanax.dto.common.DistinctRule;
|
||||||
import cn.axzo.orgmanax.dto.common.IdentityPair;
|
import cn.axzo.orgmanax.dto.common.IdentityPair;
|
||||||
|
import cn.axzo.orgmanax.dto.nodeuser.dto.NodeUserDTO;
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
@ -239,6 +242,12 @@ public class ListNodeUserReq extends PageReqV2 {
|
|||||||
@CriteriaField(ignore = true)
|
@CriteriaField(ignore = true)
|
||||||
private Integer nodeState; // TODO: 待实现
|
private Integer nodeState; // TODO: 待实现
|
||||||
|
|
||||||
|
/**
|
||||||
|
* keyword。用 idNumber,phone,jobNumber精确匹配,或者realName模糊匹配
|
||||||
|
*/
|
||||||
|
@CriteriaField(ignore = true)
|
||||||
|
private String keyword;
|
||||||
|
|
||||||
// ~ 后置过滤的字段
|
// ~ 后置过滤的字段
|
||||||
/**
|
/**
|
||||||
* 包含的单位类型
|
* 包含的单位类型
|
||||||
@ -360,4 +369,5 @@ public class ListNodeUserReq extends PageReqV2 {
|
|||||||
|
|
||||||
private Boolean personProfile;
|
private Boolean personProfile;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -72,7 +72,6 @@ public interface NodeQueryRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@ -143,6 +142,16 @@ public interface NodeQueryRepository {
|
|||||||
@Builder.Default
|
@Builder.Default
|
||||||
private Boolean isSelectTopNodeOnly = false;
|
private Boolean isSelectTopNodeOnly = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否返回祖先节点 TODO:liuyang
|
||||||
|
*/
|
||||||
|
private Boolean needAncestorNode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据workspace和ouId组合查询
|
||||||
|
*/
|
||||||
|
private Set<cn.axzo.orgmanax.dto.common.WorkspaceOuPair> workspaceOuPairs;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,21 +3,24 @@ package cn.axzo.orgmanax.infra.dao.nodeuser.repository.impl;
|
|||||||
import cn.axzo.foundation.dao.support.converter.PageConverter;
|
import cn.axzo.foundation.dao.support.converter.PageConverter;
|
||||||
import cn.axzo.foundation.dao.support.mysql.QueryWrapperHelper;
|
import cn.axzo.foundation.dao.support.mysql.QueryWrapperHelper;
|
||||||
import cn.axzo.foundation.page.PageResp;
|
import cn.axzo.foundation.page.PageResp;
|
||||||
import cn.axzo.orgmanax.dto.node.req.ListNodeReq;
|
|
||||||
import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq;
|
import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq;
|
||||||
import cn.axzo.orgmanax.infra.dao.node.repository.NodeQueryRepository;
|
import cn.axzo.orgmanax.infra.dao.node.repository.NodeQueryRepository;
|
||||||
import cn.axzo.orgmanax.infra.dao.nodeuser.dao.NodeUserDao;
|
import cn.axzo.orgmanax.infra.dao.nodeuser.dao.NodeUserDao;
|
||||||
import cn.axzo.orgmanax.infra.dao.nodeuser.entity.OrganizationalNodeUser;
|
import cn.axzo.orgmanax.infra.dao.nodeuser.entity.OrganizationalNodeUser;
|
||||||
import cn.axzo.orgmanax.infra.dao.nodeuser.repository.NodeUserQueryRepository;
|
import cn.axzo.orgmanax.infra.dao.nodeuser.repository.NodeUserQueryRepository;
|
||||||
|
import cn.axzo.orgmanax.infra.dao.orgjob.entity.OrgJob;
|
||||||
import cn.axzo.orgmanax.infra.dao.orgjob.repository.OrgJobQueryRepository;
|
import cn.axzo.orgmanax.infra.dao.orgjob.repository.OrgJobQueryRepository;
|
||||||
import cn.axzo.orgmanax.infra.dao.unit.repository.UnitQueryRepository;
|
import cn.axzo.orgmanax.infra.dao.unit.repository.UnitQueryRepository;
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.BooleanUtil;
|
import cn.hutool.core.util.BooleanUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -39,8 +42,50 @@ public class NodeUserQueryRepositoryImpl implements NodeUserQueryRepository {
|
|||||||
@Override
|
@Override
|
||||||
public PageResp<NodeUserResp> page(ListNodeUserReq req) {
|
public PageResp<NodeUserResp> page(ListNodeUserReq req) {
|
||||||
IPage<OrganizationalNodeUser> page = PageConverter.toMybatis(req, OrganizationalNodeUser.class);
|
IPage<OrganizationalNodeUser> page = PageConverter.toMybatis(req, OrganizationalNodeUser.class);
|
||||||
|
PageResp<NodeUserResp> emptyPage = PageResp.<NodeUserResp>builder().size(req.getPageSize()).current(req.getPage()).total(0L).data(ImmutableList.of()).build();
|
||||||
QueryWrapper<OrganizationalNodeUser> wrapper = QueryWrapperHelper.fromBean(req, OrganizationalNodeUser.class);
|
QueryWrapper<OrganizationalNodeUser> wrapper = QueryWrapperHelper.fromBean(req, OrganizationalNodeUser.class);
|
||||||
// 查询参数过滤
|
// 查询参数处理 ~
|
||||||
|
// keyword
|
||||||
|
if (StrUtil.isNotBlank(req.getKeyword())) {
|
||||||
|
wrapper.and(w -> {
|
||||||
|
w.like("real_name", req.getKeyword())
|
||||||
|
.or().eq("phone", req.getKeyword())
|
||||||
|
.or().eq("job_number", req.getKeyword())
|
||||||
|
.or().eq("phone", req.getKeyword());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 处理删除标记
|
||||||
|
if (BooleanUtil.isTrue(req.getDeletedOnly())) {
|
||||||
|
wrapper.ne("is_delete", 0);
|
||||||
|
}
|
||||||
|
if (!BooleanUtil.isTrue(req.getIncludeDeleted())) {
|
||||||
|
wrapper.eq("is_delete", 0);
|
||||||
|
}
|
||||||
|
// jobIds查询 - 这里可以合并对orgJob的查询。后续优化。
|
||||||
|
if (CollUtil.isNotEmpty(req.getOrganizationalJobCodes())) {
|
||||||
|
Set<Long> jobIds = jobQueryRepository.list(OrgJobQueryRepository.ListReq.builder().codes(req.getOrganizationalJobCodes()).build())
|
||||||
|
.stream().map(OrgJob::getId).collect(Collectors.toSet());
|
||||||
|
if (jobIds.isEmpty()) {
|
||||||
|
return emptyPage;
|
||||||
|
}
|
||||||
|
wrapper.in("organizational_job_id", jobIds);
|
||||||
|
}
|
||||||
|
if (StrUtil.isNotBlank(req.getOrganizationalJobCode())) {
|
||||||
|
Set<Long> jobIds = jobQueryRepository.list(OrgJobQueryRepository.ListReq.builder().codes(req.getOrganizationalJobCodes()).build())
|
||||||
|
.stream().map(OrgJob::getId).collect(Collectors.toSet());
|
||||||
|
if (jobIds.isEmpty()) {
|
||||||
|
return emptyPage;
|
||||||
|
}
|
||||||
|
wrapper.eq("organizational_job_id", jobIds);
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(req.getOrganizationalJobNameLike())) {
|
||||||
|
Set<Long> jobIds = jobQueryRepository.list(OrgJobQueryRepository.ListReq.builder().nameLike(req.getOrganizationalJobNameLike()).build())
|
||||||
|
.stream().map(OrgJob::getId).collect(Collectors.toSet());
|
||||||
|
if (jobIds.isEmpty()) {
|
||||||
|
return emptyPage;
|
||||||
|
}
|
||||||
|
wrapper.in("organizational_job_id", jobIds);
|
||||||
|
}
|
||||||
|
|
||||||
IPage<NodeUserResp> results = nodeUserDao.page(page, wrapper)
|
IPage<NodeUserResp> results = nodeUserDao.page(page, wrapper)
|
||||||
.convert(e -> BeanUtil.toBean(e, NodeUserResp.class));
|
.convert(e -> BeanUtil.toBean(e, NodeUserResp.class));
|
||||||
@ -90,13 +135,14 @@ public class NodeUserQueryRepositoryImpl implements NodeUserQueryRepository {
|
|||||||
if (CollUtil.isEmpty(records) || req.getNeeds() == null) {
|
if (CollUtil.isEmpty(records) || req.getNeeds() == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!BooleanUtil.isTrue(req.getNeeds().getNode())) {
|
if (!BooleanUtil.isTrue(req.getNeeds().getNode()) && !BooleanUtil.isTrue(req.getNeeds().getAncestorNode())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Set<Long> nodeIds = records.stream().map(NodeUserResp::getOrganizationalNodeId).collect(Collectors.toSet());
|
Set<Long> nodeIds = records.stream().map(NodeUserResp::getOrganizationalNodeId).collect(Collectors.toSet());
|
||||||
// assemble parentNode
|
// assemble parentNode
|
||||||
Map<Long, NodeQueryRepository.NodeResp> nodesById = nodeQueryRepository.list(NodeQueryRepository.ListReq.builder()
|
Map<Long, NodeQueryRepository.NodeResp> nodesById = nodeQueryRepository.list(NodeQueryRepository.ListReq.builder()
|
||||||
.ids(nodeIds)
|
.ids(nodeIds)
|
||||||
|
.needAncestorNode(BooleanUtil.isTrue(req.getNeeds().getAncestorNode()))
|
||||||
.build()).stream().collect(Collectors.toMap(NodeQueryRepository.NodeResp::getId, Function.identity()));
|
.build()).stream().collect(Collectors.toMap(NodeQueryRepository.NodeResp::getId, Function.identity()));
|
||||||
|
|
||||||
records.forEach(r -> r.setNode(nodesById.get(r.getOrganizationalNodeId())));
|
records.forEach(r -> r.setNode(nodesById.get(r.getOrganizationalNodeId())));
|
||||||
|
|||||||
@ -16,6 +16,17 @@ import lombok.EqualsAndHashCode;
|
|||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.experimental.SuperBuilder;
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public interface OrgJobQueryRepository {
|
public interface OrgJobQueryRepository {
|
||||||
|
|
||||||
|
|
||||||
@ -23,6 +34,7 @@ public interface OrgJobQueryRepository {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 列表查询
|
* 列表查询
|
||||||
|
*
|
||||||
* @param req
|
* @param req
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@ -63,6 +75,9 @@ public interface OrgJobQueryRepository {
|
|||||||
*/
|
*/
|
||||||
@CriteriaField(ignore = true)
|
@CriteriaField(ignore = true)
|
||||||
private String keyword;
|
private String keyword;
|
||||||
|
@CriteriaField(field = "name", operator = Operator.LIKE)
|
||||||
|
private String nameLike;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user