【无标题】

	/**---------------------------------------构造tree-------------------------------------------*/

	/**
	 * 方式二:使用递归实现
	 *
	 * @param treeList
	 * @return
	 */
	public static List<GlobalVo> toTree02(List<GlobalVo> treeList) {
		List<GlobalVo> retList = new ArrayList<>();
		for (GlobalVo parent : treeList) {
			String pid = parent.getPid();
			if (pid==null||"0".equals(pid)||"".equals(pid)) {
				retList.add(findChildren(parent, treeList));
			}
		}
		return retList;
	}

	private static GlobalVo findChildren(GlobalVo parent, List<GlobalVo> treeList) {
		for (GlobalVo child : treeList) {
			if (parent.getId().equals(child.getPid())) {
				if (parent.getChildren() == null) {
					parent.setChildren(new ArrayList<>());
				}
				parent.getChildren().add(findChildren(child, treeList));
			}
		}
		return parent;
	}

	/**---------------------------------------子节点由下到上汇总,传入的是tree
	 * -------------------------------------------------------*/

	public static GlobalVo calculateWithRecursion(List<GlobalVo> orgList) {
		long l = System.nanoTime();
		if (orgList == null || orgList.size() == 0) {
			return null;
		}
		GlobalVo rootOrg = orgList.get(0);
		calculateChildren(rootOrg);
		return rootOrg;
	}

	private static GlobalVo calculateChildren(GlobalVo pNode) {
		if (pNode == null || pNode.getChildren() == null
				|| pNode.getChildren().size() == 0) {
			return pNode;
		}
		double c = Double.valueOf(emptyNull(pNode.getUsedBudget()));
		for (GlobalVo child : pNode.getChildren()) {
			double count = Double.valueOf(emptyNull(calculateChildren(child).getUsedBudget()));
			c += count;
		}
		pNode.setUsedBudget(c+"");
		//DecimalFormat df = new DecimalFormat("#0.00");
		//System.out.println();
		//pNode.setPercentBudget(df.format((Double.valueOf(emptyNull(pNode.getUsedBudget()))/Double.valueOf(emptyNull(pNode.getInitBudget())))));
		return pNode;
	}

	public  static String emptyNull(Object str) {
		if (str==null||"".equals(str)){
			return "0";
		}else {
			return str.toString();
		}
	}
--------------------基础类----------------------
ublic class GlobalVo implements Serializable {

	private static final long serialVersionUID = 1L;

	private List<GlobalVo> children;

	private GlobalVo parent;

	private String id;

	private String pid;

	private String name;

	private String cbsName;

	private String cbsCode;

	private String parentCbsCode;

	private String initBudget;

	private String usedBudget;

	private String percentBudget;

	private String remark;

	private double count;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值