递归获取组织树
直接上代码
一、组织树代码
/**
* @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")
);