wks 1 год назад
Родитель
Сommit
623848c80f

+ 12 - 4
src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java

@@ -539,6 +539,13 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
      */
     List<SysUser> selectLeaderBylanderInfo(@Param("deptId") String deptId, @Param("leaderId") String leaderId, @Param("userId") String userId);
 
+    /**
+     * 向上查询领导人
+     *
+     * @param userId
+     * @return
+     */
+    List<SysUser> queryUpTheLeader(@Param("userId") String userId);
 
     /**
      * @version
@@ -549,11 +556,12 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
     List<SysUser> findDxZyUserList();
 
     List<SysUser> selectByUserId(List<String> ids);
+
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2024/12/25 18:28
-     *  @Description:  查询所有的人员
+     * @version
+     * @author: hxl
+     * @Date: 2024/12/25 18:28
+     * @Description: 查询所有的人员
      */
     Page<SysUserBaseVO> findAllUsers(@Param("page") Page<SysUserBaseVO> page, @Param("user") SysUserDto sysUserDto);
 }

+ 1 - 0
src/main/java/com/ydtech/modules/admin/model/SysUser.java

@@ -27,6 +27,7 @@ import java.util.List;
 @Data
 @ApiModel
 public class SysUser extends BaseEntity {
+
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 

+ 4 - 45
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -2088,59 +2088,18 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
     private List<SysUserBaseVO> dataDivide(List<SysUserBaseVO> allUsersByHospitality) {
-        List<SysUser> userList = new ArrayList<>();
         SysUser landerInfo = BaseController.getUser();
         //超级管理员不做处理
         if ("admin".equals(landerInfo.getId()) || "99D1501".equals(landerInfo.getId())) {
             return allUsersByHospitality;
         }
 
+        List<SysUser> userList = super.baseMapper.queryUpTheLeader(landerInfo.getId());
+        userList.add(landerInfo);
         //获取查询结果id
-        List<String> userIds = new ArrayList<>();
-        //如果登陆者部门所属总裁办,则进行是否是运营中心领导人逻辑的判断
-        if ("99D15".equals(landerInfo.getDeptId())) {
-            //判断登陆者下属是否所属运营中心
-            LambdaQueryWrapper<SysUser> getLanderBranch = new LambdaQueryWrapper<>();
-            getLanderBranch.notLike(SysUser::getId, "M")
-                    .eq(SysUser::getDeptId, "9914D18")
-                    .eq(SysUser::getLeaderId, landerInfo.getId());
-            List<SysUser> sysUserList = list(getLanderBranch);
-
-            if (StringUtils.isNullOrEmpty(sysUserList) || sysUserList.isEmpty()) {
-                //如果不属于运营中心则不展示数据
-                return new ArrayList<>();
-            }
-            userIds.add(landerInfo.getId());
-            //获取运营中心全部员工
-            LambdaQueryWrapper<SysUser> getOperationUser = new LambdaQueryWrapper<>();
-            getOperationUser.notLike(SysUser::getId, "M")
-                    .eq(SysUser::getDeptId, "9914D18")
-                    .isNotNull(SysUser::getLeaderId);
-            userList.addAll(list(getOperationUser));
-        } else if ("9914D18".equals(landerInfo.getDeptId()) || "9914D13".equals(landerInfo.getDeptId())) {
-            //查询登陆者组长信息
-            List<SysUser> sysUsers = super.baseMapper.selectLeaderBylanderInfo(landerInfo.getDeptId(), null, landerInfo.getLeaderId());
-            if (StringUtils.isNullOrEmpty(sysUsers) || sysUsers.size() < 1) {
-                userIds.add(landerInfo.getId());
-                //为空则登陆者为组长,id当做leaderID查询
-                sysUsers = super.baseMapper.selectLeaderBylanderInfo(landerInfo.getDeptId(), landerInfo.getId(), null);
-                userList.addAll(sysUsers);
-            } else {
-                SysUser sysUser = sysUsers.get(0);
-                userList.add(sysUser);
-                List<SysUser> sysUserList = super.baseMapper.selectLeaderBylanderInfo(landerInfo.getDeptId(), landerInfo.getLeaderId(), null);
-                userList.addAll(sysUserList);
-            }
-        } else {
-            //如果不属于运营中心则不展示数据
-            return new ArrayList<>();
-        }
-
-        //获取查询结果id
-         userIds.addAll(userList.stream()
+        List<String> userIds = userList.stream()
                 .filter(user -> !StringUtils.isNullOrEmpty(user) && StringUtils.isNotEmpty(user.getId()))
-                .map(SysUser::getId)
-                .collect(Collectors.toList()));
+                .map(SysUser::getId).collect(Collectors.toList());
 
         List<SysUserBaseVO> divideUserInfo = allUsersByHospitality.stream()
                 .filter(allUser -> !StringUtils.isNullOrEmpty(allUser) && StringUtils.isNotEmpty(allUser.getLeaderId())

+ 29 - 0
src/main/resources/mapper/modules/admin/SysUserMapper.xml

@@ -2084,6 +2084,35 @@
         </where>
     </select>
 
+    <select id="queryUpTheLeader" resultType="com.ydtech.modules.admin.model.SysUser">
+        WITH RECURSIVE Subordinates AS (
+            SELECT
+                u.id,
+                u.name,
+                u.leader_id,
+                l.name AS leader_name,
+                1 AS level
+            FROM sys_user u
+                     LEFT JOIN sys_user l ON u.leader_id = l.id
+            WHERE
+                u.leader_id = #{userId}
+              AND u.id NOT LIKE '%M%'
+            UNION ALL
+            SELECT
+                u.id,
+                u.name,
+                u.leader_id,
+                l.name AS leader_name,
+                s.level + 1
+            FROM sys_user u
+                     INNER JOIN Subordinates s ON u.leader_id = s.id
+                     LEFT JOIN sys_user l ON u.leader_id = l.id
+            WHERE
+                u.id NOT LIKE '%M%'
+        )
+        SELECT * FROM Subordinates;
+    </select>
+
     <select id="findDxZyUserList" resultType="com.ydtech.modules.admin.model.SysUser">
         SELECT t1.id   AS id,
                t1.NAME AS NAME