递归遍历树结构-已解决

来源:互联网 发布:linux 对文件排序 编辑:程序博客网 时间:2024/05/16 12:57
递归遍历树结构-已解决原创 2017年08月28日 11:58:19 标签:递归 /遍历树 119在项目中用到导航树结构,所以就用递归写了一个遍历导航树的功能。表结构:[java] view plain copy/** * 递归获取菜单 * * @param roleKey * @param systemCode * @return */ public String getSysMenuJson(String roleIds, String menu_pid) throws Exception { List<Map> list = null; if (roleIds == null || roleIds.equals("")) return null; String[] roles = roleIds.split(","); List<Map> dicList = new ArrayList<Map>(); //当前节点信息 //dicList = SysMenuListById(roleIds, menu_pid); //调用递归子集节点信息 getChridNavIds(roleIds, menu_pid, dicList); return JSONArray.fromObject(dicList).toString(); } /** * 递归获取系统导航菜单 * @param roleIds 角色iD * @param parentid 父级菜单ID * @param dicList */ private void getChridNavIds(String roleIds, String parentid,List dicList){ List<Map> dataDictionaryList= SysMenuListByPid(roleIds, parentid); for(Map nav:dataDictionaryList){ List<Map> childList = new ArrayList<Map> (); if(nav!=null){ Map map = new HashMap();// 每个一级菜单对应的map map.put("id", NullHelper.convertNullToNothingnull(nav.get("menu_id"))); map.put("name", NullHelper.convertNullToNothingnull(nav.get("menu_name"))); String url = NullHelper.convertNullToNothingnull(nav.get("menu_url")); if(StringUtils.isNotBlank(url)){ map.put("url", url); } map.put("icon", NullHelper.convertNullToNothingnull(nav.get("menu_img"))); getChridNavIds(roleIds,nav.get("menu_id").toString(),childList); //将同级代码存入childList中 map.put("menuitem", childList); dicList.add(map); } } } /** * 用PID递归获取父级菜单的所有子集菜单 * @param roleIds * @param menu_pid * @param bResult * @return */ private List<Map> SysMenuListByPid(String roleIds, String menu_pid) { StringBuffer menuSql = new StringBuffer(); menuSql.append("select m.menu_id,m.parent_menu_id,m.menu_name,m.menu_url,m.menu_img,m.is_treenode from sys_menu m "); menuSql.append("inner join sys_role_menu_rel rm on rm.menu_id=m.menu_id and m.parent_menu_id in ("+splitRoleId(menu_pid)+") and m.menu_state='1' and rm.role_id in ("+splitRoleId(roleIds)+") "); menuSql.append("where 1=1" + " group by m.menu_id,m.parent_menu_id,m.menu_name,m.menu_url,m.menu_img,m.is_treenode,m.menu_seq "); menuSql.append("order by m.menu_seq asc "); return jdbcTemplate.queryForList(menuSql.toString()); } 生成json串:[java] view plain copy[ { "id": "8a929b985da6b83f015da6bbe2620001", "icon": "s-n-t-icon5.png", "name": "制证管理", "menuitem": [ { "id": "8a92e1475da5c3a3015da80915080007", "icon": "", "name": "证照生成", "menuitem": [ ], "url": "license/manageList" }, { "id": "8a92e1475dbc8d86015dbc91ed990002", "icon": "", "name": "证照审核", "menuitem": [ ], "url": "storage/auditList" }, { "id": "8a929cee5da76049015da764fd980001", "icon": "", "name": "制证签发", "menuitem": [ ], "url": "storage/signDataList" }, { "id": "8a929cee5da76049015da7743ae600a0", "icon": "", "name": "打证管理", "menuitem": [ ], "url": "storage/printDataList" } ], "url": "license/manageList" }, { "id": "8a929b1a5da632c3015da6347edd0001", "icon": "s-n-t-icon2.png", "name": "证照维护", "menuitem": [ { "id": "8a92e3fd5dea5abd015dea6e6f7b0001", "icon": "", "name": "证照年检", "menuitem": [ ], "url": "licensemaintain/licenseAnnualSurveyList" }, { "id": "8a929b1a5da632c3015da6368e5a002b", "icon": "", "name": "证照变更", "menuitem": [ ], "url": "licensemaintain/licenseChangeList" }, { "id": "297e4d0b5dbb4a09015dbc25eb7c0003", "icon": "", "name": "证照注销", "menuitem": [ ], "url": "licensemaintain/licensezhuxiao" }, { "id": "297e4d0b5dbb4a09015dbc2defb700a4", "icon": "", "name": "证照作废", "menuitem": [ ], "url": "licensemaintain/licensezuofei" }, { "id": "297e4d0b5dbb4a09015dbc3122e500f6", "icon": "", "name": "证照挂失", "menuitem": [ ], "url": "licensemaintain/licenseguashi" }, { "id": "297e4d0b5dbb4a09015dbc32dbc60149", "icon": "", "name": "维护审核", "menuitem": [ ], "url": "licensemaintain/licenseshenhe" }, { "id": "8a92e0f65dc5c003015dc5c58ca60001", "icon": "", "name": "版本管理", "menuitem": [ ], "url": "licensemaintain/versionManagement" }, { "id": "8a92e0f65dc5c003015dc5c88df30002", "icon": "", "name": "有效期管理", "menuitem": [ ], "url": "licensemaintain/termOfValidityManagement" } ] }, { "id": "8a92e3165e177bec015e1786a9a20002", "icon": "s-n-t-icon1.png", "name": "证照查询", "menuitem": [ ], "url": "querylicenses/querManageList" } ]
原创粉丝点击