|
|
@@ -2795,4 +2795,91 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
public SysUser getByRoleIdAndDeptId(String roleId, String deptId) {
|
|
|
return baseMapper.getByRoleIdAndDeptId(roleId, deptId);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ * @param managementSource
|
|
|
+ * @return 该人员下 的子集如果是电销 或者 代理人 或者 渠道则 显示
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<SysUser> findNextTreeContain(String managementSource) {
|
|
|
+
|
|
|
+ String userId = BaseController.getUserId();
|
|
|
+ SysUser sysUser = sysUserMapper.getByUserId(userId);
|
|
|
+
|
|
|
+ //获取领导字段不为空的人的ID
|
|
|
+ QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.isNotNull("leader_id");
|
|
|
+
|
|
|
+ HashMap<String, Object> params = new HashMap<>();
|
|
|
+ params.put("managementSource",managementSource);
|
|
|
+ List<SysUser> users = sysUserMapper.selectByParams(params);
|
|
|
+
|
|
|
+ for (SysUser user : users) {
|
|
|
+ this.appendName(user);
|
|
|
+ }
|
|
|
+ if (users == null || users.isEmpty()) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ List<SysUser> topUsers = new ArrayList<>(); //存放1级用户,即没有直接上级的用户
|
|
|
+ // 根据组织结构展示级别,筛选顶层节点并构建组织结构树
|
|
|
+ if("admin".equals(sysUser.getName())){
|
|
|
+ topUsers.add(sysUserMapper.selectById("99D1501"));
|
|
|
+ }else {
|
|
|
+ this.appendName(sysUser);
|
|
|
+ topUsers.add(sysUser);
|
|
|
+ }
|
|
|
+ // 递归构建用户树结构
|
|
|
+ buildUserTreeContain(topUsers, users,managementSource);
|
|
|
+ return topUsers;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 拼接机构来源
|
|
|
+ * @param users
|
|
|
+ */
|
|
|
+ private void appendName(SysUser user) {
|
|
|
+ StringBuilder stringBuilder = new StringBuilder();
|
|
|
+ String deptId = user.getDeptId();
|
|
|
+ if (StringUtils.isNotEmpty(deptId)) {
|
|
|
+ int length = deptId.length();
|
|
|
+ if (length > 0) {
|
|
|
+ if (length <= 5) {
|
|
|
+ String dept = deptId.replaceAll("[^\\d]*(\\d+).*", "$1");
|
|
|
+ SysDept cityName = sysDeptMapper.selectById(dept);
|
|
|
+ String name = cityName.getName();
|
|
|
+ stringBuilder.append("(").append(name).append(")");
|
|
|
+ } else if (length > 5) {
|
|
|
+ String dept = deptId.replaceAll("[^\\d]*(\\d+).*", "$1");
|
|
|
+ if (dept.length() < 5) {
|
|
|
+ SysDept dept1 = sysDeptMapper.selectById(dept);
|
|
|
+ SysDept cityName = sysDeptMapper.selectById(deptId);
|
|
|
+ stringBuilder.append("(").append(dept1.getName()).append(cityName.getName()).append(")");
|
|
|
+ } else {
|
|
|
+ String deptIdTwo = dept.substring(0, 4);
|
|
|
+
|
|
|
+ SysDept dept1 = sysDeptMapper.selectById(deptIdTwo);
|
|
|
+ SysDept dept2 = sysDeptMapper.selectById(dept);
|
|
|
+ stringBuilder.append("(").append(dept1.getName()).append(dept2.getName()).append(")");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ user.setName(user.getName()+stringBuilder.toString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ private void buildUserTreeContain(List<SysUser> topUsers, List<SysUser> users, String managementSource) {
|
|
|
+ for (SysUser user : topUsers) {
|
|
|
+ List<SysUser> children = new ArrayList<>();
|
|
|
+ for (SysUser childUser : users) {
|
|
|
+ if (user.getId().equals(childUser.getLeaderId())) {
|
|
|
+ children.add(childUser);
|
|
|
+ // 递归查找下一级
|
|
|
+ buildUserTreeContain(children, users,managementSource);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ user.setChildren(children);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|