1、如下圖所示紅色框框里面的數字如何統計出來

條件:
已知條件為最下一個層級的總數
答:
1、獲取所有分類信息列表
2、根據分類信息列表獲取最下一級商品總數
3、反向累加子級數據到父級
int counts = 0;List<TreeVO> treeVos = new ArrayList<>();TreeVO treeVo = new TreeVO(0, "全部", "#", "fa fa-folder-o", "#", null, false, true, true, counts, d);treeVos.add(treeVo);for (PRoductTypePo p : productTypes) { TreeVO tree = null; Map<String, Object> attr = new HashMap<>(); attr.put("level", p.getClassLvl()); attr.put("edit", true); int count = 0; if (request.isCountProduct()) { // 組裝模糊匹配key count = null == countMap.get(String.valueOf(p.getClassId())) ? 0 : countMap.get(String .valueOf(p.getClassId())); counts += count; attr.put("count", count); } if (p.getClassLvl().intValue() == 4) { attr.put("child", false); tree = new TreeVO(p.getClassId(), p.getClassNm(), p.getfClassId(), "fa fa-folder-o", p.getClassLvl(), p.getClassType(), false, false, false, count, attr); } else { attr.put("child", true); tree = new TreeVO(p.getClassId(), p.getClassNm(), p.getfClassId(), "fa fa-folder-o", p.getClassLvl(), p.getClassType(), false, false, false, count, attr); } treeVos.add(tree);}d.put("count", counts);Integer levl = 4;//最高層級boolean flag = true;while(flag){ levl-=1; List<TreeVO> treeVoLst = new ArrayList<>(); for (TreeVO tree : treeVos) { if(tree.getData().get("level").equals(levl)){ treeVoLst.add(tree); } } totTreeCount(treeVos,treeVoLst); if(levl==0) flag = false;}private boolean totTreeCount(List<TreeVO> treeVos, List<TreeVO> treeVoLst) { for (TreeVO treeVO1 : treeVoLst) { int count = 0; for (TreeVO treeVO2 : treeVos) { if (treeVO1.getId().equals(treeVO2.getParent())) { count += treeVO2.getCount(); } } treeVO1.setCount(count); treeVO1.getData().put("count", count); } return true; }
新聞熱點
疑難解答