Browse Source

部门名称搜索

master
luoweijian 1 week ago
parent
commit
2ed7298390
  1. 3
      src/main/java/com/project/ding/domain/dto/UserDTO.java
  2. 3
      src/main/java/com/project/ding/domain/entity/UserEntity.java
  3. 4
      src/main/java/com/project/ding/domain/param/UserParam.java
  4. 4
      src/main/java/com/project/ding/domain/service/impl/SearchUserDomainServiceImpl.java
  5. 9
      src/main/java/com/project/ding/utils/DingUserSyncUtil.java

3
src/main/java/com/project/ding/domain/dto/UserDTO.java

@ -35,6 +35,9 @@ public class UserDTO extends BaseDTO {
private String deptNameStr; private String deptNameStr;
private String deptPathNameStr;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date hiredDate; private Date hiredDate;

3
src/main/java/com/project/ding/domain/entity/UserEntity.java

@ -62,6 +62,9 @@ public class UserEntity extends BaseEntity {
@JdbcTypeCode(SqlTypes.JSON) @JdbcTypeCode(SqlTypes.JSON)
private List<Long> deptIdList; private List<Long> deptIdList;
@Column(name = "dept_path_name_str" , columnDefinition="varchar(1000) comment '部门全路径集合'")
private String deptPathNameStr;
@TableField("hired_date") @TableField("hired_date")
@Column(name = "hired_date") @Column(name = "hired_date")
@Comment("入职时间") @Comment("入职时间")

4
src/main/java/com/project/ding/domain/param/UserParam.java

@ -9,4 +9,8 @@ public class UserParam extends BaseParam{
private String name; private String name;
private Long searchDeptId; private Long searchDeptId;
private String searchDeptName;
} }

4
src/main/java/com/project/ding/domain/service/impl/SearchUserDomainServiceImpl.java

@ -48,6 +48,10 @@ public class SearchUserDomainServiceImpl implements SearchUserDomainService {
queryWrapper.apply("{0} MEMBER OF(dept_id_list)", param.getSearchDeptId()); queryWrapper.apply("{0} MEMBER OF(dept_id_list)", param.getSearchDeptId());
} }
if (StrUtil.isNotBlank(param.getSearchDeptName())) {
queryWrapper.like(UserEntity::getDeptPathNameStr , param.getSearchDeptName());
}
queryWrapper.orderByDesc(UserEntity::getDeptIdStr); queryWrapper.orderByDesc(UserEntity::getDeptIdStr);
IPage<UserEntity> userEntityPage = userMapper.selectPage( IPage<UserEntity> userEntityPage = userMapper.selectPage(
PageConverter.toMpPage(param), PageConverter.toMpPage(param),

9
src/main/java/com/project/ding/utils/DingUserSyncUtil.java

@ -95,16 +95,22 @@ public class DingUserSyncUtil {
try { try {
List<DepartmentDTO> allDepartment = dingUtil.getAllDepartment(); List<DepartmentDTO> allDepartment = dingUtil.getAllDepartment();
allDepartment.forEach(dto -> dto.setDeptIdPath(new ArrayList<>(Collections.singletonList(dto.getId())))); allDepartment.forEach(dto -> dto.setDeptIdPath(new ArrayList<>(Collections.singletonList(dto.getId()))));
allDepartment.forEach(dto -> dto.setDeptNamePath(new ArrayList<>(Collections.singletonList(dto.getName()))));
// 转树 // 转树
List<DepartmentDTO> departmentDTOtreeList = TreeUtils.buildLongTree(allDepartment, DepartmentDTO::getId, DepartmentDTO::getParentId, (parentDTO, childrenList) -> { List<DepartmentDTO> departmentDTOtreeList = TreeUtils.buildLongTree(allDepartment, DepartmentDTO::getId, DepartmentDTO::getParentId, (parentDTO, childrenList) -> {
parentDTO.setChildrenList(childrenList); parentDTO.setChildrenList(childrenList);
parentDTO.setLeaf(Boolean.FALSE); parentDTO.setLeaf(Boolean.FALSE);
childrenList.forEach(childDTO -> childDTO.getDeptIdPath().addAll(0, parentDTO.getDeptIdPath())); childrenList.forEach(childDTO -> childDTO.getDeptIdPath().addAll(0, parentDTO.getDeptIdPath()));
childrenList.forEach(childDTO -> childDTO.getDeptNamePath().addAll(0, parentDTO.getDeptNamePath()));
}); });
// 树转回列表 // 树转回列表
List<DepartmentDTO> departmentDTOList = TreeUtils.tree2List(departmentDTOtreeList, DepartmentDTO::getChildrenList); List<DepartmentDTO> departmentDTOList = TreeUtils.tree2List(departmentDTOtreeList, DepartmentDTO::getChildrenList);
Map<String , List<Long>> depIdPathMap = new HashMap<>(); Map<String , List<Long>> depIdPathMap = new HashMap<>();
Map<String , List<String>> depNamePathMap = new HashMap<>();
departmentDTOList.forEach(dto -> depIdPathMap.put(dto.getId().toString() , dto.getDeptIdPath())); departmentDTOList.forEach(dto -> depIdPathMap.put(dto.getId().toString() , dto.getDeptIdPath()));
departmentDTOList.forEach(dto -> depNamePathMap.put(dto.getId().toString() , dto.getDeptNamePath()));
List<List<DepartmentDTO>> departmentPartitions = ListUtil.partition(departmentDTOList, 300); List<List<DepartmentDTO>> departmentPartitions = ListUtil.partition(departmentDTOList, 300);
@ -117,12 +123,15 @@ public class DingUserSyncUtil {
List<UserDTO> allUserDTOList = dingUtil.getAllUserDTO(); List<UserDTO> allUserDTOList = dingUtil.getAllUserDTO();
allUserDTOList.forEach(user -> { allUserDTOList.forEach(user -> {
Set<Long> depIdPathSet = new HashSet<>(); Set<Long> depIdPathSet = new HashSet<>();
Set<String> depNamePathSet = new HashSet<>();
if (StrUtil.isNotBlank(user.getDeptIdStr())) { if (StrUtil.isNotBlank(user.getDeptIdStr())) {
for (String idStr : user.getDeptIdStr().split(",")) { for (String idStr : user.getDeptIdStr().split(",")) {
depIdPathSet.addAll(depIdPathMap.get(idStr)); depIdPathSet.addAll(depIdPathMap.get(idStr));
depNamePathSet.addAll(depNamePathMap.get(idStr));
} }
} }
user.setDeptIdList(depIdPathSet.stream().toList()); user.setDeptIdList(depIdPathSet.stream().toList());
user.setDeptPathNameStr(String.join("," , depNamePathSet));
}); });
List<List<UserDTO>> userPartitions = ListUtil.partition(allUserDTOList, 300); List<List<UserDTO>> userPartitions = ListUtil.partition(allUserDTOList, 300);
for (List<UserDTO> batch : userPartitions) { for (List<UserDTO> batch : userPartitions) {

Loading…
Cancel
Save