|
@@ -0,0 +1,91 @@
|
|
|
+package com.diagbot.util;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Description:
|
|
|
+ * @author: gaodm
|
|
|
+ * @time: 2020/1/8 15:54
|
|
|
+ */
|
|
|
+public class XxfUtil {
|
|
|
+
|
|
|
+ public static List<Xmzb> allList = new ArrayList<Xmzb>();
|
|
|
+
|
|
|
+ public static void main(String[] args) {
|
|
|
+ Xmzb root = new Xmzb("1", "0", null);
|
|
|
+ Xmzb root1_1 = new Xmzb("1-1", "1", null);
|
|
|
+ Xmzb root1_2 = new Xmzb("1-2", "1", null);
|
|
|
+ Xmzb root1_1_1 = new Xmzb("1-1-1", "1-1", null);
|
|
|
+ Xmzb root1_1_2 = new Xmzb("1-1-2", "1-1", 33);
|
|
|
+ Xmzb root1_2_1 = new Xmzb("1-2-1", "1-2", null);
|
|
|
+ Xmzb root1_2_2 = new Xmzb("1-2-2", "1-2", 40);
|
|
|
+ Xmzb root1_1_1_1 = new Xmzb("1-1-1-1", "1-1-1", 50);
|
|
|
+ Xmzb root1_1_1_2 = new Xmzb("1-1-1-2", "1-1-1", 49);
|
|
|
+ Xmzb root1_2_1_1 = new Xmzb("1-2-1-1", "1-2-1", 2);
|
|
|
+ Xmzb root1_2_1_2 = new Xmzb("1-2-1-1", "1-2-1", 3);
|
|
|
+ allList.add(root);
|
|
|
+ allList.add(root1_1);
|
|
|
+ allList.add(root1_2);
|
|
|
+ allList.add(root1_1_1);
|
|
|
+ allList.add(root1_1_2);
|
|
|
+ allList.add(root1_2_1);
|
|
|
+ allList.add(root1_2_2);
|
|
|
+ allList.add(root1_1_1_1);
|
|
|
+ allList.add(root1_1_1_2);
|
|
|
+ allList.add(root1_2_1_1);
|
|
|
+ allList.add(root1_2_1_2);
|
|
|
+ List<Xmzb> list = new ArrayList<Xmzb>();
|
|
|
+ list.add(root);
|
|
|
+ doCount(root, list);
|
|
|
+ for (Xmzb xmzb : allList) {
|
|
|
+ System.out.println(xmzb.getId() + ":" + xmzb.getXmgs());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public static Map<String, Object> doCount(Xmzb root, List<Xmzb> list) {
|
|
|
+ Map<String, Object> map = new HashMap<String, Object>();
|
|
|
+ Double xmgs = 0.0;
|
|
|
+
|
|
|
+ List<Xmzb> clist = findByQueryString(root.getId());//此处可以使用sql通过父节点查询孩子节点sql:from Xmzb where year='2016' and pid='"+root.getId()+"'
|
|
|
+ if (clist == null || clist.size() == 0) {
|
|
|
+ if (null != root.getXmgs()) {
|
|
|
+ map.put("xmgs", root.getXmgs());
|
|
|
+ } else {
|
|
|
+ map.put("xmgs", xmgs);
|
|
|
+ }
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+ if (clist != null && clist.size() > 0) {
|
|
|
+ list.addAll(clist);
|
|
|
+ for (Xmzb child : clist) {
|
|
|
+ //递归
|
|
|
+ Map<String, Object> map_c = doCount(child, list);
|
|
|
+ Double res = Double.parseDouble(map_c.get("xmgs").toString());
|
|
|
+ child.setXmgs(res.intValue());
|
|
|
+ //统计当前元素的子节点个数
|
|
|
+ xmgs += res;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ root.setXmgs(xmgs.intValue());
|
|
|
+ map.put("xmgs", xmgs);
|
|
|
+ map.put("list", list);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static List<Xmzb> findByQueryString(String pid) {
|
|
|
+ List<Xmzb> list = new ArrayList<Xmzb>();
|
|
|
+ for (Xmzb xmzb : allList) {
|
|
|
+ if (xmzb.getPid().equals(pid)) {
|
|
|
+ list.add(xmzb);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+}
|