parent
e15cf54d6a
commit
21aca2f55d
|
|
@ -5,6 +5,8 @@ import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
|
import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
|
||||||
|
import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils;
|
||||||
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSaveReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSaveReqVO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
|
||||||
|
|
@ -18,6 +20,7 @@ import org.springframework.stereotype.Service;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
|
@ -164,9 +167,39 @@ public class DeptServiceImpl implements DeptService {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<DeptDO> getDeptList(DeptListReqVO reqVO) {
|
public List<DeptDO> getDeptList(DeptListReqVO reqVO) {
|
||||||
List<DeptDO> list = deptMapper.selectList(reqVO);
|
List<DeptDO> list = DataPermissionUtils.executeIgnore(() -> {
|
||||||
list.sort(Comparator.comparing(DeptDO::getSort));
|
return deptMapper.selectList(reqVO);
|
||||||
return list;
|
});
|
||||||
|
Long loginUserDeptId = SecurityFrameworkUtils.getLoginUserDeptId();
|
||||||
|
//从当前登录的部门开始,递归获取子部门
|
||||||
|
// 从当前登录的部门开始, 递归获取所有子部门
|
||||||
|
List<DeptDO> allSubDepts = new ArrayList<>();
|
||||||
|
if (loginUserDeptId != null) {
|
||||||
|
DeptDO currentDept = deptMapper.selectById(loginUserDeptId);
|
||||||
|
if (currentDept != null) {
|
||||||
|
allSubDepts.add(currentDept);
|
||||||
|
collectAllSubDept(allSubDepts, currentDept.getId(), list);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 合并所有子部门到结果列表中
|
||||||
|
allSubDepts.sort(Comparator.comparing(DeptDO::getSort));
|
||||||
|
return allSubDepts;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 递归收集所有子部门.
|
||||||
|
*
|
||||||
|
* @param allSubDepts 收集所有子部门的列表
|
||||||
|
* @param parentId 父部门ID
|
||||||
|
* @param allDepts 所有部门的列表
|
||||||
|
*/
|
||||||
|
private void collectAllSubDept(List<DeptDO> allSubDepts, Long parentId, List<DeptDO> allDepts) {
|
||||||
|
for (DeptDO dept : allDepts) {
|
||||||
|
if (parentId.equals(dept.getParentId())) {
|
||||||
|
allSubDepts.add(dept);
|
||||||
|
collectAllSubDept(allSubDepts, dept.getId(), allDepts); // 递归收集子部门
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue