package org.jeecg.modules.system.service.impl; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Collectors; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.system.entity.SysDepart; import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.entity.SysUserDepart; import org.jeecg.modules.system.mapper.SysUserDepartMapper; import org.jeecg.modules.system.model.DepartIdModel; import org.jeecg.modules.system.service.ISysDepartService; import org.jeecg.modules.system.service.ISysUserDepartService; import org.jeecg.modules.system.service.ISysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; /** *

* 用户部门表实现类 *

* @Author ZhiLin *@since 2019-02-22 */ @Service public class SysUserDepartServiceImpl extends ServiceImpl implements ISysUserDepartService { @Autowired private ISysDepartService sysDepartService; @Autowired private ISysUserService sysUserService; /** * 根据用户id查询部门信息 */ @Override public List queryDepartIdsOfUser(String userId) { LambdaQueryWrapper queryUDep = new LambdaQueryWrapper(); LambdaQueryWrapper queryDep = new LambdaQueryWrapper(); try { queryUDep.eq(SysUserDepart::getUserId, userId); List depIdList = new ArrayList<>(); List depIdModelList = new ArrayList<>(); List userDepList = this.list(queryUDep); if(userDepList != null && userDepList.size() > 0) { for(SysUserDepart userDepart : userDepList) { depIdList.add(userDepart.getDepId()); } queryDep.in(SysDepart::getId, depIdList); List depList = sysDepartService.list(queryDep); if(depList != null || depList.size() > 0) { for(SysDepart depart : depList) { depIdModelList.add(new DepartIdModel().convertByUserDepart(depart)); } } return depIdModelList; } }catch(Exception e) { e.fillInStackTrace(); } return null; } /** * 根据部门id查询用户信息 */ @Override public List queryUserByDepId(String depId) { LambdaQueryWrapper queryUDep = new LambdaQueryWrapper(); queryUDep.eq(SysUserDepart::getDepId, depId); List userIdList = new ArrayList<>(); List uDepList = this.list(queryUDep); if(uDepList != null && uDepList.size() > 0) { for(SysUserDepart uDep : uDepList) { userIdList.add(uDep.getUserId()); } List userList = (List) sysUserService.listByIds(userIdList); //update-begin-author:taoyan date:201905047 for:接口调用查询返回结果不能返回密码相关信息 for (SysUser sysUser : userList) { sysUser.setSalt(""); sysUser.setPassword(""); } //update-end-author:taoyan date:201905047 for:接口调用查询返回结果不能返回密码相关信息 return userList; } return new ArrayList(); } /** * 根据部门code,查询当前部门和下级部门的 用户信息 */ @Override public List queryUserByDepCode(String depCode,String realname) { //update-begin-author:taoyan date:20210422 for: 根据部门选择用户接口代码优化 if(oConvertUtils.isNotEmpty(realname)){ realname = realname.trim(); } List userList = this.baseMapper.queryDepartUserList(depCode, realname); Map map = new HashMap(); for (SysUser sysUser : userList) { // 返回的用户数据去掉密码信息 sysUser.setSalt(""); sysUser.setPassword(""); map.put(sysUser.getId(), sysUser); } return new ArrayList(map.values()); //update-end-author:taoyan date:20210422 for: 根据部门选择用户接口代码优化 } @Override public IPage queryDepartUserPageList(String departId, String username, String realname, int pageSize, int pageNo) { IPage pageList = null; // 部门ID不存在 直接查询用户表即可 Page page = new Page(pageNo, pageSize); if(oConvertUtils.isEmpty(departId)){ LambdaQueryWrapper query = new LambdaQueryWrapper<>(); if(oConvertUtils.isNotEmpty(username)){ query.like(SysUser::getUsername, username); } pageList = sysUserService.page(page, query); }else{ // 有部门ID 需要走自定义sql SysDepart sysDepart = sysDepartService.getById(departId); pageList = this.baseMapper.queryDepartUserPageList(page, sysDepart.getOrgCode(), username, realname); } List userList = pageList.getRecords(); if(userList!=null && userList.size()>0){ List userIds = userList.stream().map(SysUser::getId).collect(Collectors.toList()); Map map = new HashMap(); if(userIds!=null && userIds.size()>0){ // 查部门名称 Map useDepNames = sysUserService.getDepNamesByUserIds(userIds); userList.forEach(item->{ //TODO 临时借用这个字段用于页面展示 item.setOrgCodeTxt(useDepNames.get(item.getId())); item.setSalt(""); item.setPassword(""); // 去重 map.put(item.getId(), item); }); } pageList.setRecords(new ArrayList(map.values())); } return pageList; } }