Browse Source

add:中台增加权限管理(查询部门增加部门人数字段)

lyx 5 days ago
parent
commit
611d9ea4d0

+ 10 - 0
alien-entity/src/main/java/shop/alien/entity/store/vo/LifeSysDeptVo.java

@@ -25,8 +25,16 @@ public class LifeSysDeptVo extends LifeSysDept {
     @ApiModelProperty(value = "子部门列表")
     private List<LifeSysDeptVo> children;
 
+    @ApiModelProperty(value = "部门人员数量(包含子部门)")
+    private Integer memberCount;
+
+    @ApiModelProperty(value = "当前部门人数")
+    private Integer currentMemberCount;
+
     public LifeSysDeptVo() {
         this.children = new ArrayList<>();
+        this.memberCount = 0;
+        this.currentMemberCount = 0;
     }
 
     /**
@@ -56,6 +64,8 @@ public class LifeSysDeptVo extends LifeSysDept {
         vo.setUpdatedTime(dept.getUpdatedTime());
         vo.setDescription(dept.getDescription());
         vo.setChildren(new ArrayList<>());
+        vo.setMemberCount(0); // 初始化为0,后续会通过统计方法计算
+        vo.setCurrentMemberCount(0); // 初始化为0,后续会通过统计方法计算
         return vo;
     }
 }

+ 42 - 0
alien-store/src/main/java/shop/alien/store/service/impl/LifeSysDeptServiceImpl.java

@@ -501,9 +501,51 @@ public class LifeSysDeptServiceImpl implements LifeSysDeptService {
         // 对根节点按排序值排序
         result.sort(Comparator.comparing(LifeSysDeptVo::getDeptSort, Comparator.nullsLast(Integer::compareTo)));
 
+        // 第三步:统计每个部门的人员数量(包含子部门)
+        for (LifeSysDeptVo vo : result) {
+            calculateMemberCount(vo);
+        }
+
         return result;
     }
 
+    /**
+     * 递归计算部门人员数量(包含子部门)
+     *
+     * @param deptVo 部门VO
+     * @return 人员数量
+     */
+    private Integer calculateMemberCount(LifeSysDeptVo deptVo) {
+        if (deptVo == null || deptVo.getDeptId() == null) {
+            return 0;
+        }
+
+        // 统计当前部门直接的人员数量
+        QueryWrapper<LifeSys> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("department_id", String.valueOf(deptVo.getDeptId()));
+        queryWrapper.eq("delete_flag", 0); // 未删除的用户
+        queryWrapper.eq("status", 1); // 启用的用户
+        Integer directMemberCount = lifeSysMapper.selectCount(queryWrapper);
+        if (directMemberCount == null) {
+            directMemberCount = 0;
+        }
+
+        // 递归统计所有子部门的人员数量
+        Integer childrenMemberCount = 0;
+        if (deptVo.getChildren() != null && !deptVo.getChildren().isEmpty()) {
+            for (LifeSysDeptVo child : deptVo.getChildren()) {
+                childrenMemberCount += calculateMemberCount(child);
+            }
+        }
+
+        // 总人员数量 = 当前部门人员数量 + 所有子部门人员数量
+        Integer totalMemberCount = directMemberCount + childrenMemberCount;
+        deptVo.setMemberCount(totalMemberCount);
+        deptVo.setCurrentMemberCount(directMemberCount);
+
+        return totalMemberCount;
+    }
+
     @Override
     public R<List<LifeSysVo>> viewMembers(Integer pageNum, Integer pageSize, Long deptId) {
         log.info("LifeSysDeptServiceImpl.viewMembers?pageNum={}, pageSize={}, deptId={}", pageNum, pageSize, deptId);