From 267152a2ad9c58f3323e6565904a77f873251008 Mon Sep 17 00:00:00 2001 From: "wei.peng" Date: Wed, 21 Nov 2018 19:25:22 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=A4=8D=E6=9D=82=E6=A0=91=20?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/i3plus-core-api/pom.xml | 4 + .../core/api/iservice/busi/ICoreTreeService.java | 31 +++++- .../controller/DemoTreeAndExceptionController.java | 2 +- .../controller/busi/SysTreeController.java | 26 ++++- .../serviceimpl/busi/CoreTreeService.java | 106 ++++++++++++++++++++- 5 files changed, 156 insertions(+), 13 deletions(-) diff --git a/modules/i3plus-core-api/pom.xml b/modules/i3plus-core-api/pom.xml index bc1be0a..6e2cbcd 100644 --- a/modules/i3plus-core-api/pom.xml +++ b/modules/i3plus-core-api/pom.xml @@ -21,6 +21,10 @@ i3plus.pojo i3plus-pojo-mes + + i3plus.pojo + i3plus-pojo-model + diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ICoreTreeService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ICoreTreeService.java index 50a49e9..85c0d43 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ICoreTreeService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ICoreTreeService.java @@ -1,5 +1,7 @@ package cn.estsh.i3plus.core.api.iservice.busi; +import cn.estsh.i3plus.pojo.base.bean.BaseBean; +import cn.estsh.i3plus.pojo.model.platform.CommonTreeModel; import cn.estsh.i3plus.pojo.platform.bean.SysDepartment; import cn.estsh.i3plus.pojo.platform.bean.SysMenu; import cn.estsh.i3plus.pojo.platform.bean.SysOrganize; @@ -28,7 +30,7 @@ public interface ICoreTreeService { * @param id * @return */ - SysPosition getSysPositionTreeByParentId(long id); + SysPosition getSysPositionTreeById(long id); /** * 生成子集树递归方法 @@ -55,7 +57,7 @@ public interface ICoreTreeService { * @param id * @return */ - SysDepartment getSysDepartmentTreeByParentId(long id); + SysDepartment getSysDepartmentTreeById(long id); /** * 生成子集树递归方法 @@ -82,7 +84,7 @@ public interface ICoreTreeService { * @param id * @return */ - SysOrganize getSysOrganizeTreeByParentId(long id); + SysOrganize getSysOrganizeTreeById(long id); /** * 生成子集树递归方法 @@ -109,7 +111,7 @@ public interface ICoreTreeService { * @param id * @return */ - SysMenu getSysMenuTreeByParentId(long id); + SysMenu getSysMenuTreeById(long id); /** * 生成子集树递归方法 @@ -124,4 +126,25 @@ public interface ICoreTreeService { */ void doValidatorSysMenuParentId(SysMenu menu) ; + /** + * 获取组织树 + * @param parentId + * @return + */ + List findOrganizeDepartment(long parentId); + + /** + * 获取组织树 + * @param id + * @return + */ + CommonTreeModel getOrganizeById(long id); + + /** + * 生成子集树递归方法 + * @param parent 父类对象 + * @param step 层级 + */ + void findOrganizeTreePack(CommonTreeModel parent, int step); + } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoTreeAndExceptionController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoTreeAndExceptionController.java index 1b35020..1304de9 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoTreeAndExceptionController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoTreeAndExceptionController.java @@ -43,7 +43,7 @@ public class DemoTreeAndExceptionController extends CoreBaseController{ @ApiOperation(value="查询部门树",notes="通过部门主键获取部门树,-1为根节点") public ResultBean listDepartmentTree(long depParentId) { try { - SysDepartment department = coreTreeService.getSysDepartmentTreeByParentId(depParentId); + SysDepartment department = coreTreeService.getSysDepartmentTreeById(depParentId); return ResultBean.success("查询部门树成功") .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysTreeController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysTreeController.java index 4369e7b..6e092c7 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysTreeController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysTreeController.java @@ -3,6 +3,7 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; import cn.estsh.i3plus.core.api.iservice.busi.ICoreTreeService; import cn.estsh.i3plus.core.api.iservice.busi.ISysOrganizeService; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.model.platform.CommonTreeModel; import cn.estsh.i3plus.pojo.platform.bean.SysDepartment; import cn.estsh.i3plus.pojo.platform.bean.SysMenu; import cn.estsh.i3plus.pojo.platform.bean.SysOrganize; @@ -47,7 +48,7 @@ public class SysTreeController extends CoreBaseController { @ApiOperation(value="查询岗位树",notes="通过部门主键获取岗位树,-1为根节点") public ResultBean listSysPositionTree(@PathVariable("id") long id) { try { - SysPosition position = coreTreeService.getSysPositionTreeByParentId(id); + SysPosition position = coreTreeService.getSysPositionTreeById(id); return ResultBean.success("查询部门树成功") .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) @@ -84,7 +85,7 @@ public class SysTreeController extends CoreBaseController { @ApiOperation(value="查询组织树",notes="通过部门主键获取组织树,-1为根节点") public ResultBean listOrganizeTree(@PathVariable("id") long id) { try { - SysOrganize obj = coreTreeService.getSysOrganizeTreeByParentId(id); + SysOrganize obj = coreTreeService.getSysOrganizeTreeById(id); return ResultBean.success("查询部门树成功") .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) @@ -120,7 +121,7 @@ public class SysTreeController extends CoreBaseController { @ApiOperation(value="部门树",notes="通过部门主键获取部门树,-1为根节点") public ResultBean listDepartmentTree(@PathVariable("id") long id) { try { - SysDepartment obj = coreTreeService.getSysDepartmentTreeByParentId(id); + SysDepartment obj = coreTreeService.getSysDepartmentTreeById(id); return ResultBean.success("查询部门树成功") .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) @@ -157,7 +158,7 @@ public class SysTreeController extends CoreBaseController { @ApiOperation(value="部门树",notes="通过部门主键获取部门树,-1为根节点") public ResultBean listSysMenuTree(@PathVariable("id") long id) { try { - SysMenu obj = coreTreeService.getSysMenuTreeByParentId(id); + SysMenu obj = coreTreeService.getSysMenuTreeById(id); return ResultBean.success("查询部门树成功") .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) @@ -189,4 +190,21 @@ public class SysTreeController extends CoreBaseController { } } + @GetMapping(value="/organize-department/list/{parentId}") + @ApiOperation(value="查询组织-部门树",notes="通过部门主键获取组组织-部门,-1为根节点") + public ResultBean listOrganizeDepartmentListTree(@PathVariable("parentId") long parentId) { + try { + List resultList = coreTreeService.findOrganizeDepartment(parentId); + + return ResultBean.success("查询组织-部门树成功") + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) + .setResultList(resultList); + }catch(ImppBusiException busExcep){ + LOGGER.error(busExcep.getErrorMsg() + ":{}",busExcep.getErrorDetail(),busExcep); + return ResultBean.fail(busExcep.getErrorShow()); + }catch(Exception e){ + LOGGER.error(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription() + ":{}",e.getMessage(),e); + return ResultBean.fail().setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); + } + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/CoreTreeService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/CoreTreeService.java index 1e49117..0b37e2e 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/CoreTreeService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/CoreTreeService.java @@ -1,7 +1,10 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; import cn.estsh.i3plus.core.api.iservice.busi.ICoreTreeService; +import cn.estsh.i3plus.pojo.base.bean.BaseBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.ModelEnumUtil; +import cn.estsh.i3plus.pojo.model.platform.CommonTreeModel; import cn.estsh.i3plus.pojo.platform.bean.SysDepartment; import cn.estsh.i3plus.pojo.platform.bean.SysMenu; import cn.estsh.i3plus.pojo.platform.bean.SysOrganize; @@ -18,6 +21,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; /** @@ -59,7 +63,7 @@ public class CoreTreeService implements ICoreTreeService { } @Override - public SysPosition getSysPositionTreeByParentId(long id) { + public SysPosition getSysPositionTreeById(long id) { // 查找数据 SysPosition position = positionRDao.getById(id); // 数据是否真实存在 @@ -107,7 +111,7 @@ public class CoreTreeService implements ICoreTreeService { } @Override - public SysDepartment getSysDepartmentTreeByParentId(long id) { + public SysDepartment getSysDepartmentTreeById(long id) { // 查找数据 SysDepartment department = departmentRDao.getById(id); // 数据是否真实存在 @@ -155,7 +159,7 @@ public class CoreTreeService implements ICoreTreeService { } @Override - public SysOrganize getSysOrganizeTreeByParentId(long id) { + public SysOrganize getSysOrganizeTreeById(long id) { // 查找数据 SysOrganize organize = organizeRDao.getById(id); // 数据是否真实存在 @@ -202,7 +206,7 @@ public class CoreTreeService implements ICoreTreeService { } @Override - public SysMenu getSysMenuTreeByParentId(long id) { + public SysMenu getSysMenuTreeById(long id) { // 查找数据 SysMenu menu = menuRDao.getById(id); // 数据是否真实存在 @@ -305,4 +309,98 @@ public class CoreTreeService implements ICoreTreeService { } } } + + @Override + public List findOrganizeDepartment(long parentId) { + List result = new ArrayList<>(); + List list = organizeRDao.findByProperty("parentId", parentId); + + // 循环设置子集 + if(list != null && list.size() > 0){ + for (SysOrganize organize : list) { + CommonTreeModel treeModel = new CommonTreeModel(); + treeModel.setBean(organize); + treeModel.setBeanType(ModelEnumUtil.COMMON_TREE_TYPE.TYPE_ORGANIZE.getValue()); + + findOrganizeTreePack(treeModel,0); + + result.add(treeModel); + } + } + + + return result; + } + + @Override + public CommonTreeModel getOrganizeById(long id) { + // 查找数据 + SysOrganize organize = organizeRDao.getById(id); + // 数据是否真实存在 + ValidatorBean.checkNotNull(organize,"不存在的组织信息"); + + CommonTreeModel treeModel = new CommonTreeModel(); + treeModel.setBean(organize); + treeModel.setBeanType(ModelEnumUtil.COMMON_TREE_TYPE.TYPE_ORGANIZE.getValue()); + + // 递归查询子集 + findOrganizeTreePack(treeModel, 0); + return treeModel; + } + + @Override + public void findOrganizeTreePack(CommonTreeModel parent, int step) { + if(null != parent){ + BaseBean bean = parent.getBean(); + List childList = new ArrayList<>(); + CommonTreeModel treeModel = null; + if(bean instanceof SysOrganize){ + SysOrganize organize = (SysOrganize) bean; + + List organizeList = organizeRDao.findByProperty("parentId", organize.getId()); + if(organizeList != null && organizeList.size() > 0){ + for (SysOrganize org : organizeList) { + treeModel = new CommonTreeModel(); + treeModel.setBean(org); + treeModel.setBeanType(ModelEnumUtil.COMMON_TREE_TYPE.TYPE_ORGANIZE.getValue()); + + findOrganizeTreePack(treeModel,step); + + childList.add(treeModel); + } + } + + List departmentList = departmentRDao.findByProperty("organizeId", organize.getId()); + if(departmentList != null && departmentList.size() > 0){ + for (SysDepartment department : departmentList) { + if(department.getParentId() != null && department.getParentId() < 0){ + treeModel = new CommonTreeModel(); + treeModel.setBean(department); + treeModel.setBeanType(ModelEnumUtil.COMMON_TREE_TYPE.TYPE_DEPARTMENT.getValue()); + + findOrganizeTreePack(treeModel,step); + + childList.add(treeModel); + } + } + } + LOGGER.info("【{}】包含子集:{},步长:{}", parent.getBean().getClass().getName(), parent.getChildList().size(), step); + }else if(bean instanceof SysDepartment){ + SysDepartment department = (SysDepartment) bean; + List departmentList = departmentRDao.findByProperty("parentId", department.getId()); + if(departmentList != null && departmentList.size() > 0){ + for (SysDepartment dep : departmentList) { + treeModel = new CommonTreeModel(); + treeModel.setBean(dep); + treeModel.setBeanType(ModelEnumUtil.COMMON_TREE_TYPE.TYPE_DEPARTMENT.getValue()); + + findOrganizeTreePack(treeModel,step); + + childList.add(treeModel); + } + } + } + parent.setChildList(childList); + } + } }