From 2ed7298390b74cd24632f86f4cf2f6f704fd49c9 Mon Sep 17 00:00:00 2001 From: luoweijian <1329394916@qq.com> Date: Sat, 28 Feb 2026 16:33:56 +0800 Subject: [PATCH] =?UTF-8?q?=E9=83=A8=E9=97=A8=E5=90=8D=E7=A7=B0=E6=90=9C?= =?UTF-8?q?=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/project/ding/domain/dto/UserDTO.java | 3 +++ .../java/com/project/ding/domain/entity/UserEntity.java | 3 +++ .../java/com/project/ding/domain/param/UserParam.java | 4 ++++ .../domain/service/impl/SearchUserDomainServiceImpl.java | 4 ++++ .../java/com/project/ding/utils/DingUserSyncUtil.java | 9 +++++++++ 5 files changed, 23 insertions(+) diff --git a/src/main/java/com/project/ding/domain/dto/UserDTO.java b/src/main/java/com/project/ding/domain/dto/UserDTO.java index 41e61ba..ad5be7b 100644 --- a/src/main/java/com/project/ding/domain/dto/UserDTO.java +++ b/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; diff --git a/src/main/java/com/project/ding/domain/entity/UserEntity.java b/src/main/java/com/project/ding/domain/entity/UserEntity.java index 1cbd400..318d2b5 100644 --- a/src/main/java/com/project/ding/domain/entity/UserEntity.java +++ b/src/main/java/com/project/ding/domain/entity/UserEntity.java @@ -62,6 +62,9 @@ public class UserEntity extends BaseEntity { @JdbcTypeCode(SqlTypes.JSON) private List deptIdList; + @Column(name = "dept_path_name_str" , columnDefinition="varchar(1000) comment '部门全路径集合'") + private String deptPathNameStr; + @TableField("hired_date") @Column(name = "hired_date") @Comment("入职时间") diff --git a/src/main/java/com/project/ding/domain/param/UserParam.java b/src/main/java/com/project/ding/domain/param/UserParam.java index 0cbfbf9..92679a9 100644 --- a/src/main/java/com/project/ding/domain/param/UserParam.java +++ b/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; + } diff --git a/src/main/java/com/project/ding/domain/service/impl/SearchUserDomainServiceImpl.java b/src/main/java/com/project/ding/domain/service/impl/SearchUserDomainServiceImpl.java index db6d88c..2c85c80 100644 --- a/src/main/java/com/project/ding/domain/service/impl/SearchUserDomainServiceImpl.java +++ b/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 userEntityPage = userMapper.selectPage( PageConverter.toMpPage(param), diff --git a/src/main/java/com/project/ding/utils/DingUserSyncUtil.java b/src/main/java/com/project/ding/utils/DingUserSyncUtil.java index cae104b..c817410 100644 --- a/src/main/java/com/project/ding/utils/DingUserSyncUtil.java +++ b/src/main/java/com/project/ding/utils/DingUserSyncUtil.java @@ -95,16 +95,22 @@ public class DingUserSyncUtil { try { List 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 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 departmentDTOList = TreeUtils.tree2List(departmentDTOtreeList, DepartmentDTO::getChildrenList); Map> depIdPathMap = new HashMap<>(); + Map> depNamePathMap = new HashMap<>(); + departmentDTOList.forEach(dto -> depIdPathMap.put(dto.getId().toString() , dto.getDeptIdPath())); + departmentDTOList.forEach(dto -> depNamePathMap.put(dto.getId().toString() , dto.getDeptNamePath())); List> departmentPartitions = ListUtil.partition(departmentDTOList, 300); @@ -117,12 +123,15 @@ public class DingUserSyncUtil { List allUserDTOList = dingUtil.getAllUserDTO(); allUserDTOList.forEach(user -> { Set depIdPathSet = new HashSet<>(); + Set 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> userPartitions = ListUtil.partition(allUserDTOList, 300); for (List batch : userPartitions) {