Ver código fonte

用户信息-根据用户ID和角色编码列表查询各级直属领导列表接口

chenshudong 1 dia atrás
pai
commit
ad2dcdbcb6

+ 11 - 0
airport-admin/src/main/java/com/sundot/airport/web/controller/system/SysUserController.java

@@ -21,6 +21,7 @@ import com.sundot.airport.common.core.domain.ResetUserPostDto;
21 21
 import com.sundot.airport.common.core.domain.ResetUserRoleDto;
22 22
 import com.sundot.airport.common.core.domain.SysLargeScreenWorkingPortraitDto;
23 23
 import com.sundot.airport.common.dto.SysUserConditionDto;
24
+import com.sundot.airport.common.dto.SysUserLeaderConditionDto;
24 25
 import com.sundot.airport.common.enums.RoleTypeEnum;
25 26
 import com.sundot.airport.exam.domain.DailyTask;
26 27
 import com.sundot.airport.attendance.portrait.AttendanceModuleIndicatorResult;
@@ -924,4 +925,14 @@ public class SysUserController extends BaseController {
924 925
 
925 926
         return result;
926 927
     }
928
+
929
+    /**
930
+     * 根据用户ID和角色编码列表查询各级直属领导列表
931
+     */
932
+    @PostMapping("/selectUserLeaderListByCondition")
933
+    public AjaxResult selectUserLeaderListByCondition(@RequestBody SysUserLeaderConditionDto dto) {
934
+        List<SysUser> result = userService.selectUserLeaderListByCondition(dto);
935
+        return success(result);
936
+    }
937
+
927 938
 }

+ 26 - 0
airport-common/src/main/java/com/sundot/airport/common/dto/SysUserLeaderConditionDto.java

@@ -0,0 +1,26 @@
1
+package com.sundot.airport.common.dto;
2
+
3
+import lombok.Data;
4
+
5
+import java.util.List;
6
+
7
+/**
8
+ * 查询用户各级直属领导列表参数
9
+ *
10
+ * @Author: wangchong
11
+ * @Date: 2025/7/15 16:12
12
+ **/
13
+@Data
14
+public class SysUserLeaderConditionDto {
15
+
16
+    /**
17
+     * 用户ID
18
+     */
19
+    private Long userId;
20
+
21
+    /**
22
+     * 角色编码列表
23
+     */
24
+    private List<String> roleKeyList;
25
+
26
+}

+ 9 - 0
airport-system/src/main/java/com/sundot/airport/system/mapper/SysUserMapper.java

@@ -254,4 +254,13 @@ public interface SysUserMapper {
254 254
      * @return 用户信息列表
255 255
      */
256 256
     public List<LargeScreenHomePageUserInfoSqlDto> homePageUserInfoByDepartmentId(@Param("departmentId") Long departmentId);
257
+
258
+    /**
259
+     * 根据部门ID和角色编码列表查询用户列表
260
+     *
261
+     * @param deptId 组织ID
262
+     * @param list   角色编码列表
263
+     * @return 用户信息集合
264
+     */
265
+    public List<SysUser> selectUserLeaderByDeptIdAndRoleKeyList(@Param("deptId") Long deptId, @Param("list") List<String> list);
257 266
 }

+ 9 - 0
airport-system/src/main/java/com/sundot/airport/system/service/ISysUserService.java

@@ -8,6 +8,7 @@ import com.sundot.airport.common.core.domain.ResetUserPostDto;
8 8
 import com.sundot.airport.common.core.domain.ResetUserRoleDto;
9 9
 import com.sundot.airport.common.core.domain.entity.SysUser;
10 10
 import com.sundot.airport.common.dto.SysUserConditionDto;
11
+import com.sundot.airport.common.dto.SysUserLeaderConditionDto;
11 12
 import com.sundot.airport.system.domain.SysLargeScreenCooperationDto;
12 13
 import com.sundot.airport.system.domain.SysLargeScreenCooperationQueryParamDto;
13 14
 
@@ -344,4 +345,12 @@ public interface ISysUserService {
344 345
      * @return 用户信息列表
345 346
      */
346 347
     public List<LargeScreenHomePageUserInfoSqlDto> homePageUserInfoByDepartmentId(Long departmentId);
348
+
349
+    /**
350
+     * 根据用户ID和角色编码列表查询各级直属领导列表
351
+     *
352
+     * @param dto 查询用户列表参数
353
+     * @return 用户信息集合
354
+     */
355
+    public List<SysUser> selectUserLeaderListByCondition(SysUserLeaderConditionDto dto);
347 356
 }

+ 40 - 0
airport-system/src/main/java/com/sundot/airport/system/service/impl/SysUserServiceImpl.java

@@ -24,6 +24,7 @@ import com.sundot.airport.common.core.domain.ResetUserRoleDto;
24 24
 import com.sundot.airport.common.core.domain.entity.SysDept;
25 25
 import com.sundot.airport.common.core.domain.entity.SysDictData;
26 26
 import com.sundot.airport.common.dto.SysUserConditionDto;
27
+import com.sundot.airport.common.dto.SysUserLeaderConditionDto;
27 28
 import com.sundot.airport.common.dto.UserInfo;
28 29
 import com.sundot.airport.common.enums.AssessmentTeamEnum;
29 30
 import com.sundot.airport.common.enums.DeptType;
@@ -1249,4 +1250,43 @@ public class SysUserServiceImpl implements ISysUserService {
1249 1250
     public List<LargeScreenHomePageUserInfoSqlDto> homePageUserInfoByDepartmentId(Long departmentId) {
1250 1251
         return userMapper.homePageUserInfoByDepartmentId(departmentId);
1251 1252
     }
1253
+
1254
+    /**
1255
+     * 根据用户ID和角色编码列表查询各级直属领导列表
1256
+     *
1257
+     * @param dto 查询用户列表参数
1258
+     * @return 用户信息集合
1259
+     */
1260
+    @Override
1261
+    public List<SysUser> selectUserLeaderListByCondition(SysUserLeaderConditionDto dto) {
1262
+        if (dto.getUserId() == null) {
1263
+            return userMapper.selectUserListByRoleKey(dto.getRoleKeyList());
1264
+        }
1265
+        if (CollUtil.isEmpty(dto.getRoleKeyList())) {
1266
+            return Collections.emptyList();
1267
+        }
1268
+        List<SysUser> result = new ArrayList<>();
1269
+        SysUser sysUser = userMapper.selectUserById(dto.getUserId());
1270
+        List<SysDept> deptList = deptService.selectAllDept(sysUser.getDeptId());
1271
+        if (CollUtil.isEmpty(deptList)) {
1272
+            return result;
1273
+        }
1274
+        Collections.reverse(deptList);
1275
+        SysDept teams = deptList.stream().filter(x -> StrUtil.equals(DeptType.TEAMS.getCode(), x.getDeptType())).findFirst().orElse(new SysDept());
1276
+        SysDept department = deptList.stream().filter(x -> StrUtil.equals(DeptType.MANAGER.getCode(), x.getDeptType())).findFirst().orElse(new SysDept());
1277
+        SysDept brigade = deptList.stream().filter(x -> StrUtil.equals(DeptType.BRIGADE.getCode(), x.getDeptType())).findFirst().orElse(new SysDept());
1278
+        SysDept station = deptList.stream().filter(x -> StrUtil.equals(DeptType.STATION.getCode(), x.getDeptType())).findFirst().orElse(new SysDept());
1279
+        dto.getRoleKeyList().forEach(roleKey -> {
1280
+            if (StrUtil.equals(roleKey, RoleTypeEnum.banzuzhang.getCode())) {
1281
+                result.addAll(userMapper.selectUserLeaderByDeptIdAndRoleKeyList(teams.getDeptId(), Collections.singletonList(roleKey)));
1282
+            } else if (StrUtil.equals(roleKey, RoleTypeEnum.kezhang.getCode())) {
1283
+                result.addAll(userMapper.selectUserLeaderByDeptIdAndRoleKeyList(department.getDeptId(), Collections.singletonList(roleKey)));
1284
+            } else if (StrUtil.equals(roleKey, RoleTypeEnum.xingzheng.getCode()) || StrUtil.equals(roleKey, RoleTypeEnum.jingli.getCode())) {
1285
+                result.addAll(userMapper.selectUserLeaderByDeptIdAndRoleKeyList(brigade.getDeptId(), Collections.singletonList(roleKey)));
1286
+            } else if (StrUtil.equals(roleKey, RoleTypeEnum.test.getCode())) {
1287
+                result.addAll(userMapper.selectUserLeaderByDeptIdAndRoleKeyList(station.getDeptId(), Collections.singletonList(roleKey)));
1288
+            }
1289
+        });
1290
+        return result.stream().distinct().collect(Collectors.toList());
1291
+    }
1252 1292
 }

+ 21 - 0
airport-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -1183,4 +1183,25 @@
1183 1183
           and sr.role_key in ('banzuzhang', 'SecurityCheck')
1184 1184
           and sd_ks.dept_id = #{departmentId}
1185 1185
     </select>
1186
+
1187
+    <select id="selectUserLeaderByDeptIdAndRoleKeyList" resultType="sysUser">
1188
+        select distinct su.user_id userId,
1189
+        su.user_name userName,
1190
+        su.nick_name nickName
1191
+        from sys_user su
1192
+        inner join sys_dept sd on sd.dept_id = su.dept_id
1193
+        inner join sys_user_role sur on sur.user_id = su.user_id
1194
+        inner join sys_role sr on sr.role_id = sur.role_id
1195
+        where su.del_flag = '0'
1196
+        and su.status = '0'
1197
+        and sd.del_flag = '0'
1198
+        and sd.status = '0'
1199
+        and sr.del_flag = '0'
1200
+        and sr.status = '0'
1201
+        and su.dept_id = #{deptId}
1202
+        and sr.role_key in
1203
+        <foreach collection="list" item="item" open="(" separator="," close=")">
1204
+            #{item}
1205
+        </foreach>
1206
+    </select>
1186 1207
 </mapper>