java递归树

来源:互联网 发布:白苹果保留数据刷机 编辑:程序博客网 时间:2024/05/29 12:27
@Overridepublic List<MenuTree> searchMenuTree() {    List<MenuTree> menuTrees = new ArrayList<MenuTree>();    List<SysMenuDTO> sysMenuDTOList = new ArrayList<SysMenuDTO>();    //查询所有菜单    List<SysMenu> sysMenuList = sysMenuService.getRootNodes();    if (sysMenuList.size() > 0) {        for (SysMenu sm : sysMenuList) {            SysMenuDTO sd = new SysMenuDTO();            BeanUtils.copyProperties(sm, sd);            sysMenuDTOList.add(sd);        }    }    if (sysMenuDTOList.size() > 0) {        //遍历所有菜单 设置一级菜单        for (SysMenuDTO sysMenuDTO : sysMenuDTOList) {            if (StringUtils.isBlank(sysMenuDTO.getParentMenuId())) {                MenuTree menuTree = new MenuTree();                menuTree.setText(sysMenuDTO.getMenuName());                menuTree.setSysMenuDTO(sysMenuDTO);                menuTree.setNodes(searchSubMenuTree(sysMenuDTO.getMenuId(), sysMenuDTOList)); //子菜单                menuTrees.add(menuTree);            }        }    }    return menuTrees;}/** * 设置子菜单 * @param parentCode * @param sysMenuDTOList * @return */private List<MenuTree> searchSubMenuTree(String parentCode, List<SysMenuDTO> sysMenuDTOList) {    List<MenuTree> menuTrees = new ArrayList<MenuTree>();    if (sysMenuDTOList.size() > 0) {        //遍历所有菜单 设置子菜单        for (SysMenuDTO sysMenuDTO : sysMenuDTOList) {            if (parentCode.equals(sysMenuDTO.getParentMenuId())) {                MenuTree menuTree = new MenuTree();                menuTree.setText(sysMenuDTO.getMenuName());                menuTree.setSysMenuDTO(sysMenuDTO);                //递归                menuTree.setNodes(searchSubMenuTree(sysMenuDTO.getMenuId(), sysMenuDTOList));                menuTrees.add(menuTree);            }        }    }    return menuTrees;}
实体类
public class SysMenu {    private String menuId; //菜单主键    private String menuCode; //菜单编码    private String menuName; //菜单名称    private String parentMenuId; //父级菜单主键    private String url; //URL地址    private Integer order; //按钮排序    private String memo; //备注 描述    private String status; //数据状态 0-无效 1-有效    private String createUserCode; //创建人编码    private String createUserName; //创建人名称    private Date createDate; //创建日期    private String lastUserCode; //最后维护人编码    private String lastUserName; //最后维护人名称    private Date lastDate; //最后维护日期    private Integer oldOrder; //修改前排序    private Integer smallOrder;    private Integer bigOrder;    private String parentMenuName; //父级菜单名称    private String parentMenuCode; //父级菜单编码    private String orderMenuName; //排序在之前的菜单名称    private String orderMenuCode; //排序在之前的菜单编码    List<SysMenuButton> sysMenuButtonList = new ArrayList<SysMenuButton>(); //子表}

实体类
@Datapublic class MenuTree {    private String text;    private SysMenuDTO sysMenuDTO;    private List<MenuTree> nodes = new ArrayList<MenuTree>();}