From 8ab084ad89274607587c0f9a442437ebcb634939 Mon Sep 17 00:00:00 2001 From: mazhichao Date: Wed, 24 Mar 2021 16:43:07 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=B7=BB=E5=8A=A0=E3=80=91=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=8E=A5=E5=8F=A3=201=E3=80=81=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E9=83=A8=E9=97=A8id=E6=9F=A5=E8=AF=A2=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E6=89=80=E6=9C=89=E7=9A=84=E7=88=B6=E7=BA=A7(=E4=B8=8D?= =?UTF-8?q?=E5=8C=85=E5=90=AB=E8=87=AA=E5=B7=B1)2=E3=80=81=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E9=83=A8=E9=97=A8id=E6=9F=A5=E8=AF=A2=E9=83=A8?= =?UTF-8?q?=E9=97=A8=E6=89=80=E6=9C=89=E7=9A=84=E5=AD=90=E7=BA=A7(?= =?UTF-8?q?=E4=B8=8D=E5=8C=85=E5=90=AB=E8=87=AA=E5=B7=B1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jero/common/system/api/ISysBaseAPI.java | 18 +++++ .../system/service/ISysDepartService.java | 26 +++++-- .../system/service/impl/SysBaseApiImpl.java | 30 ++++++- .../service/impl/SysDepartServiceImpl.java | 78 ++++++++++++++++--- 4 files changed, 134 insertions(+), 18 deletions(-) diff --git a/jero-boot/jero-boot-base/jero-boot-base-api/jero-system-local-api/src/main/java/com/jero/common/system/api/ISysBaseAPI.java b/jero-boot/jero-boot-base/jero-boot-base-api/jero-system-local-api/src/main/java/com/jero/common/system/api/ISysBaseAPI.java index 187e84b2..3e887e7a 100644 --- a/jero-boot/jero-boot-base/jero-boot-base-api/jero-system-local-api/src/main/java/com/jero/common/system/api/ISysBaseAPI.java +++ b/jero-boot/jero-boot-base/jero-boot-base-api/jero-system-local-api/src/main/java/com/jero/common/system/api/ISysBaseAPI.java @@ -281,4 +281,22 @@ public interface ISysBaseAPI extends CommonAPI { */ void sendEmailMsg(String email,String title,String content); + /** + * 41根据部门id查询部门所有的父级(不包含自己) + * @author 马志朝 + * @date 2021/3/24 8:50 + * @param departId 部门id + * @return JSONObject + */ + List listParentDepartsByDepId(String departId); + + /** + * 42根据部门id查询部门所有的子级(不包含自己) + * @author 马志朝 + * @date 2021/3/24 8:54 + * @param departId 部门id + * @return JSONObject + */ + List listSonDepartsByDepId(String departId); + } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDepartService.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDepartService.java index 2dfd5f1a..1184cc2b 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDepartService.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDepartService.java @@ -10,7 +10,7 @@ import java.util.List; *

* 部门表 服务实现类 *

- * + * * @Author:Steve * @Since: 2019-01-22 */ @@ -46,28 +46,28 @@ public interface ISysDepartService extends IService{ * @return */ Boolean updateDepartDataById(SysDepart sysDepart,String username); - + /** * 删除depart数据 * @param id * @return */ /* boolean removeDepartDataById(String id); */ - + /** * 根据关键字搜索相关的部门数据 * @param keyWord * @return */ List searhBy(String keyWord,String myDeptSearch,String departIds); - + /** * 根据部门id删除并删除其可能存在的子级部门 * @param id * @return */ boolean delete(String id); - + /** * 查询SysDepart集合 * @param userId @@ -107,4 +107,20 @@ public interface ISysDepartService extends IService{ * @return */ List queryTreeByKeyWord(String keyWord); + + /** + * 根据部门id查询部门所有的父级(不包含自己) + * @author 马志朝 + * @date 2021/3/24 8:50 + * @param departId 部门id + */ + List listParentDepartsByDepId(String departId); + + /** + * 根据部门id查询部门所有的子级(不包含自己) + * @author 马志朝 + * @date 2021/3/24 8:54 + * @param departId 部门id + */ + List listSonDepartsByDepId(String departId); } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysBaseApiImpl.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysBaseApiImpl.java index 41e70b88..86121f82 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysBaseApiImpl.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysBaseApiImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.google.common.base.Joiner; +import com.jero.modules.system.model.SysDepartTreeModel; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.apache.shiro.SecurityUtils; @@ -846,7 +847,7 @@ public class SysBaseApiImpl implements ISysBaseAPI { /** * 36根据多个用户账号(逗号分隔),查询返回多个用户信息 - * @param orgCodes + * @param usernames * @return */ @Override @@ -865,7 +866,7 @@ public class SysBaseApiImpl implements ISysBaseAPI { /** * 37根据多个部门编码(逗号分隔),查询返回多个部门信息 - * @param usernames + * @param orgCodes * @return */ @Override @@ -991,4 +992,29 @@ public class SysBaseApiImpl implements ISysBaseAPI { emailHandle.SendMsg(email, title, content); } + /** + * 根据部门id查询部门所有的父级(不包含自己) + * @author 马志朝 + * @date 2021/3/24 8:50 + * @param departId 部门id + * @return JSONObject + */ + @Override + public List listParentDepartsByDepId(String departId) { + List sysDepartTreeModels = sysDepartService.listParentDepartsByDepId(departId); + return JSON.parseArray(JSON.toJSONString(sysDepartTreeModels)).toJavaList(JSONObject.class); + } + + /** + * 42根据部门id查询部门所有的子级(不包含自己) + * @author 马志朝 + * @date 2021/3/24 8:54 + * @param departId 部门id + * @return JSONObject + */ + @Override + public List listSonDepartsByDepId(String departId) { + List sysDepartTreeModels = sysDepartService.listSonDepartsByDepId(departId); + return JSON.parseArray(JSON.toJSONString(sysDepartTreeModels)).toJavaList(JSONObject.class); + } } \ No newline at end of file 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 8e5fafbc..153247ab 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 @@ -30,7 +30,7 @@ import io.netty.util.internal.StringUtil; *

* 部门表 服务实现类 *

- * + * * @Author Steve * @Since 2019-01-22 */ @@ -130,14 +130,14 @@ public class SysDepartServiceImpl extends ServiceImpl query = new LambdaQueryWrapper(); LambdaQueryWrapper query1 = new LambdaQueryWrapper(); @@ -195,16 +195,16 @@ public class SysDepartServiceImpl extends ServiceImpl>>>>"+id); boolean * flag = this.removeById(id); return flag; } @@ -226,7 +226,7 @@ public class SysDepartServiceImpl extends ServiceImpl ids) { @@ -342,13 +342,13 @@ public class SysDepartServiceImpl extends ServiceImpl idList) { + private void checkChildrenExists(String id, List idList) { LambdaQueryWrapper query = new LambdaQueryWrapper(); query.eq(SysDepart::getParentId,id); List departList = this.list(query); @@ -454,7 +454,8 @@ public class SysDepartServiceImpl extends ServiceImpl + */ + @Override + public List listParentDepartsByDepId(String departId) { + List list = new ArrayList<>(); + SysDepart depart = this.getById(departId); + String parentId = depart.getParentId(); + // 查询父部门 + SysDepart parentDepart = this.getById(parentId); + while (parentDepart != null){ + list.add(parentDepart); + parentId = parentDepart.getParentId(); + parentDepart = this.getById(parentId); + } + Collections.reverse(list); + // 调用wrapTreeDataToTreeList方法生成树状数据 + return FindsDepartsChildrenUtil.wrapTreeDataToTreeList(list); + } + + /** + * 根据部门id查询部门所有的子级(不包含自己) + * @author 马志朝 + * @date 2021/3/24 9:11 + * @param departId 部门id + * @return java.util.List + */ + @Override + public List listSonDepartsByDepId(String departId) { + List realResult = new ArrayList<>(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + //获取直接子节点 + List sonDepartList = this.list(queryWrapper.eq(SysDepart::getParentId, departId)); + for(SysDepart depart : sonDepartList){ + String tempId = depart.getId(); + List listResult = new ArrayList<>(); + // 将每个直接子节点的parentId设为空来构成树的头节点 + depart.setParentId(null); + listResult.add(depart); + List idListTemp = new ArrayList<>(); + this.checkChildrenExists(tempId, idListTemp); + idListTemp.forEach(id -> { + SysDepart sysDepartTemp = this.getById(id); + listResult.add(sysDepartTemp); + }); + List sysDepartTreeModels = FindsDepartsChildrenUtil.wrapTreeDataToTreeList(listResult); + realResult.addAll(sysDepartTreeModels); + } + + return realResult; + } }