fix:查询用户列表

This commit is contained in:
2026-02-03 10:25:52 +08:00
parent f76f53507e
commit 28fddc4332
10 changed files with 104 additions and 1 deletions

View File

@@ -49,6 +49,13 @@ public class SysStaffController {
return R.ok(sysStaffService.page(page, sysStaffQueryDTO));
}
@Inner(false)
@Operation(summary = "分页查询" , description = "分页查询" )
@GetMapping("/pageForSpdm" )
public R<IPage<SysStaffDetailVO>> pageForSpdm(@ParameterObject Page<SysStaffEntity> page, @ParameterObject SysStaffQueryDTO sysStaffQueryDTO) {
return R.ok(sysStaffService.pageForSpdm(page, sysStaffQueryDTO));
}
@Operation(summary = "通过部门Id查询部门下包括子部门的员工列表" , description = "通过部门Id查询部门下包括子部门的员工列表" )
@GetMapping("/retrieve/dept" )
public R<List<SysStaffDetailVO>> findByDeptId(@RequestParam(required = false) Long deptId) {

View File

@@ -35,6 +35,8 @@ public interface SysStaffService extends IService<SysStaffEntity> {
IPage<SysStaffDetailVO> page(Page<SysStaffEntity> page, SysStaffQueryDTO sysStaffQueryDTO);
IPage<SysStaffDetailVO> pageForSpdm(Page<SysStaffEntity> page, SysStaffQueryDTO sysStaffQueryDTO);
SysStaffDetailVO getStaffById(Long staffId);
void updateStaffById(SysStaffUpdateDTO sysStaffUpdateDTO);

View File

@@ -448,6 +448,55 @@ public class SysStaffServiceImpl extends ServiceImpl<SysStaffMapper, SysStaffEnt
return result;
}
@Override
public IPage<SysStaffDetailVO> pageForSpdm(Page<SysStaffEntity> page, SysStaffQueryDTO sysStaffQueryDTO) {
if (Objects.isNull(page)) {
throw new HoneycomException(ErrorType.PARAM_ERROR.getCode());
}
LambdaQueryWrapper<SysStaffEntity> queryWrapper = new LambdaQueryWrapper<>();
if (!Objects.isNull(sysStaffQueryDTO)) {
if (StringUtils.isNotBlank(sysStaffQueryDTO.getStaffCode())) {
queryWrapper.like(SysStaffEntity::getStaffCode, sysStaffQueryDTO.getStaffCode());
}
if (StringUtils.isNotBlank(sysStaffQueryDTO.getEmail())) {
queryWrapper.like(SysStaffEntity::getEmail, sysStaffQueryDTO.getEmail());
}
if (ObjectUtil.isNotEmpty(sysStaffQueryDTO.getUserId())) {
queryWrapper.eq(SysStaffEntity::getUserId, sysStaffQueryDTO.getUserId());
}
if (StringUtils.isNotBlank(sysStaffQueryDTO.getNickname())) {
R<List<Long>> userIdListByNickNameLike = honeycomUserServiceFeign.getUserIdListByNickNameLike(sysStaffQueryDTO.getNickname(), SecurityConstants.FROM_IN);;
if (CollectionUtils.isNotEmpty(userIdListByNickNameLike.getData())) {
queryWrapper.in(SysStaffEntity::getUserId, userIdListByNickNameLike.getData());
} else {
queryWrapper.in(SysStaffEntity::getUserId, -1L);
}
}
if (!Objects.isNull(sysStaffQueryDTO.getTenantId())) {
queryWrapper.eq(SysStaffEntity::getTenantId, sysStaffQueryDTO.getTenantId());
} else {
queryWrapper.eq(SysStaffEntity::getTenantId, TenantContextHolder.getTenantId());
}
}
Page<SysStaffEntity> pageData = this.page(page, queryWrapper);
if (Objects.isNull(pageData)) {
throw new HoneycomException(UserErrorType.QUERY_USER_PAGE_ERROR.getCode());
}
IPage<SysStaffDetailVO> result = pageData.convert(SysStaffDetailVO::new);
List<SysStaffDetailVO> sysUserList = result.getRecords();
List<Long> userIds = sysUserList.stream().map(SysStaffDetailVO::getUserId).distinct().toList();
Map<Long, SysUserOnTenantVO> userMap = this.getMapStaffUserInfoForSpdm(userIds);
for (SysStaffDetailVO record : sysUserList) {
if (userMap.containsKey(record.getUserId())) {
record.setUserInfo(userMap.get(record.getUserId()));
}
}
return result;
}
private void setSysUserDetailInfo(List<SysStaffDetailVO> sysUserList) {
if (CollectionUtils.isNotEmpty(sysUserList)) {
List<Long> staffIds = sysUserList.stream().map(SysStaffDetailVO::getStaffId).distinct().toList();
@@ -488,6 +537,19 @@ public class SysStaffServiceImpl extends ServiceImpl<SysStaffMapper, SysStaffEnt
return userListR.getData().stream().collect(Collectors.toMap(SysUserOnTenantVO::getUserId, Function.identity(), (key1, key2) -> key2));
}
private Map<Long, SysUserOnTenantVO> getMapStaffUserInfoForSpdm(List<Long> userIds) {
if (CollectionUtils.isEmpty(userIds)) {
throw new HoneycomException(ErrorType.PARAM_ERROR.getCode());
}
R<List<SysUserOnTenantVO>> userListR = honeycomUserServiceFeign.findStaffUserByIdsForSpdm(userIds, SecurityConstants.FROM_IN);
if (Objects.isNull(userListR) || !userListR.isSuccess() || CollectionUtils.isEmpty(userListR.getData())) {
throw new HoneycomException(TenantErrorType.USER_INFO_QUERY_FAILED.getCode());
}
return userListR.getData().stream().collect(Collectors.toMap(SysUserOnTenantVO::getUserId, Function.identity(), (key1, key2) -> key2));
}
@Override
public SysStaffDetailVO getStaffById(Long staffId) {
if (Objects.isNull(staffId)) {