根据当前节点获取所有上层结构的组织(递归算法)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2016年3月11日 15:18:10 星期五
http://fanshuyao.iteye.com/
一、使用的范围是最顶层的父项id(parentOrgId)必须为空,作为递归算法的出口。
实现的效果如下:
中国燃气 → 中国燃气控股有限公司 → 研发测试中心--03 → 中试项目公司--02 → 第二项目公司 → 第二部门002
/** * 递归获取传入组织org的父项组织层级关系 * @param org * @param orgs 返回的父项组织层级关系集合(包含org本身) */ public void getOrgParents(Org org, List<Org> orgs){ if(org != null){ if(org.getParentOrgId() != null){ Org parentOrg = orgService.getById(org.getParentOrgId()); getOrgParents(parentOrg, orgs); } orgs.add(org); } } /** * 根据父项组织层级关系集合(parentOrgs)获取显示的字符串 * @param parentOrgs 父项组织层级关系集合 * @param linkSymbol 字符串连接符号,linkSymbol==null时默认为→,可以设置为“—”、“——”等特殊符号 */ public String getOrgParentsString(List<Org> parentOrgs, String linkSymbol){ StringBuffer parentString = new StringBuffer(""); if(linkSymbol == null){ linkSymbol = "→"; } for (Org parent : parentOrgs) { parentString.append(parent.getOrgName()).append(" ").append(linkSymbol).append(" "); } if(parentString.indexOf(linkSymbol) > -1){ parentString.delete(parentString.lastIndexOf(linkSymbol)-1, parentString.length()); } return parentString.toString(); }
二、实现调用
1、原理:根据传入的用户id获取所有的部门后,再分别根据每个部门去获取层级关系,直到最顶层,然后拼接成字符串返回给对象
@RequestMapping("/xxx") @ResponseBody public String xxx(HttpServletRequest rq, HttpServletResponse rs) throws Exception { String userId = rq.getParameter("userId"); if(!StrUtils.isEmpty(userId)){ List<Org> orgs = orgService.getOrgsByUserId(userId); for (Org org : orgs) { List<Org> parentOrgs = new ArrayList<Org>(); getOrgParents(org, parentOrgs); org.setParentOrgName(getOrgParentsString(parentOrgs, null)); } return JsonUtils.Object2String(orgs); } return ""; }
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2016年3月11日 15:18:10 星期五
http://fanshuyao.iteye.com/
相关推荐
根据当前节点获取所有父节点信息(18代)SQL根据当前节点递归遍历获取所有父节点信息,短短的SQL可以解决复杂的问题
java实现树父节点递归获取树子节点 工具类,以后再项目中直接用即可
递归算法计算二叉树中叶子节点的数目
Java递归算法构造JSON树形结构,Java递归算法构造JSON树形结构Java递归算法构造JSON树形结构
.net 递归算法.net 递归算法.net 递归算法.net 递归算法.net 递归算法.net 递归算法.net 递归算法.net 递归算法
递归算法详解递归算法详解递归算法详解递归算法详解
VC对磁盘文件遍历搜索的递归算法和非递归算法 里面的文档是讲解递归算法和递归算法的 里面还有一个Vc工程文件,是我自己写的,关于非递归算法,其实里面那些被注释掉的部分是递归算法,大家仔细看看就知道了,
Java递归实现树查询,方法工具类可以直接引用,根据父节点可以获取本节点及其所有子节点数据(或获取到其下所有子节点数据)
递归算法详解 数据结构中一些常用的算法,重点讲述递归算法的实现!!
java 数据结构 递归 八皇后 完美递归 java 数据结构 递归 八皇后 完美递归
5!递归算法和非递归算法,面试专用,适合新手
递归算法应用:删除某一个节点的子树算法
18.递归算法与递归算法应用.ppt
数据结构 二叉树三种遍历的非递归算法(背诵版). 数据结构 二叉树三种遍历的非递归算法(背诵版). 数据结构 二叉树三种遍历的非递归算法(背诵版).
递归算法转为非递归算法。方法、过程,用栈的原理
数据结构DFS深度优先遍历非递归算法实现,是自己编写的,可靠。
acm递归算法总结acm递归算法总结!!!!!!!!!!!!!!!!!!!!!!!
快速排序算法设计与分析总结 二叉树与树的转换前序、后序的递归、非递归算法,层次序的非递归算法的实现 二叉树与树的转换前序、后序的递归、非递归算法,层次序的非递归算法的实现,应包含建树的实现 实现树与...
在学习数据结构中自己实现的迷宫游戏。这个代码中有迷宫生成(迷宫比较不错),然后对生成的迷宫用递归算法寻找路径。在迷宫设计以及递归学习是个不错的选择。
递归算法加载TreeView节点下的所有子节点,简单、易懂、高效