递归获取组织树

递归获取组织树

直接上代码

一、组织树代码

 /**
     * @Author songmo
     * @Date 2020/4/21 20:35
     * @Description 获取树形结构
     */
    @Override
    public List<OrgVo> list(Org org) {
        Org orgParent = orgMapper.getOrgParent();
        if (null == orgParent) {
            throw new ErrorCodeException("未获取到单位名称");
        }
        //获取所有的组织树信息
        List<OrgVo> list = orgMapper.orgList(org);
        //返回页面树
        List<OrgVo> tree = new ArrayList<OrgVo>();
        if (CollectionUtils.isEmpty(list)) {
            OrgVo orgVo1 = new OrgVo();
            orgVo1.setOrgCode(orgParent.getOrgCode());
            orgVo1.setOrgName(orgParent.getOrgName());
            orgVo1.setOrgParentCode(orgParent.getOrgParentCode());
            orgVo1.setChild(list);
            tree.add(orgVo1);
            return tree;
        }
        //存放父类的节点
        List<OrgVo> parentList = new ArrayList<>();
        for (OrgVo orgVo1 : list) {
            if (orgParent.getOrgCode().equals(orgVo1.getOrgParentCode())) {
                parentList.add(orgVo1);
            }
        }
        //根据父节点获取对应的儿子节点
        for (int i = 0; i < parentList.size(); i++) {
            List<OrgVo> child = getChild(list, parentList.get(i).getOrgCode());
            OrgVo orgVo1 = new OrgVo();
            orgVo1.setOrgCode(parentList.get(i).getOrgCode());
            orgVo1.setOrgName(parentList.get(i).getOrgName());
            orgVo1.setOrgParentCode(parentList.get(i).getOrgParentCode());
            orgVo1.setChild(child);
            tree.add(orgVo1);
            System.out.println(child);
        }
        return tree;
    }
    /**
     * @Author songmo
     * @Date 2020/4/21 18:33
     * @Description 递归调用获取儿子
     */
    public List<OrgVo> getChild(List<OrgVo> list, String orgParentCode) {
        List<OrgVo> childList = new ArrayList<OrgVo>();
        for (OrgVo orgVo : list) {
            String orgCode = orgVo.getOrgCode();
            String pid = orgVo.getOrgParentCode();
            if (orgParentCode.equals(pid)) {
                List<OrgVo> childLists = getChild(list, orgCode);
                orgVo.setChild(childLists);
                childList.add(orgVo);
            }
        }
        System.out.println(childList);
        return childList;
    }

二、获取Json格式

{ "success": true, "code": 0, "message": null, "body": [ { "orgCode": "46c0e984be594ed6b9ce331044b34fe5", "orgName": "技术部", "orgParentCode": "1", "orgSort": null, "createTime": null, "updateTime": null, "child": [ { "orgCode": "1cef6ad7116149ffa2f9be1b3d4f8e8b", "orgName": "技术部一组", "orgParentCode": "46c0e984be594ed6b9ce331044b34fe5", "orgSort": 3, "createTime": null, "updateTime": null, "child": [ { "orgCode": "77cc98e876a4468c9505982a9062c000", "orgName": "技术部一组一小队", "orgParentCode": "1cef6ad7116149ffa2f9be1b3d4f8e8b", "orgSort": 5, "createTime": null, "updateTime": null, "child": [] } ] }, { "orgCode": "3eb35130eb0145b0b2d5defe708d0bcd", "orgName": "技术部二组", "orgParentCode": "46c0e984be594ed6b9ce331044b34fe5", "orgSort": 4, "createTime": null, "updateTime": null, "child": [] } ] }, { "orgCode": "e017eb2bbbf54fd1b812d8653b248e83", "orgName": "产品部", "orgParentCode": "1", "orgSort": null, "createTime": null, "updateTime": null, "child": [ { "orgCode": "4412f8e857cd456b8081c21e6f78082f", "orgName": "产品部一组", "orgParentCode": "e017eb2bbbf54fd1b812d8653b248e83", "orgSort": 7, "createTime": null, "updateTime": null, "child": [] }, { "orgCode": "dbb391aea00d4361b7381754f4bf9aee", "orgName": "产品部二组", "orgParentCode": "e017eb2bbbf54fd1b812d8653b248e83", "orgSort": 8, "createTime": null, "updateTime": null, "child": [] }, { "orgCode": "2942b3dd782141c0bfcc892286c16f14", "orgName": "产品部三组", "orgParentCode": "e017eb2bbbf54fd1b812d8653b248e83", "orgSort": 9, "createTime": null, "updateTime": null, "child": [] } ] } ] }

三、数据库字段

CREATE TABLE "organization" (
  "ORG_CODE" text(40) NOT NULL,
  "ORG_NAME" text(40),
  "ORG_PARENT_CODE" text(40),
  "ORG_SORT" integer(40),
  "CREATE_TIME" text(40),
  "UPDATE_TIME" text(40),
  PRIMARY KEY ("ORG_CODE")
);

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值