8b33fc8eac1a56e7c1093e30e3377cf26d7e48d9.svn-base 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. package org.jeecg.modules.system.service.impl;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import java.util.stream.Collectors;
  7. import java.util.stream.Collectors;
  8. import com.baomidou.mybatisplus.core.conditions.Wrapper;
  9. import com.baomidou.mybatisplus.core.metadata.IPage;
  10. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  11. import org.jeecg.common.util.oConvertUtils;
  12. import org.jeecg.modules.system.entity.SysDepart;
  13. import org.jeecg.modules.system.entity.SysUser;
  14. import org.jeecg.modules.system.entity.SysUserDepart;
  15. import org.jeecg.modules.system.mapper.SysUserDepartMapper;
  16. import org.jeecg.modules.system.model.DepartIdModel;
  17. import org.jeecg.modules.system.service.ISysDepartService;
  18. import org.jeecg.modules.system.service.ISysUserDepartService;
  19. import org.jeecg.modules.system.service.ISysUserService;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.stereotype.Service;
  22. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  23. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  24. /**
  25. * <P>
  26. * 用户部门表实现类
  27. * <p/>
  28. * @Author ZhiLin
  29. *@since 2019-02-22
  30. */
  31. @Service
  32. public class SysUserDepartServiceImpl extends ServiceImpl<SysUserDepartMapper, SysUserDepart> implements ISysUserDepartService {
  33. @Autowired
  34. private ISysDepartService sysDepartService;
  35. @Autowired
  36. private ISysUserService sysUserService;
  37. /**
  38. * 根据用户id查询部门信息
  39. */
  40. @Override
  41. public List<DepartIdModel> queryDepartIdsOfUser(String userId) {
  42. LambdaQueryWrapper<SysUserDepart> queryUDep = new LambdaQueryWrapper<SysUserDepart>();
  43. LambdaQueryWrapper<SysDepart> queryDep = new LambdaQueryWrapper<SysDepart>();
  44. try {
  45. queryUDep.eq(SysUserDepart::getUserId, userId);
  46. List<String> depIdList = new ArrayList<>();
  47. List<DepartIdModel> depIdModelList = new ArrayList<>();
  48. List<SysUserDepart> userDepList = this.list(queryUDep);
  49. if(userDepList != null && userDepList.size() > 0) {
  50. for(SysUserDepart userDepart : userDepList) {
  51. depIdList.add(userDepart.getDepId());
  52. }
  53. queryDep.in(SysDepart::getId, depIdList);
  54. List<SysDepart> depList = sysDepartService.list(queryDep);
  55. if(depList != null || depList.size() > 0) {
  56. for(SysDepart depart : depList) {
  57. depIdModelList.add(new DepartIdModel().convertByUserDepart(depart));
  58. }
  59. }
  60. return depIdModelList;
  61. }
  62. }catch(Exception e) {
  63. e.fillInStackTrace();
  64. }
  65. return null;
  66. }
  67. /**
  68. * 根据部门id查询用户信息
  69. */
  70. @Override
  71. public List<SysUser> queryUserByDepId(String depId) {
  72. LambdaQueryWrapper<SysUserDepart> queryUDep = new LambdaQueryWrapper<SysUserDepart>();
  73. queryUDep.eq(SysUserDepart::getDepId, depId);
  74. List<String> userIdList = new ArrayList<>();
  75. List<SysUserDepart> uDepList = this.list(queryUDep);
  76. if(uDepList != null && uDepList.size() > 0) {
  77. for(SysUserDepart uDep : uDepList) {
  78. userIdList.add(uDep.getUserId());
  79. }
  80. List<SysUser> userList = (List<SysUser>) sysUserService.listByIds(userIdList);
  81. //update-begin-author:taoyan date:201905047 for:接口调用查询返回结果不能返回密码相关信息
  82. for (SysUser sysUser : userList) {
  83. sysUser.setSalt("");
  84. sysUser.setPassword("");
  85. }
  86. //update-end-author:taoyan date:201905047 for:接口调用查询返回结果不能返回密码相关信息
  87. return userList;
  88. }
  89. return new ArrayList<SysUser>();
  90. }
  91. /**
  92. * 根据部门code,查询当前部门和下级部门的 用户信息
  93. */
  94. @Override
  95. public List<SysUser> queryUserByDepCode(String depCode,String realname) {
  96. //update-begin-author:taoyan date:20210422 for: 根据部门选择用户接口代码优化
  97. if(oConvertUtils.isNotEmpty(realname)){
  98. realname = realname.trim();
  99. }
  100. List<SysUser> userList = this.baseMapper.queryDepartUserList(depCode, realname);
  101. Map<String, SysUser> map = new HashMap<String, SysUser>();
  102. for (SysUser sysUser : userList) {
  103. // 返回的用户数据去掉密码信息
  104. sysUser.setSalt("");
  105. sysUser.setPassword("");
  106. map.put(sysUser.getId(), sysUser);
  107. }
  108. return new ArrayList<SysUser>(map.values());
  109. //update-end-author:taoyan date:20210422 for: 根据部门选择用户接口代码优化
  110. }
  111. @Override
  112. public IPage<SysUser> queryDepartUserPageList(String departId, String username, String realname, int pageSize, int pageNo) {
  113. IPage<SysUser> pageList = null;
  114. // 部门ID不存在 直接查询用户表即可
  115. Page<SysUser> page = new Page<SysUser>(pageNo, pageSize);
  116. if(oConvertUtils.isEmpty(departId)){
  117. LambdaQueryWrapper<SysUser> query = new LambdaQueryWrapper<>();
  118. if(oConvertUtils.isNotEmpty(username)){
  119. query.like(SysUser::getUsername, username);
  120. }
  121. pageList = sysUserService.page(page, query);
  122. }else{
  123. // 有部门ID 需要走自定义sql
  124. SysDepart sysDepart = sysDepartService.getById(departId);
  125. pageList = this.baseMapper.queryDepartUserPageList(page, sysDepart.getOrgCode(), username, realname);
  126. }
  127. List<SysUser> userList = pageList.getRecords();
  128. if(userList!=null && userList.size()>0){
  129. List<String> userIds = userList.stream().map(SysUser::getId).collect(Collectors.toList());
  130. Map<String, SysUser> map = new HashMap<String, SysUser>();
  131. if(userIds!=null && userIds.size()>0){
  132. // 查部门名称
  133. Map<String,String> useDepNames = sysUserService.getDepNamesByUserIds(userIds);
  134. userList.forEach(item->{
  135. //TODO 临时借用这个字段用于页面展示
  136. item.setOrgCodeTxt(useDepNames.get(item.getId()));
  137. item.setSalt("");
  138. item.setPassword("");
  139. // 去重
  140. map.put(item.getId(), item);
  141. });
  142. }
  143. pageList.setRecords(new ArrayList<SysUser>(map.values()));
  144. }
  145. return pageList;
  146. }
  147. }