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 deptPathNameStr;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
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)
private List<Long> deptIdList;
@Column(name = "dept_path_name_str" , columnDefinition="varchar(1000) comment '部门全路径集合'")
private String deptPathNameStr;
@TableField("hired_date")
@Column(name = "hired_date")
@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 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());
}
if (StrUtil.isNotBlank(param.getSearchDeptName())) {
queryWrapper.like(UserEntity::getDeptPathNameStr , param.getSearchDeptName());
}
queryWrapper.orderByDesc(UserEntity::getDeptIdStr);
IPage<UserEntity> userEntityPage = userMapper.selectPage(
PageConverter.toMpPage(param),

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

@ -95,16 +95,22 @@ public class DingUserSyncUtil {
try {
List<DepartmentDTO> allDepartment = dingUtil.getAllDepartment();
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) -> {
parentDTO.setChildrenList(childrenList);
parentDTO.setLeaf(Boolean.FALSE);
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);
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 -> depNamePathMap.put(dto.getId().toString() , dto.getDeptNamePath()));
List<List<DepartmentDTO>> departmentPartitions = ListUtil.partition(departmentDTOList, 300);
@ -117,12 +123,15 @@ public class DingUserSyncUtil {
List<UserDTO> allUserDTOList = dingUtil.getAllUserDTO();
allUserDTOList.forEach(user -> {
Set<Long> depIdPathSet = new HashSet<>();
Set<String> depNamePathSet = new HashSet<>();
if (StrUtil.isNotBlank(user.getDeptIdStr())) {
for (String idStr : user.getDeptIdStr().split(",")) {
depIdPathSet.addAll(depIdPathMap.get(idStr));
depNamePathSet.addAll(depNamePathMap.get(idStr));
}
}
user.setDeptIdList(depIdPathSet.stream().toList());
user.setDeptPathNameStr(String.join("," , depNamePathSet));
});
List<List<UserDTO>> userPartitions = ListUtil.partition(allUserDTOList, 300);
for (List<UserDTO> batch : userPartitions) {

Loading…
Cancel
Save