Pārlūkot izejas kodu

组织画像-查获模块

chenshudong 3 mēneši atpakaļ
vecāks
revīzija
53262867be

+ 19 - 4
airport-admin/src/main/java/com/sundot/airport/web/controller/portrait/ItemUserRankingController.java

@@ -3,9 +3,11 @@ package com.sundot.airport.web.controller.portrait;
3 3
 import cn.hutool.core.collection.CollectionUtil;
4 4
 import com.sundot.airport.common.core.domain.AjaxResult;
5 5
 import com.sundot.airport.common.core.domain.BaseLargeScreenQueryParamDto;
6
+import com.sundot.airport.common.core.domain.entity.SysDept;
6 7
 import com.sundot.airport.common.core.domain.entity.SysUser;
7 8
 import com.sundot.airport.common.domain.portrait.ApprovalDurationStats;
8 9
 import com.sundot.airport.common.domain.portrait.IndicatorCalculateParams;
10
+import com.sundot.airport.common.enums.DeptTypeEnum;
9 11
 import com.sundot.airport.common.enums.RoleTypeEnum;
10 12
 import com.sundot.airport.common.enums.portrait.UserType;
11 13
 import com.sundot.airport.common.utils.DateUtils;
@@ -15,6 +17,7 @@ import com.sundot.airport.item.domain.ItemLargeScreenDailyTrendDto;
15 17
 import com.sundot.airport.item.domain.ItemLargeScreenTimeSpanDto;
16 18
 import com.sundot.airport.item.service.UserRankingService;
17 19
 import com.sundot.airport.system.domain.approval.ApprovalInstance;
20
+import com.sundot.airport.system.mapper.SysDeptMapper;
18 21
 import com.sundot.airport.system.mapper.approval.ApprovalHistoryMapper;
19 22
 import com.sundot.airport.system.mapper.approval.ApprovalInstanceMapper;
20 23
 import com.sundot.airport.system.mapper.SysUserMapper;
@@ -49,11 +52,14 @@ public class ItemUserRankingController {
49 52
     @Autowired
50 53
     private SysUserMapper sysUserMapper;
51 54
 
55
+    @Autowired
56
+    private SysDeptMapper sysDeptMapper;
57
+
52 58
     /**
53 59
      * 获取用户在指定层级的详细排名信息
54 60
      *
55 61
      * @param dto   查询参数
56
-     * @param level 层级类型:station(全站), department(科室), team(班组)
62
+     * @param level 层级类型:station(全站), brigade(大队), department(科室), team(班组)
57 63
      * @return 用户在该层级的详细排名信息
58 64
      */
59 65
     @Cacheable(
@@ -115,7 +121,7 @@ public class ItemUserRankingController {
115 121
 
116 122
         // 查询workflow_id为4或5的审批实例(查获审批流程)
117 123
         List<ApprovalInstance> instances = approvalInstanceMapper.selectApprovalInstancesByWorkflowIdsAndTimeRangeAndUsers(
118
-                Arrays.asList(4L, 5L),
124
+                Arrays.asList(7L),
119 125
                 startTime,
120 126
                 endTime,
121 127
                 userIds);
@@ -232,9 +238,18 @@ public class ItemUserRankingController {
232 238
             queryDto.setStartDate(startTime);
233 239
             queryDto.setEndDate(endTime);
234 240
 
235
-            // 如果传了科室ID,则设置到查询参数中
241
+            // 如果传了部门ID,则设置到查询参数中
236 242
             if (params.getDeptId() != null) {
237
-                queryDto.setInspectDepartmentId(params.getDeptId());
243
+                SysDept sysDept = sysDeptMapper.selectDeptById(params.getDeptId());
244
+                if (sysDept != null) {
245
+                    if (DeptTypeEnum.BRIGADE.getCode().equals(sysDept.getDeptType())) {
246
+                        queryDto.setInspectBrigadeId(params.getDeptId());
247
+                    } else if (DeptTypeEnum.MANAGER.getCode().equals(sysDept.getDeptType())) {
248
+                        queryDto.setInspectDepartmentId(params.getDeptId());
249
+                    } else if (DeptTypeEnum.TEAMS.getCode().equals(sysDept.getDeptType())) {
250
+                        queryDto.setInspectTeamId(params.getDeptId());
251
+                    }
252
+                }
238 253
             }
239 254
 
240 255
             // 调用service获取按天统计的查获趋势数据,没有的补0

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

@@ -195,7 +195,7 @@ public class SysUserController extends BaseController {
195 195
         if (Objects.nonNull(dto.getDeptId())) {
196 196
             SysDept sysDept = deptService.selectDeptById(dto.getDeptId());
197 197
             if (StrUtil.equals(DeptTypeEnum.STATION.getCode(), sysDept.getDeptType()) || StrUtil.equals(DeptTypeEnum.BRIGADE.getCode(), sysDept.getDeptType()) || StrUtil.equals(DeptTypeEnum.MANAGER.getCode(), sysDept.getDeptType()) || StrUtil.equals(DeptTypeEnum.TEAMS.getCode(), sysDept.getDeptType())) {
198
-                indicatorCalculateParams.setUserType(StrUtil.equals(DeptTypeEnum.STATION.getCode(), sysDept.getDeptType()) ? UserType.STATION : StrUtil.equals(DeptTypeEnum.BRIGADE.getCode(), sysDept.getDeptType()) ? UserType.BRIGADE : StrUtil.equals(DeptTypeEnum.DEPARTMENT.getCode(), sysDept.getDeptType()) ? UserType.DEPARTMENT : UserType.TEAM);
198
+                indicatorCalculateParams.setUserType(StrUtil.equals(DeptTypeEnum.STATION.getCode(), sysDept.getDeptType()) ? UserType.STATION : StrUtil.equals(DeptTypeEnum.BRIGADE.getCode(), sysDept.getDeptType()) ? UserType.BRIGADE : StrUtil.equals(DeptTypeEnum.MANAGER.getCode(), sysDept.getDeptType()) ? UserType.DEPARTMENT : UserType.TEAM);
199 199
                 List<SysUser> sysUsers = iSysUserService.selectUserListByRoleKeyAndDeptId(Arrays.asList(RoleTypeEnum.banzuzhang.getCode(), RoleTypeEnum.SecurityCheck.getCode()), dto.getDeptId());
200 200
                 indicatorCalculateParams.setUserIds(sysUsers.stream().map(SysUser::getUserId).collect(Collectors.toList()));
201 201
                 indicatorCalculateParams.setDeptId(dto.getDeptId());

+ 63 - 5
airport-item/src/main/java/com/sundot/airport/item/service/impl/UserRankingServiceImpl.java

@@ -81,8 +81,25 @@ public class UserRankingServiceImpl implements UserRankingService {
81 81
         List<SysDept> collect = new ArrayList<>();
82 82
         switch (level) {
83 83
             case "station":
84
-                if (dept.getDeptType().equals(DeptTypeEnum.DEPARTMENT.getCode())) {
85
-                    collect = allDepts.stream().filter(de -> de.getDeptType().equals(DeptTypeEnum.DEPARTMENT.getCode())).collect(Collectors.toList());
84
+                if (dept.getDeptType().equals(DeptTypeEnum.BRIGADE.getCode())) {
85
+                    collect = allDepts.stream().filter(de -> de.getDeptType().equals(DeptTypeEnum.BRIGADE.getCode())).collect(Collectors.toList());
86
+                    //查所有的大队
87
+                    rankings = itemLargeScreenMapper.rankByBrigade(dto);
88
+                } else if (dept.getDeptType().equals(DeptTypeEnum.MANAGER.getCode())) {
89
+                    collect = allDepts.stream().filter(de -> de.getDeptType().equals(DeptTypeEnum.MANAGER.getCode())).collect(Collectors.toList());
90
+                    //查所有的科
91
+                    rankings = itemLargeScreenMapper.rankByDepartment(dto);
92
+                } else if (dept.getDeptType().equals(DeptTypeEnum.TEAMS.getCode())) {
93
+                    //查所有的班
94
+                    collect = allDepts.stream().filter(de -> de.getDeptType().equals(DeptTypeEnum.TEAMS.getCode())).collect(Collectors.toList());
95
+                    rankings = itemLargeScreenMapper.rankByTeam(dto);
96
+                } else {
97
+                    return null;
98
+                }
99
+                break;
100
+            case "brigade":
101
+                if (dept.getDeptType().equals(DeptTypeEnum.MANAGER.getCode())) {
102
+                    collect = allDepts.stream().filter(de -> de.getDeptType().equals(DeptTypeEnum.MANAGER.getCode())).collect(Collectors.toList());
86 103
                     //查所有的科
87 104
                     rankings = itemLargeScreenMapper.rankByDepartment(dto);
88 105
                 } else if (dept.getDeptType().equals(DeptTypeEnum.TEAMS.getCode())) {
@@ -215,11 +232,25 @@ public class UserRankingServiceImpl implements UserRankingService {
215 232
                 return null;
216 233
             }
217 234
         }
235
+        Long brigadeId = findBrigadeIdByUser(user);
236
+        List<SysUser> brigadeIdUsers = new ArrayList<>();
237
+        if (brigadeId != null) {
238
+            stationUsers = sysUserService.selectUserListByRoleKeyAndDeptId(
239
+                    Arrays.asList(RoleTypeEnum.banzuzhang.getCode(), RoleTypeEnum.SecurityCheck.getCode()),
240
+                    brigadeId);
241
+            if (CollectionUtil.isEmpty(stationUsers)) {
242
+                return null;
243
+            }
244
+        }
218 245
         switch (level) {
219 246
             case "station":
220 247
                 // 查询站下所有用户
221 248
                 users.addAll(stationUsers);
222 249
                 return itemLargeScreenMapper.rankByIndividual(dto);
250
+            case "brigade":
251
+                // 查询大队下所有用户
252
+                users.addAll(brigadeIdUsers);
253
+                return itemLargeScreenMapper.rankByIndividual(dto);
223 254
             case "department":
224 255
                 if (RoleTypeEnum.banzuzhang.getCode().equals(sysRole.getRoleKey()) ||
225 256
                         RoleTypeEnum.SecurityCheck.getCode().equals(sysRole.getRoleKey())) {
@@ -268,6 +299,33 @@ public class UserRankingServiceImpl implements UserRankingService {
268 299
         return currentDept != null ? currentDept.getDeptId() : null;
269 300
     }
270 301
 
302
+    /**
303
+     * 根据用户查找其所属的大队ID
304
+     *
305
+     * @param user 用户
306
+     * @return 站点ID
307
+     */
308
+    private Long findBrigadeIdByUser(SysUser user) {
309
+        // 获取用户所在部门
310
+        SysDept userDept = user.getDept();
311
+        if (userDept == null) {
312
+            return null;
313
+        }
314
+
315
+        // 如果用户所在部门就是大队
316
+        if (DeptTypeEnum.BRIGADE.getCode().equals(userDept.getDeptType())) {
317
+            return userDept.getDeptId();
318
+        }
319
+
320
+        // 向上查找父级部门,直到找到大队
321
+        SysDept currentDept = userDept;
322
+        while (currentDept != null && !DeptTypeEnum.BRIGADE.getCode().equals(currentDept.getDeptType())) {
323
+            currentDept = sysDeptService.selectDeptById(currentDept.getParentId());
324
+        }
325
+
326
+        return currentDept != null ? currentDept.getDeptId() : null;
327
+    }
328
+
271 329
     // 构建默认排名对象
272 330
     private ItemLargeScreenCommonDto buildDefaultRanking(SysUser user) {
273 331
         ItemLargeScreenCommonDto dto = new ItemLargeScreenCommonDto();
@@ -306,8 +364,8 @@ public class UserRankingServiceImpl implements UserRankingService {
306 364
         // 直接查询部门信息
307 365
         SysDept queryDept = new SysDept();
308 366
         queryDept.setDeptId(params.getDeptId());
309
-        queryDept.setDeptType(DeptTypeEnum.DEPARTMENT.getCode());
310
-        //查询站和科室的信息
367
+        queryDept.setDeptType(DeptTypeEnum.BRIGADE.getCode());
368
+        //查询站和大队的信息
311 369
         List<SysDept> sysDeptList = sysDeptService.selectDeptInfo(queryDept);
312 370
         if (CollectionUtil.isEmpty(sysDeptList)) {
313 371
             return result;
@@ -318,7 +376,7 @@ public class UserRankingServiceImpl implements UserRankingService {
318 376
         sysDeptList.forEach(sysDept -> {
319 377
             BaseLargeScreenQueryParamDto dto = new BaseLargeScreenQueryParamDto();
320 378
             if (!sysDept.getDeptId().equals(params.getDeptId())) {
321
-                dto.setInspectDepartmentId(sysDept.getDeptId());
379
+                dto.setInspectBrigadeId(sysDept.getDeptId());
322 380
             }
323 381
             dto.setStartDate(startTime);
324 382
             dto.setEndDate(endTime);