feat(REQ-3282): 定义完整的ListNodeUserReq参数。完成node,unit,job的返回支持。
This commit is contained in:
parent
6163706230
commit
414f1318f2
@ -5,6 +5,7 @@ import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
@ -12,7 +13,7 @@ import java.util.Date;
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Data
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
public class OrgNodeDTO implements Serializable {
|
||||
|
||||
protected Long id;
|
||||
|
||||
@ -4,7 +4,7 @@ import cn.axzo.foundation.page.PageResp;
|
||||
import cn.axzo.foundation.result.ApiResult;
|
||||
import cn.axzo.orgmanax.api.nodeuser.req.ListNodeUserReq;
|
||||
import cn.axzo.orgmanax.api.nodeuser.req.ProcessNodeUserReq;
|
||||
import cn.axzo.orgmanax.api.nodeuser.resp.OrgNodeUserDTO;
|
||||
import cn.axzo.orgmanax.api.nodeuser.resp.NodeUserDTO;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@ -40,6 +40,6 @@ public interface OrgNodeUserApi {
|
||||
* @see ListNodeUserReq#getPageSize()
|
||||
*/
|
||||
@PostMapping("/api/node-user/list")
|
||||
ApiResult<PageResp<OrgNodeUserDTO>> list(@RequestBody @Validated ListNodeUserReq req);
|
||||
ApiResult<PageResp<NodeUserDTO>> list(@RequestBody @Validated ListNodeUserReq req);
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,45 @@
|
||||
package cn.axzo.orgmanax.api.nodeuser.req;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Collection;
|
||||
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Data
|
||||
@Builder
|
||||
public class DistinctRule implements Serializable {
|
||||
|
||||
/**
|
||||
* 如果指定了该值,根据distinctKeys做去重处理
|
||||
*/
|
||||
private Collection<String> distinctByFields;
|
||||
|
||||
/**
|
||||
* 合并规则,1 = 保留第一个,2 = 保留最后一个,默认为2。
|
||||
*
|
||||
* @see MergeType
|
||||
*/
|
||||
private Integer mergeType;
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public enum MergeType {
|
||||
FIRST(1, "保留第一个"), LAST(2, "保留最后一个");
|
||||
private final Integer value;
|
||||
private final String desc;
|
||||
}
|
||||
|
||||
public Integer getMergeType() {
|
||||
// 不指定,取最后一个
|
||||
return ObjectUtils.firstNonNull(mergeType, MergeType.LAST.getValue());
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package cn.axzo.orgmanax.api.nodeuser.req;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Data
|
||||
@SuperBuilder
|
||||
public class IdentityPair {
|
||||
private Long identityId;
|
||||
private Integer identityType;
|
||||
}
|
||||
@ -3,11 +3,15 @@ package cn.axzo.orgmanax.api.nodeuser.req;
|
||||
import cn.axzo.foundation.dao.support.wrapper.CriteriaField;
|
||||
import cn.axzo.foundation.dao.support.wrapper.Operator;
|
||||
import cn.axzo.foundation.page.PageReqV2;
|
||||
import lombok.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@NoArgsConstructor
|
||||
@ -18,8 +22,10 @@ public class ListNodeUserReq extends PageReqV2 {
|
||||
|
||||
@CriteriaField
|
||||
private Long id;
|
||||
@CriteriaField(field = "id", operator = Operator.GT)
|
||||
private Long idGt;
|
||||
@CriteriaField(field = "id", operator = Operator.IN)
|
||||
private Set<Long> ids;
|
||||
private Collection<Long> ids;
|
||||
|
||||
/**
|
||||
* identity_id
|
||||
@ -27,7 +33,7 @@ public class ListNodeUserReq extends PageReqV2 {
|
||||
@CriteriaField
|
||||
private Long identityId;
|
||||
@CriteriaField(field = "identityId", operator = Operator.IN)
|
||||
private Set<Long> identityIds;
|
||||
private Collection<Long> identityIds;
|
||||
|
||||
/**
|
||||
* 身份类型 0-无效类型, 1-工人, 2-班组长, 3-从业人员, 4-政务人员,5-运营人员
|
||||
@ -35,7 +41,7 @@ public class ListNodeUserReq extends PageReqV2 {
|
||||
@CriteriaField
|
||||
private Integer identityType;
|
||||
@CriteriaField(field = "identityType", operator = Operator.IN)
|
||||
private Set<Integer> identityTypes;
|
||||
private Collection<Integer> identityTypes;
|
||||
|
||||
/**
|
||||
* 自然人id
|
||||
@ -43,13 +49,17 @@ public class ListNodeUserReq extends PageReqV2 {
|
||||
@CriteriaField
|
||||
private Long personId;
|
||||
@CriteriaField(field = "personId", operator = Operator.IN)
|
||||
private Set<Long> personIds;
|
||||
private Collection<Long> personIds;
|
||||
@CriteriaField(field = "personId", operator = Operator.NOT_IN)
|
||||
private Collection<Long> excludePersonIds;
|
||||
|
||||
/**
|
||||
* 主电话
|
||||
*/
|
||||
@CriteriaField
|
||||
private String phone;
|
||||
@CriteriaField(field = "phone", operator = Operator.NOT_IN)
|
||||
private Collection<String> phones;
|
||||
|
||||
/**
|
||||
* 名字
|
||||
@ -65,7 +75,7 @@ public class ListNodeUserReq extends PageReqV2 {
|
||||
@CriteriaField
|
||||
private String idNumber;
|
||||
@CriteriaField(field = "idNumber", operator = Operator.IN)
|
||||
private Set<String> idNumbers;
|
||||
private Collection<String> idNumbers;
|
||||
|
||||
/**
|
||||
* 单位id
|
||||
@ -73,7 +83,7 @@ public class ListNodeUserReq extends PageReqV2 {
|
||||
@CriteriaField
|
||||
private Long organizationalUnitId;
|
||||
@CriteriaField(field = "organizationalUnitId", operator = Operator.IN)
|
||||
private Set<Long> organizationalUnitIds;
|
||||
private Collection<Long> organizationalUnitIds;
|
||||
|
||||
/**
|
||||
* 组织节点id
|
||||
@ -81,7 +91,9 @@ public class ListNodeUserReq extends PageReqV2 {
|
||||
@CriteriaField
|
||||
private Long organizationalNodeId;
|
||||
@CriteriaField(field = "organizationalNodeId", operator = Operator.IN)
|
||||
private Set<Long> organizationalNodeIds;
|
||||
private Collection<Long> organizationalNodeIds;
|
||||
@CriteriaField(field = "organizationalNodeId", operator = Operator.NOT_IN)
|
||||
private Collection<Long> excludeOrganizationalNodeIds;
|
||||
|
||||
/**
|
||||
* 顶级节点id
|
||||
@ -89,7 +101,9 @@ public class ListNodeUserReq extends PageReqV2 {
|
||||
@CriteriaField
|
||||
private Long topNodeId;
|
||||
@CriteriaField(field = "topNodeId", operator = Operator.IN)
|
||||
private Set<Long> topNodeIds;
|
||||
private Collection<Long> topNodeIds;
|
||||
@CriteriaField(field = "topNodeId", operator = Operator.GT)
|
||||
private Long topNodeIdGt;
|
||||
|
||||
/**
|
||||
* 部门管理员 1是 0否
|
||||
@ -103,7 +117,7 @@ public class ListNodeUserReq extends PageReqV2 {
|
||||
@CriteriaField
|
||||
private Long organizationalJobId;
|
||||
@CriteriaField(field = "organizationalJobId", operator = Operator.IN)
|
||||
private Set<Long> organizationalJobIds;
|
||||
private Collection<Long> organizationalJobIds;
|
||||
|
||||
/**
|
||||
* 工作台ID
|
||||
@ -111,7 +125,7 @@ public class ListNodeUserReq extends PageReqV2 {
|
||||
@CriteriaField
|
||||
private Long workspaceId;
|
||||
@CriteriaField(field = "workspaceId", operator = Operator.IN)
|
||||
private Long workspaceIds;
|
||||
private Collection<Long> workspaceIds;
|
||||
|
||||
/**
|
||||
* 0:普通岗位、1:主岗位
|
||||
@ -136,6 +150,8 @@ public class ListNodeUserReq extends PageReqV2 {
|
||||
*/
|
||||
@CriteriaField
|
||||
private Long syncDataId;
|
||||
@CriteriaField(field = "syncDataId", operator = Operator.IN)
|
||||
private List<Long> syncDataIds;
|
||||
|
||||
/**
|
||||
* 工号
|
||||
@ -146,18 +162,200 @@ public class ListNodeUserReq extends PageReqV2 {
|
||||
@CriteriaField
|
||||
private Integer activeFlag;
|
||||
|
||||
/**
|
||||
* 入职时间,大于等于
|
||||
*/
|
||||
@CriteriaField(field = "joinAt", operator = Operator.GE)
|
||||
private Date joinAtGe;
|
||||
|
||||
/**
|
||||
* 入职时间,小于等于
|
||||
*/
|
||||
@CriteriaField(field = "joinAt", operator = Operator.LE)
|
||||
private Date joinAtLe;
|
||||
/**
|
||||
* 离职时间,大于等于
|
||||
*/
|
||||
@CriteriaField(field = "leaveAt", operator = Operator.GE)
|
||||
private Date leaveAtGe;
|
||||
/**
|
||||
* 离职时间,小于等于
|
||||
*/
|
||||
@CriteriaField(field = "leaveAt", operator = Operator.LE)
|
||||
private Date leaveAtLe;
|
||||
/**
|
||||
* 更新时间,大于等于
|
||||
*/
|
||||
@CriteriaField(field = "updateAt", operator = Operator.GE)
|
||||
private Date updateAtGe;
|
||||
/**
|
||||
* 更新时间,小于等于
|
||||
*/
|
||||
@CriteriaField(field = "updateAt", operator = Operator.LE)
|
||||
private Date updateAtLe;
|
||||
|
||||
|
||||
// ~ 需特殊实现的查询字段。(非CriteriaField直接可查询的字段)
|
||||
|
||||
/**
|
||||
* leaderPersonId. 根据personId=leaderPersonId and manager = true,查询node。然后查询整个node下面的人
|
||||
*/
|
||||
@CriteriaField(ignore = true) // TODO: 待实现
|
||||
private Long leaderPersonId;
|
||||
/**
|
||||
* 下属personId,根据personId=subordinatePersonId,查询到node,然后返回node的manager。
|
||||
*/
|
||||
@CriteriaField(ignore = true)
|
||||
private Boolean needNode;
|
||||
private Long subordinatePersonId; // TODO: 待实现
|
||||
// 岗位code
|
||||
@CriteriaField(ignore = true)
|
||||
private String organizationalJobCode; // TODO: 待实现
|
||||
|
||||
@CriteriaField(ignore = true)
|
||||
@Builder.Default
|
||||
Integer page = 1;
|
||||
private Collection<String> organizationalJobCodes; // TODO: 待实现
|
||||
@CriteriaField(ignore = true)
|
||||
private String organizationalJobName; // TODO: 待实现
|
||||
@CriteriaField(ignore = true)
|
||||
private String organizationalJobNameLike; // TODO: 待实现
|
||||
@CriteriaField(ignore = true)
|
||||
private Boolean onlyHasJob; // TODO: 待实现
|
||||
|
||||
@CriteriaField(ignore = true)
|
||||
private Collection<IdentityPair> identityPairs; // TODO: 待实现
|
||||
|
||||
/**
|
||||
* 最大支持1000条数据,不支持单页超过1000的查询,接入方按需分页
|
||||
* 查询返回数据包含,逻辑删除数据,即查询未删除和已删除的数据。
|
||||
*/
|
||||
@Builder.Default
|
||||
@CriteriaField(ignore = true)
|
||||
Integer pageSize = 1000;
|
||||
private Boolean includeDeleted; // TODO: 待实现
|
||||
/**
|
||||
* 仅查询已删除的数据
|
||||
*/
|
||||
@CriteriaField(ignore = true)
|
||||
List<String> sort;
|
||||
private Boolean deletedOnly; // TODO: 待实现
|
||||
|
||||
@CriteriaField(ignore = true)
|
||||
private Integer nodeState; // TODO: 待实现
|
||||
|
||||
// ~ 后置过滤的字段
|
||||
/**
|
||||
* 包含的单位类型
|
||||
*/
|
||||
private Collection<Integer> filterIncludeUnitTypes; // TODO: 待实现
|
||||
/**
|
||||
* 排除的单位类型
|
||||
*/
|
||||
private Collection<Integer> filterExcludeUnitTypes; // TODO: 待实现
|
||||
private Integer filterIncludeWorkspaceType; // TODO: 待实现
|
||||
/**
|
||||
* 包含的协作类型
|
||||
*/
|
||||
private Integer filterIncludeCooperateType; // TODO: 待实现
|
||||
private Collection<Integer> filterIncludeCooperateTypes; // TODO: 待实现
|
||||
private Collection<Integer> filterExcludeCooperateTypes; // TODO: 待实现
|
||||
/**
|
||||
* 是否只返回顶级节点
|
||||
*/
|
||||
private Boolean filterTopNodeOnly; // TODO: 待实现
|
||||
/**
|
||||
* 返回directManager不为空的
|
||||
*/
|
||||
private Boolean filterDirectManagerNotNull; // TODO: 待实现
|
||||
/**
|
||||
* 数据权限
|
||||
*/
|
||||
private String dataPermissionCacheKey; // TODO: 待实现
|
||||
|
||||
/**
|
||||
* orgUserStatus
|
||||
*/
|
||||
private Collection<String> orgUserStatus; // TODO: 待实现
|
||||
|
||||
// ~ 不同部门类型的nodeUser的差异化查询字段。如 项目内工人 的 项目班组id,平台班组id等。 start
|
||||
private Long platTeamId; // TODO: 待实现
|
||||
private Long projectTeamId; // TODO: 待实现
|
||||
private Collection<Long> projectTeamIds; // TODO: 待实现
|
||||
private Long projectWorkerId; // TODO: 待实现
|
||||
private Long projectGroupId; // TODO: 待实现
|
||||
/**
|
||||
* 状态:1未激活 2、已激活 3、施工中 4、已退场
|
||||
*/
|
||||
private Collection<Integer> projectWorkerStatuses; // TODO: 待实现
|
||||
// ~ 不同部门类型的nodeUser的差异化查询字段。如 项目内工人 的 项目班组id,平台班组id等。 end
|
||||
|
||||
/**
|
||||
* 根据顶级节点查人,指定该值为true了,会根据nodeUser查询topNodeId,然后根据topNodeId进一步查询人员
|
||||
* 即:nodeUser.topNodeId 作为参数。之前的nodeId参数不再使用
|
||||
*/
|
||||
private Boolean findByTopNodeId; // TODO: 待实现
|
||||
|
||||
/**
|
||||
* 去重规则,如果指定该值,会按照去重规则进行去重。
|
||||
* 使用该参数,会影响分页准确性。不建议分页时使用(先查询分页数据,再去重)。
|
||||
*/
|
||||
private DistinctRule distinctRule; // TODO: 待实现
|
||||
|
||||
// 指定聚合信息
|
||||
/**
|
||||
* 聚合信息needs
|
||||
*/
|
||||
@CriteriaField(ignore = true)
|
||||
private Needs needs;
|
||||
|
||||
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Data
|
||||
@SuperBuilder
|
||||
public static class Needs {
|
||||
|
||||
// ~ 指定聚合返回字段
|
||||
/**
|
||||
* 是否返回单位信息
|
||||
*/
|
||||
private Boolean unit;
|
||||
/**
|
||||
* 是否返回部门信息
|
||||
*/
|
||||
private Boolean node;
|
||||
/**
|
||||
* 返回node and path
|
||||
*/
|
||||
private Boolean nodeAndPath;
|
||||
/**
|
||||
* 返回参与项目数量
|
||||
*/
|
||||
private Boolean projectOrgCnt;
|
||||
/**
|
||||
* 是否返回岗位信息
|
||||
*/
|
||||
private Boolean job;
|
||||
/**
|
||||
* 是否岗位组信息,对应返回字段里面的organizationalJobWorkspaceType
|
||||
*/
|
||||
private Boolean jobGroup;
|
||||
|
||||
/**
|
||||
* 是否查询下级组织人员。所在节点的下级节点的
|
||||
*/
|
||||
private Boolean childNodeUser;
|
||||
|
||||
/**
|
||||
* 是否查询下属。(directManagerPersonId等于自己的)
|
||||
*/
|
||||
private Boolean subordinate;
|
||||
|
||||
/**
|
||||
* 是否需要角色信息
|
||||
*/
|
||||
private Boolean role;
|
||||
/**
|
||||
* 是否需要部门及父级部门信息,默认不返回
|
||||
*/
|
||||
private Boolean ancestorNode;
|
||||
|
||||
private Boolean cooperateShip;
|
||||
|
||||
private Boolean personProfile;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,11 +1,13 @@
|
||||
package cn.axzo.orgmanax.api.nodeuser.resp;
|
||||
|
||||
import cn.axzo.orgmanax.api.node.resp.OrgNodeDTO;
|
||||
import cn.axzo.orgmanax.api.orgjob.resp.OrgJobDTO;
|
||||
import cn.axzo.orgmanax.api.unit.resp.OrgUnitDTO;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
@ -13,8 +15,8 @@ import java.util.Date;
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Data
|
||||
@Builder
|
||||
public class OrgNodeUserDTO implements Serializable {
|
||||
@SuperBuilder
|
||||
public class NodeUserDTO implements Serializable {
|
||||
|
||||
private Long id;
|
||||
|
||||
@ -138,6 +140,13 @@ public class OrgNodeUserDTO implements Serializable {
|
||||
*/
|
||||
private Integer activeFlag;
|
||||
|
||||
/**
|
||||
* 部门人员信息,json,不同部门类型的部门用户,格式不一。
|
||||
*/
|
||||
private JSONObject profile;
|
||||
|
||||
// ~ 聚合信息
|
||||
private OrgNodeDTO node;
|
||||
private OrgUnitDTO unit;
|
||||
private OrgJobDTO job;
|
||||
}
|
||||
@ -2,12 +2,8 @@ package cn.axzo.orgmanax.api.orguser.feign;
|
||||
|
||||
import cn.axzo.foundation.page.PageResp;
|
||||
import cn.axzo.foundation.result.ApiResult;
|
||||
import cn.axzo.orgmanax.api.nodeuser.req.ListNodeUserReq;
|
||||
import cn.axzo.orgmanax.api.nodeuser.req.ProcessNodeUserReq;
|
||||
import cn.axzo.orgmanax.api.nodeuser.resp.OrgNodeUserDTO;
|
||||
import cn.axzo.orgmanax.api.orguser.req.ListOrgUserReq;
|
||||
import cn.axzo.orgmanax.api.orguser.resp.OrgUserDTO;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
|
||||
@ -9,6 +9,13 @@ import cn.axzo.orgmanax.infra.client.datacollection.dto.DataCollectionListTeamCa
|
||||
import cn.axzo.orgmanax.infra.client.datacollection.dto.DataCollectionListTeamCategoryTreeByCodesReq;
|
||||
import cn.axzo.orgmanax.infra.client.datacollection.dto.DataCollectionProfessionResp;
|
||||
import cn.axzo.orgmanax.infra.client.datacollection.dto.DataCollectionTeamCategoryResp;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
@ -71,12 +78,26 @@ public interface DataCollectionDictInfoClient {
|
||||
List<DataCollectionListSkillLabelByCodesResp> listSkillLabelByCodes(List<String> codes);
|
||||
|
||||
public static void main(String[] args) {
|
||||
Stream.of("one", "two", "three", "four")
|
||||
.filter(e -> e.length() > 3)
|
||||
.peek(e -> System.out.println("Filtered value: " + e))
|
||||
.map(String::toUpperCase)
|
||||
.peek(e -> System.out.println("Mapped value: " + e))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
ImmutableList<ImmutableMap<String, String>> immutableMaps = ImmutableList.of(
|
||||
ImmutableMap.of("amt", "1", "tot", "13"),
|
||||
ImmutableMap.of("amt", "2", "tot", "23"),
|
||||
ImmutableMap.of("amt", "3", "tot", "33"),
|
||||
ImmutableMap.of("amt", "4", "tot", "43")
|
||||
);
|
||||
|
||||
List<Amtot> amtots = JSON.parseArray(JSON.toJSONString(immutableMaps), Amtot.class);
|
||||
|
||||
System.out.println(JSON.toJSONString(amtots));
|
||||
}
|
||||
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
@Data
|
||||
class Amtot{
|
||||
private String amt;
|
||||
private String tot;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -4,6 +4,8 @@ import cn.axzo.foundation.page.PageResp;
|
||||
import cn.axzo.orgmanax.api.nodeuser.req.ListNodeUserReq;
|
||||
import cn.axzo.orgmanax.infra.dao.node.repository.NodeQueryRepository;
|
||||
import cn.axzo.orgmanax.infra.dao.nodeuser.entity.OrganizationalNodeUser;
|
||||
import cn.axzo.orgmanax.infra.dao.orgjob.repository.OrgJobQueryRepository;
|
||||
import cn.axzo.orgmanax.infra.dao.unit.repository.UnitQueryRepository;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.google.common.base.Preconditions;
|
||||
@ -57,11 +59,25 @@ public interface NodeUserQueryRepository {
|
||||
@SuperBuilder
|
||||
class NodeUserResp extends OrganizationalNodeUser {
|
||||
/**
|
||||
* 查询参数指定 needNode = true,才会返回
|
||||
* 查询参数指定 needs.node = true,才会返回
|
||||
*
|
||||
* @see ListNodeUserReq#getNeedNode()
|
||||
* @see ListNodeUserReq.Needs#getNode()
|
||||
*/
|
||||
private NodeQueryRepository.NodeResp nodeResp;
|
||||
private NodeQueryRepository.NodeResp node;
|
||||
|
||||
/**
|
||||
* 查询参数指定 needs.unit = true,才会返回
|
||||
*
|
||||
* @see ListNodeUserReq.Needs#getUnit()
|
||||
*/
|
||||
private UnitQueryRepository.UnitResp unit;
|
||||
|
||||
/**
|
||||
* 查询参数指定 needs.job = true,才会返回
|
||||
*
|
||||
* @see ListNodeUserReq.Needs#getJob()
|
||||
*/
|
||||
private OrgJobQueryRepository.JobResp job;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -9,6 +9,8 @@ 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.entity.OrganizationalNodeUser;
|
||||
import cn.axzo.orgmanax.infra.dao.nodeuser.repository.NodeUserQueryRepository;
|
||||
import cn.axzo.orgmanax.infra.dao.orgjob.repository.OrgJobQueryRepository;
|
||||
import cn.axzo.orgmanax.infra.dao.unit.repository.UnitQueryRepository;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.BooleanUtil;
|
||||
@ -31,11 +33,15 @@ public class NodeUserQueryRepositoryImpl implements NodeUserQueryRepository {
|
||||
|
||||
private final NodeUserDao nodeUserDao;
|
||||
private final NodeQueryRepository nodeQueryRepository;
|
||||
private final OrgJobQueryRepository jobQueryRepository;
|
||||
private final UnitQueryRepository unitQueryRepository;
|
||||
|
||||
@Override
|
||||
public PageResp<NodeUserResp> page(ListNodeUserReq req) {
|
||||
IPage<OrganizationalNodeUser> page = PageConverter.toMybatis(req, OrganizationalNodeUser.class);
|
||||
QueryWrapper<OrganizationalNodeUser> wrapper = QueryWrapperHelper.fromBean(req, OrganizationalNodeUser.class);
|
||||
// 查询参数过滤
|
||||
|
||||
IPage<NodeUserResp> results = nodeUserDao.page(page, wrapper)
|
||||
.convert(e -> BeanUtil.toBean(e, NodeUserResp.class));
|
||||
PageResp<NodeUserResp> resp = PageConverter.toResp(results);
|
||||
@ -44,16 +50,47 @@ public class NodeUserQueryRepositoryImpl implements NodeUserQueryRepository {
|
||||
return resp;
|
||||
}
|
||||
|
||||
// assemble node
|
||||
// assembles
|
||||
assembleNode(req, records);
|
||||
assembleJob(req, records);
|
||||
assembleUnit(req, records);
|
||||
return resp;
|
||||
}
|
||||
|
||||
private void assembleNode(ListNodeUserReq req, List<NodeUserResp> records) {
|
||||
if (CollUtil.isEmpty(records)) {
|
||||
private void assembleUnit(ListNodeUserReq req, List<NodeUserResp> records) {
|
||||
if (CollUtil.isEmpty(records) || req.getNeeds() == null) {
|
||||
return;
|
||||
}
|
||||
if (!BooleanUtil.isTrue(req.getNeedNode())) {
|
||||
if (!BooleanUtil.isTrue(req.getNeeds().getUnit())) {
|
||||
return;
|
||||
}
|
||||
Set<Long> unitIds = records.stream().map(NodeUserResp::getOrganizationalUnitId).collect(Collectors.toSet());
|
||||
Map<Long, UnitQueryRepository.UnitResp> unitsById = unitQueryRepository.list(UnitQueryRepository.ListReq.builder()
|
||||
.ids(unitIds)
|
||||
.build()).stream().collect(Collectors.toMap(UnitQueryRepository.UnitResp::getId, Function.identity()));
|
||||
records.forEach(r -> r.setUnit(unitsById.get(r.getOrganizationalUnitId())));
|
||||
}
|
||||
|
||||
private void assembleJob(ListNodeUserReq req, List<NodeUserResp> records) {
|
||||
if (CollUtil.isEmpty(records) || req.getNeeds() == null) {
|
||||
return;
|
||||
}
|
||||
if (!BooleanUtil.isTrue(req.getNeeds().getJob())) {
|
||||
return;
|
||||
}
|
||||
Set<Long> jobIds = records.stream().map(NodeUserResp::getOrganizationalJobId).collect(Collectors.toSet());
|
||||
// assemble job
|
||||
Map<Long, OrgJobQueryRepository.JobResp> jobsById = jobQueryRepository.page(OrgJobQueryRepository.ListReq.builder()
|
||||
.ids(jobIds)
|
||||
.build()).getData().stream().collect(Collectors.toMap(OrgJobQueryRepository.JobResp::getId, Function.identity()));
|
||||
records.forEach(r -> r.setJob(jobsById.get(r.getOrganizationalJobId())));
|
||||
}
|
||||
|
||||
private void assembleNode(ListNodeUserReq req, List<NodeUserResp> records) {
|
||||
if (CollUtil.isEmpty(records) || req.getNeeds() == null) {
|
||||
return;
|
||||
}
|
||||
if (!BooleanUtil.isTrue(req.getNeeds().getNode())) {
|
||||
return;
|
||||
}
|
||||
Set<Long> nodeIds = records.stream().map(NodeUserResp::getOrganizationalNodeId).collect(Collectors.toSet());
|
||||
@ -62,7 +99,7 @@ public class NodeUserQueryRepositoryImpl implements NodeUserQueryRepository {
|
||||
.ids(nodeIds)
|
||||
.build()).stream().collect(Collectors.toMap(NodeQueryRepository.NodeResp::getId, Function.identity()));
|
||||
|
||||
records.forEach(r -> r.setNodeResp(nodesById.get(r.getOrganizationalNodeId())));
|
||||
records.forEach(r -> r.setNode(nodesById.get(r.getOrganizationalNodeId())));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.*;
|
||||
import lombok.experimental.Accessors;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@ -23,7 +24,7 @@ import java.io.Serializable;
|
||||
@Accessors(chain = true)
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
@ToString(callSuper = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class OrgJob implements Serializable {
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package cn.axzo.orgmanax.infra.dao.orgjob.repository;
|
||||
|
||||
import cn.axzo.foundation.dao.support.wrapper.CriteriaField;
|
||||
import cn.axzo.foundation.dao.support.wrapper.Operator;
|
||||
import cn.axzo.foundation.page.PageReqV2;
|
||||
import cn.axzo.foundation.page.PageResp;
|
||||
import cn.axzo.orgmanax.infra.dao.orgjob.entity.OrgJob;
|
||||
@ -10,9 +11,11 @@ import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public interface OrgJobQueryRepository {
|
||||
|
||||
PageResp<OrgJob> page(ListReq req);
|
||||
PageResp<JobResp> page(ListReq req);
|
||||
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ -24,8 +27,18 @@ public interface OrgJobQueryRepository {
|
||||
|
||||
@CriteriaField
|
||||
private String name;
|
||||
@CriteriaField(field = "id", operator = Operator.IN)
|
||||
private Collection<Long> ids;
|
||||
|
||||
}
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Data
|
||||
@SuperBuilder
|
||||
class JobResp extends OrgJob {
|
||||
private String other;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -6,7 +6,7 @@ import cn.axzo.foundation.result.ApiResult;
|
||||
import cn.axzo.orgmanax.api.nodeuser.feign.OrgNodeUserApi;
|
||||
import cn.axzo.orgmanax.api.nodeuser.req.ListNodeUserReq;
|
||||
import cn.axzo.orgmanax.api.nodeuser.req.ProcessNodeUserReq;
|
||||
import cn.axzo.orgmanax.api.nodeuser.resp.OrgNodeUserDTO;
|
||||
import cn.axzo.orgmanax.api.nodeuser.resp.NodeUserDTO;
|
||||
import cn.axzo.orgmanax.server.nodeuser.service.NodeUserService;
|
||||
import cn.axzo.orgmanax.server.nodeuser.service.processor.NodeUserProcessor;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
@ -43,7 +43,7 @@ public class NodeUserController implements OrgNodeUserApi {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<PageResp<OrgNodeUserDTO>> list(ListNodeUserReq req) {
|
||||
public ApiResult<PageResp<NodeUserDTO>> list(ListNodeUserReq req) {
|
||||
return ApiResult.success(nodeUserService.page(req));
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,14 +2,11 @@ package cn.axzo.orgmanax.server.nodeuser.service;
|
||||
|
||||
import cn.axzo.foundation.exception.Axssert;
|
||||
import cn.axzo.foundation.page.PageResp;
|
||||
import cn.axzo.orgmanax.api.node.req.ListNodeReq;
|
||||
import cn.axzo.orgmanax.api.node.req.ProcessNodeReq;
|
||||
import cn.axzo.orgmanax.api.node.resp.OrgNodeDTO;
|
||||
import cn.axzo.orgmanax.api.nodeuser.req.ListNodeUserReq;
|
||||
import cn.axzo.orgmanax.api.nodeuser.req.ProcessNodeUserReq;
|
||||
import cn.axzo.orgmanax.api.nodeuser.resp.OrgNodeUserDTO;
|
||||
import cn.axzo.orgmanax.api.nodeuser.resp.NodeUserDTO;
|
||||
import cn.axzo.orgmanax.common.config.BizResultCode;
|
||||
import cn.axzo.orgmanax.server.node.service.processor.NodeProcessor;
|
||||
import cn.axzo.orgmanax.server.nodeuser.service.processor.NodeUserProcessor;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.AllArgsConstructor;
|
||||
@ -23,9 +20,9 @@ public interface NodeUserService {
|
||||
|
||||
NodeUserProcessor.ProcessResult process(ProcessNodeUserReq req);
|
||||
|
||||
PageResp<OrgNodeUserDTO> page(ListNodeUserReq req);
|
||||
PageResp<NodeUserDTO> page(ListNodeUserReq req);
|
||||
|
||||
default List<OrgNodeUserDTO> list(ListNodeUserReq req) {
|
||||
default List<NodeUserDTO> list(ListNodeUserReq req) {
|
||||
return page(req).getData();
|
||||
}
|
||||
|
||||
|
||||
@ -4,19 +4,19 @@ import cn.axzo.foundation.exception.Axssert;
|
||||
import cn.axzo.foundation.page.PageResp;
|
||||
import cn.axzo.orgmanax.api.nodeuser.req.ListNodeUserReq;
|
||||
import cn.axzo.orgmanax.api.nodeuser.req.ProcessNodeUserReq;
|
||||
import cn.axzo.orgmanax.api.nodeuser.resp.OrgNodeUserDTO;
|
||||
import cn.axzo.orgmanax.api.nodeuser.resp.NodeUserDTO;
|
||||
import cn.axzo.orgmanax.common.config.BizResultCode;
|
||||
import cn.axzo.orgmanax.infra.dao.nodeuser.repository.NodeUserQueryRepository;
|
||||
import cn.axzo.orgmanax.server.nodeuser.service.NodeUserService;
|
||||
import cn.axzo.orgmanax.server.nodeuser.service.processor.NodeUserProcessor;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@ -49,9 +49,9 @@ public class NodeUserServiceImpl implements NodeUserService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResp<OrgNodeUserDTO> page(ListNodeUserReq req) {
|
||||
public PageResp<NodeUserDTO> page(ListNodeUserReq req) {
|
||||
PageResp<NodeUserQueryRepository.NodeUserResp> page = nodeUserQueryRepository.page(req);
|
||||
List<OrgNodeUserDTO> records = page.getData().stream().map(e -> BeanUtil.toBean(e, OrgNodeUserDTO.class)).collect(Collectors.toList());
|
||||
List<NodeUserDTO> records = BeanUtil.copyToList(CollUtil.emptyIfNull(page.getData()), NodeUserDTO.class);
|
||||
// assemble data if needed
|
||||
return new PageResp<>(page.getTotal(), page.getSize(), page.getCurrent(), records);
|
||||
}
|
||||
|
||||
@ -19,7 +19,7 @@ public class DevApplication {
|
||||
public static final String DEFAULT_DIR = "cn.axzo.orgmanax";
|
||||
|
||||
public static void main(String[] args) {
|
||||
// System.setProperty("rocket.consumer.listeners.disable", "true");
|
||||
System.setProperty("rocket.consumer.listeners.disable", "true");
|
||||
System.setProperty("spring.profiles.active","dev");
|
||||
System.setProperty("NACOS_HOST","https://dev-nacos.axzo.cn");
|
||||
System.setProperty("NACOS_PORT","443");
|
||||
@ -32,6 +32,7 @@ public class DevApplication {
|
||||
System.setProperty("spring.redis.password","!rHV2!fctYtV4vF");
|
||||
System.setProperty("xxl.job.admin.addresses","http://dev-xxl-job.axzo.cn/xxl-job-admin");
|
||||
System.setProperty("rocketmq.name-server", "172.16.2.82:9876");
|
||||
System.setProperty("logback.path", "/tmp");
|
||||
SpringApplication application = new SpringApplication(DevApplication.class);
|
||||
ConfigurableApplicationContext run = application.run(args);
|
||||
Environment env = run.getEnvironment();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user