diff --git a/laws-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java b/laws-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java index ad5c0a11..13e787b3 100644 --- a/laws-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java +++ b/laws-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java @@ -327,4 +327,14 @@ public interface ISysUserService extends IService { List getUserListByDepIds(List departIds); SysUser getUserByWorkNo(String workNo); + + /** + * 内部工作组模糊搜索获取满足条件的用户id集合,全为空的话就返回空 + * @param userName 姓名 + * @param userWorkNo 工号 + * @param userRoleName 角色 + * @param userPostName 职位 + * @return + */ + List LawsWorkingGroupUserSearch(String userName, String userWorkNo, String userRoleName, String userPostName); } diff --git a/laws-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java b/laws-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java index 9d8c4551..fa5b5060 100644 --- a/laws-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java +++ b/laws-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java @@ -24,6 +24,7 @@ import com.jero.modules.system.service.ISysUserService; import com.jero.modules.system.vo.SysUserDepNameVo; import com.jero.modules.system.vo.SysUserRoleNameVo; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheEvict; @@ -629,6 +630,50 @@ public class SysUserServiceImpl extends ServiceImpl impl return userMapper.getUserByWorkNo(workNo); } + /** + * 内部工作组模糊搜索获取满足条件的用户id集合 + * @param userName 姓名 + * @param userWorkNo 工号 + * @param userRoleName 角色 + * @param userPostName 职位 + * @return 满足条件的用户id集合 + */ + @Override + public List LawsWorkingGroupUserSearch(String userName, String userWorkNo, String userRoleName, String userPostName) { + if (StringUtils.isAllBlank(userName, userWorkNo, userRoleName, userPostName)) { + return new ArrayList<>(); + } + + List roles = new ArrayList<>(); + List userIds = new ArrayList<>(); + if (StringUtils.isNotBlank(userRoleName)) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.like(SysRole::getRoleName, userRoleName); + roles = sysRoleMapper.selectList(wrapper); + if (roles.isEmpty()) { + return new ArrayList<>(); + } + List sysUserRoles = sysUserRoleMapper.selectList(new LambdaQueryWrapper().in(SysUserRole::getRoleId, roles.stream().map(SysRole::getId).collect(Collectors.toList()))); + if (sysUserRoles.isEmpty()) { + return new ArrayList<>(); + } + userIds = sysUserRoles.stream().map(SysUserRole::getUserId).distinct().collect(Collectors.toList()); + if (userIds.isEmpty()) { + return new ArrayList<>(); + } + } + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.like(StringUtils.isNotBlank(userName), SysUser::getRealname, userName) + .like(StringUtils.isNotBlank(userWorkNo), SysUser::getWorkNo, userWorkNo) + .in(!userIds.isEmpty() && StringUtils.isNotBlank(userRoleName), SysUser::getId, userIds); +// .like(StringUtils.isNotBlank(userPostName), SysUser::getPostName, userPostName); //目前没有岗位字段 + + List userRoles = list(wrapper); + return userRoles.stream().map(SysUser::getId).distinct().collect(Collectors.toList()); + } + + @Override @Transactional(rollbackFor = Exception.class) @CacheEvict(value={CacheConstant.SYS_USERS_CACHE}, allEntries=true)