diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDepartServiceImpl.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDepartServiceImpl.java index 02027b250..8c5c3d639 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDepartServiceImpl.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDepartServiceImpl.java @@ -1,5 +1,6 @@ package com.jero.modules.system.service.impl; +import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -24,6 +25,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.stream.Collectors; import static com.jero.modules.system.util.FindsDepartsChildrenUtil.convertSysDepartToSysDepartTreeModel; @@ -286,7 +288,37 @@ public class SysDepartServiceImpl extends ServiceImpl getSubDepIdsByDepId(String departId) { - return this.baseMapper.getSubDepIdsByDepId(departId); + List idList = new ArrayList<>(); + if(StringUtils.isNotEmpty(departId)) { + // 查询所有部门 + LambdaQueryWrapper query = new LambdaQueryWrapper(); + query.eq(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); + List listAll = this.list(query); + + List result = new ArrayList<>(); + // 递归查询 指定父节点下的所有子节点,包括父节点 + if (CollectionUtil.isNotEmpty(listAll)) { + recursion(listAll, result, departId); + } + + + idList.add(departId); // 加上父节点 + idList = result.stream().map(SysDepart::getId).collect(Collectors.toList()); + + } + return idList; + } + + // 递归查询子节点 + private void recursion(List listAll, List result, String fatherId) { + List childern = listAll.stream().filter(e-> fatherId.equals(e.getParentId())).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(childern)) { + result.addAll(childern); + for(SysDepart depart : childern) { + recursion(listAll, result, depart.getId()); + } + + } } @Override