构造树形JSON业务实体类

1.写一个业务实体类

import java.util.List;

/**
 * @作者: 恒
 * @创建时间: 2016年10月31日 上午10:21:44
 * 功能:orgchart实体类
 */
public class OrgChart {
       private String id;
       private String pId;
       private String name;
       private String title;
       private String className;
       private String photo;
       private String empCnt;
       private List<OrgChart> children;
       
//===================================get set===========================================
   	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getpId() {
		return pId;
	}
	public void setpId(String pId) {
		this.pId = pId;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getClassName() {
		return className;
	}
	public void setClassName(String className) {
		this.className = className;
	}
	public List<OrgChart> getChildren() {
		return children;
	}
	public void setChildren(List<OrgChart> children) {
		this.children = children;
	}
	public String getPhoto() {
		return photo;
	}
	public void setPhoto(String photo) {
		this.photo = photo;
	}
	public String getEmpCnt() {
		return empCnt;
	}
	public void setEmpCnt(String empCnt) {
		this.empCnt = empCnt;
	}
}

2 创建业务实体操作类

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import cn.ghr.common.EhrUtil;

/**
 * @作者: 恒
 * @创建时间: 2016年11月1日 上午10:34:09 
 * 功能:组织架构图数据源
 */
public class OrgDataSource {
	private List<OrgChart> orgList;
	
    /**
     * 构造函数
     * @param orgList
     */
	public OrgDataSource(List<HashMap<String, Object>> orgList) {
		super();
		this.orgList = new ArrayList<>();
		for (HashMap<String, Object> hashMap : orgList) {
			OrgChart orgChart = new OrgChart();
			orgChart.setId(EhrUtil.toString(hashMap.get("id")));
			orgChart.setpId(EhrUtil.toString(hashMap.get("pId")));
			orgChart.setName(EhrUtil.toString(hashMap.get("name")));
			orgChart.setTitle(EhrUtil.toString(hashMap.get("title")));
			orgChart.setPhoto(EhrUtil.toString(hashMap.get("photo")));
			orgChart.setClassName(EhrUtil.toString(hashMap.get("className")));
			orgChart.setEmpCnt("在职人数:"+EhrUtil.toString(hashMap.get("empCnt")));
			this.orgList.add(orgChart);
		}
	}

	/**
	 * @param orgChart
	 * @return
	 * @作者: 恒
	 * @创建时间: 2016年11月1日上午9:50:26 
	 * 功能:是否有子节点
	 */
	public boolean isHasChild(OrgChart orgChart) {
		boolean isRootNode = false;
		for (OrgChart org : orgList) {
			if (org.getpId().equals(orgChart.getId())) {
				isRootNode = true;
				break;
			}
		}
		return isRootNode;
	}

	/**
	 * @param orgChart
	 * @return
	 * @作者: 恒
	 * @创建时间: 2016年11月2日下午3:28:18 
	 * 功能:是否有父节点
	 */
	public boolean isHasParent(OrgChart orgChart) {
		boolean isRootNode = false;
		for (OrgChart org : orgList) {
			if (orgChart.getpId().equals(org.getId())) {
				isRootNode = true;
				break;
			}
		}
		return isRootNode;
	}

	/**
	 * @return
	 * @作者: 恒
	 * @创建时间: 2016年11月1日上午10:03:25 
	 * 功能:获取所有有根节点的orgChart
	 */
	public List<OrgChart> getRootOrgs() {
		List<OrgChart> rootOrg = new ArrayList<>();
		for (OrgChart org : orgList) {
			if (!isHasParent(org)) {
				rootOrg.add(org);
			}
		}
		return rootOrg;
	}

	/**
	 * @param orgChart
	 * @return
	 * @作者: 恒
	 * @创建时间: 2016年11月1日上午10:32:44
	 * 功能:获取父节点的所有子节点
	 */
	public List<OrgChart> getChildOrgs(OrgChart orgChart) {
		List<OrgChart> childOrgs = new ArrayList<>();
		for (OrgChart org : orgList) {
			if (org.getpId().equals(orgChart.getId())) {
				childOrgs.add(org);
			}
		}
		return childOrgs;
	}

	/**
	 * @param org
	 * @作者: 恒
	 * @创建时间: 2016年11月1日上午10:33:06
	 * 功能:递归获取所有根节点
	 */
	public void buildChildOrgs(OrgChart org) {
		List<OrgChart> children = getChildOrgs(org);
		if (!children.isEmpty()) {
			for (OrgChart child : children) {
				buildChildOrgs(child);
			}
			org.setChildren(children);
		}
	}

	/**
	 * @return
	 * @作者: 恒
	 * @创建时间: 2016年11月3日下午6:07:20 
	 * 功能:构造部门架构图结构
	 */
	public List<OrgChart> buildOrgChart() {
		List<OrgChart> treeOrgs = new ArrayList<OrgChart>();
		List<OrgChart> rootOrgs = getRootOrgs();
		for (OrgChart rootOrg : rootOrgs) {
			buildChildOrgs(rootOrg);
			treeOrgs.add(rootOrg);
		}
		return treeOrgs;
	}

	
	
	
	
	
	/**
	 * @return
	 * @作者: 恒
	 * @创建时间: 2016年11月3日下午6:10:04 
	 * 功能:获取岗位根节点
	 */
	public OrgChart getDeptRoot() {
		OrgChart deptRoot=new OrgChart();
		for (OrgChart org : orgList) {
			if (org.getId().equals("-1")) {
				deptRoot=org;
			}
		}
	    return deptRoot;
	}
	
    /**
     * @return
     * @作者: 恒
     * @创建时间: 2016年11月3日下午6:23:47
     * 功能:获取岗位根节点一级子节点
     */
	public List<OrgChart> getDeptChilds(OrgChart orgChart){
		List<OrgChart> childOrgs = new ArrayList<>();
		for (OrgChart org : orgList) {
			if (!isHasParent(org)&&!org.getId().equals(orgChart.getId())) {
					childOrgs.add(org);
			}
		}
		return childOrgs;
	}
	
	/**
	 * @return
	 * @作者: 恒
	 * @创建时间: 2016年11月3日下午6:06:30 
	 * 功能:递归为岗位一级子节点递归添加节点
	 */
	public List<OrgChart> buildDeptChart() {
		List<OrgChart> treeOrgs = new ArrayList<OrgChart>();
		OrgChart orgRoot = getDeptRoot();
		List<OrgChart> children = getDeptChilds(orgRoot);
		if (!children.isEmpty()) {
			for (OrgChart child : children) {
				buildChildOrgs(child);
			}
			orgRoot.setChildren(children);
		}
		treeOrgs.add(orgRoot);
		return treeOrgs;
	}

	/**
	 * @return
	 * @作者: 恒
	 * @创建时间: 2016年11月1日下午2:11:17 
	 * 功能:构造树形结构
	 */
	public List<OrgChart> buildTree() {
		List<OrgChart> treeOrgs = new ArrayList<OrgChart>();
		List<OrgChart> rootOrgs = getRootOrgs();
		for (OrgChart rootOrg : rootOrgs) {
			buildChildOrgs(rootOrg);
			treeOrgs.add(rootOrg);
		}
		return treeOrgs;
	}

	// ===========================get
	// set=========================================
	public List<OrgChart> getOrgList() {
		return orgList;
	}

	public void setOrgList(List<OrgChart> orgList) {
		this.orgList = orgList;
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值