Selaa lähdekoodia

重置指定部门中指定角色的人员的指定岗位

chenshudong 2 kuukautta sitten
vanhempi
commit
ec2c4afd99

+ 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
+}

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

@@ -3,6 +3,7 @@ package com.sundot.airport.system.service;
3 3
 import java.util.List;
4 4
 
5 5
 import com.sundot.airport.common.core.domain.BaseLargeScreenQueryParamDto;
6
+import com.sundot.airport.common.core.domain.ResetUserPostDto;
6 7
 import com.sundot.airport.common.core.domain.ResetUserRoleDto;
7 8
 import com.sundot.airport.common.core.domain.entity.SysUser;
8 9
 import com.sundot.airport.system.domain.SysLargeScreenCooperationDto;
@@ -295,4 +296,11 @@ public interface ISysUserService {
295 296
      * @return 用户信息集合信息
296 297
      */
297 298
     public List<SysUser> selectUserAll();
299
+
300
+    /**
301
+     * 重置指定部门中指定角色的人员的指定岗位
302
+     *
303
+     * @return 结果
304
+     */
305
+    public int resetUserPostByDept(ResetUserPostDto resetUserPostDto);
298 306
 }

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

@@ -18,6 +18,7 @@ import cn.hutool.core.collection.CollectionUtil;
18 18
 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
+import com.sundot.airport.common.core.domain.ResetUserPostDto;
21 22
 import com.sundot.airport.common.core.domain.ResetUserRoleDto;
22 23
 import com.sundot.airport.common.core.domain.entity.SysDept;
23 24
 import com.sundot.airport.common.core.domain.entity.SysDictData;
@@ -1129,4 +1130,37 @@ public class SysUserServiceImpl implements ISysUserService {
1129 1130
                 .findFirst()
1130 1131
                 .orElse(null);
1131 1132
     }
1133
+
1134
+    /**
1135
+     * 重置指定部门中指定角色的人员的指定岗位
1136
+     */
1137
+    @Override
1138
+    public int resetUserPostByDept(ResetUserPostDto resetUserPostDto) {
1139
+        // 获取指定部门下指定角色的用户
1140
+        List<Long> userIdList = new ArrayList<>();
1141
+        resetUserPostDto.getDeptIdList().forEach(deptId -> {
1142
+            List<SysUser> sysUserList = selectUserListByRoleKeyAndDeptId(resetUserPostDto.getRoleKeyList(), deptId);
1143
+            List<Long> userIds = sysUserList.stream().map(SysUser::getUserId).collect(Collectors.toList());
1144
+            userIdList.addAll(userIds);
1145
+        });
1146
+        // 获取指定岗位
1147
+        List<Long> postIdList = new ArrayList<>();
1148
+        resetUserPostDto.getPostParentIdList().forEach(postParentId -> {
1149
+            List<SysPost> sysPostList = postMapper.selectPostByParentId(postParentId);
1150
+            List<Long> postIds = sysPostList.stream().map(SysPost::getPostId).collect(Collectors.toList());
1151
+            postIdList.addAll(postIds);
1152
+        });
1153
+        // 更新用户岗位
1154
+        for (Long userId : userIdList) {
1155
+            // 创建数据
1156
+            SysUser user = new SysUser();
1157
+            user.setUserId(userId);
1158
+            user.setPostIds(postIdList.toArray(new Long[0]));
1159
+            // 删除用户与岗位关联
1160
+            userPostMapper.deleteUserPostByUserId(userId);
1161
+            // 新增用户与岗位管理
1162
+            insertUserPost(user);
1163
+        }
1164
+        return 1;
1165
+    }
1132 1166
 }