管理系統菜單父子結構,有parentId,快速獲取結構樹代碼

機構樹,數據表格裏面有parentId這種,通過遞歸查詢機構樹

結果類似於

實體:通過list存儲子菜單

@Data
public class OrganizationVo{
    private String fatherName;

    private Integer id;

    private String name;

    private Integer fatherId;

    private Date createTime;

    private Date updateTime;

    /**
     * 是否葉子節點:0否、1是
     */
    private Integer isLeaf;

    private static final long serialVersionUID = 1L;

    private List<CustomerOrganizationVo> child;

}

通過遞歸查詢子機構

@Override
    public OrganizationVo departmentTree(Integer id) {
        OrganizationVo OrganizationVoTree = new OrganizationVo();
        //找到最頂級菜單
        Organization departmentFather = organizationMapper.selectByPrimaryKey(1);
        OrganizationVoTree.setId(departmentFather.getId());
        OrganizationVoTree.setName(departmentFather.getName());
        OrganizationVoTree.setFatherId(departmentFather.getFatherId());
        OrganizationVoTree.setChild(getDepartmentChild(departmentFather));
        return OrganizationVoTree;
    }

    private List<OrganizationVo> getDepartmentChild(Organization father) {
        List<OrganizationVo> tree = new LinkedList<>();
        if (father.getIsLeaf() == 0) {
            //通過當前機構的id,找到他的所有的字機構,這裏使用Example
            OrganizationExample example = new OrganizationExample();
            example.createCriteria().andFatherIdEqualTo(father.getId());
            List<Organization> OrganizationList = organizationMapper.selectByExample(example);
            for (Organization organization : OrganizationList) {

                OrganizationVo organizationVo = new OrganizationVo();
                BeanUtils.copyProperties(organization, organizationVo);

                organizationVo.setFatherId(father.getId());
                organizationVo.setFatherName(father.getName());
                //遞歸查詢子結構
                organizationVo.setChild(getDepartmentChild(organization));
                tree.add(organizationVo);
            }
        }
        return tree;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章