Browse Source

Merge branch 'master' into feature/master-homepage-20260115

# Conflicts:
#	airport-system/src/main/java/com/sundot/airport/system/service/ISysUserService.java
#	airport-system/src/main/java/com/sundot/airport/system/service/impl/SysUserServiceImpl.java
chenshudong 2 months ago
parent
commit
b0c3be8fc4

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

@@ -17,6 +17,7 @@ import com.sundot.airport.attendance.domain.portrait.WorkHoursStats;
17 17
 import com.sundot.airport.check.domain.CheckLargeScreenCommonDto;
18 18
 import com.sundot.airport.check.domain.CheckLargeScreenCorrectionDto;
19 19
 import com.sundot.airport.check.domain.CheckLargeScreenCorrectionQueryParamDto;
20
+import com.sundot.airport.common.core.domain.ResetUserPostDto;
20 21
 import com.sundot.airport.common.core.domain.ResetUserRoleDto;
21 22
 import com.sundot.airport.common.core.domain.SysLargeScreenWorkingPortraitDto;
22 23
 import com.sundot.airport.common.enums.RoleTypeEnum;
@@ -528,6 +529,16 @@ public class SysUserController extends BaseController {
528 529
     }
529 530
 
530 531
     /**
532
+     * 重置指定部门中指定角色的人员的指定岗位
533
+     */
534
+    @PreAuthorize("@ss.hasPermi('system:user:edit')")
535
+    @Log(title = "重置指定部门中指定角色的人员的指定岗位", businessType = BusinessType.UPDATE)
536
+    @PostMapping("/resetUserPostByDept")
537
+    public AjaxResult resetUserPostByDept(@RequestBody ResetUserPostDto resetUserPostDto) {
538
+        return toAjax(userService.resetUserPostByDept(resetUserPostDto));
539
+    }
540
+
541
+    /**
531 542
      * 重置指定人员的指定角色
532 543
      */
533 544
     @PreAuthorize("@ss.hasPermi('system:user:edit')")

+ 34 - 0
airport-common/src/main/java/com/sundot/airport/common/core/domain/ResetUserPostDto.java

@@ -0,0 +1,34 @@
1
+package com.sundot.airport.common.core.domain;
2
+
3
+import lombok.Data;
4
+
5
+import java.io.Serializable;
6
+import java.util.List;
7
+
8
+/**
9
+ * 重置指定部门中指定角色的人员的指定岗位Dto
10
+ *
11
+ * @author sundot
12
+ * @date 2020/12/01
13
+ */
14
+@Data
15
+public class ResetUserPostDto implements Serializable {
16
+
17
+    private static final long serialVersionUID = 1L;
18
+
19
+    /**
20
+     * 部门ID列表
21
+     */
22
+    private List<Long> deptIdList;
23
+
24
+    /**
25
+     * 角色key列表
26
+     */
27
+    private List<String> roleKeyList;
28
+
29
+    /**
30
+     * 父岗位ID列表
31
+     */
32
+    private List<Long> postParentIdList;
33
+
34
+}

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

@@ -303,4 +303,11 @@ public interface ISysUserService {
303 303
      * @return 首页-用户信息
304 304
      */
305 305
     public List<LargeScreenHomePageUserInfoSqlDto> homePageUserInfo();
306
+
307
+    /**
308
+     * 重置指定部门中指定角色的人员的指定岗位
309
+     *
310
+     * @return 结果
311
+     */
312
+    public int resetUserPostByDept(ResetUserPostDto resetUserPostDto);
306 313
 }

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

@@ -19,6 +19,7 @@ import cn.hutool.core.util.ObjUtil;
19 19
 import cn.hutool.core.util.StrUtil;
20 20
 import com.sundot.airport.common.core.domain.BaseLargeScreenQueryParamDto;
21 21
 import com.sundot.airport.common.core.domain.LargeScreenHomePageUserInfoSqlDto;
22
+import com.sundot.airport.common.core.domain.ResetUserPostDto;
22 23
 import com.sundot.airport.common.core.domain.ResetUserRoleDto;
23 24
 import com.sundot.airport.common.core.domain.entity.SysDept;
24 25
 import com.sundot.airport.common.core.domain.entity.SysDictData;
@@ -1140,4 +1141,37 @@ public class SysUserServiceImpl implements ISysUserService {
1140 1141
     public List<LargeScreenHomePageUserInfoSqlDto> homePageUserInfo() {
1141 1142
         return userMapper.homePageUserInfo();
1142 1143
     }
1144
+
1145
+    /**
1146
+     * 重置指定部门中指定角色的人员的指定岗位
1147
+     */
1148
+    @Override
1149
+    public int resetUserPostByDept(ResetUserPostDto resetUserPostDto) {
1150
+        // 获取指定部门下指定角色的用户
1151
+        List<Long> userIdList = new ArrayList<>();
1152
+        resetUserPostDto.getDeptIdList().forEach(deptId -> {
1153
+            List<SysUser> sysUserList = selectUserListByRoleKeyAndDeptId(resetUserPostDto.getRoleKeyList(), deptId);
1154
+            List<Long> userIds = sysUserList.stream().map(SysUser::getUserId).collect(Collectors.toList());
1155
+            userIdList.addAll(userIds);
1156
+        });
1157
+        // 获取指定岗位
1158
+        List<Long> postIdList = new ArrayList<>();
1159
+        resetUserPostDto.getPostParentIdList().forEach(postParentId -> {
1160
+            List<SysPost> sysPostList = postMapper.selectPostByParentId(postParentId);
1161
+            List<Long> postIds = sysPostList.stream().map(SysPost::getPostId).collect(Collectors.toList());
1162
+            postIdList.addAll(postIds);
1163
+        });
1164
+        // 更新用户岗位
1165
+        for (Long userId : userIdList) {
1166
+            // 创建数据
1167
+            SysUser user = new SysUser();
1168
+            user.setUserId(userId);
1169
+            user.setPostIds(postIdList.toArray(new Long[0]));
1170
+            // 删除用户与岗位关联
1171
+            userPostMapper.deleteUserPostByUserId(userId);
1172
+            // 新增用户与岗位管理
1173
+            insertUserPost(user);
1174
+        }
1175
+        return 1;
1176
+    }
1143 1177
 }