package org.sxkj.odm.utils; import org.springframework.util.CollectionUtils; import org.sxkj.common.func.Streams; import org.sxkj.common.utils.NoNullUtils; import org.sxkj.system.vo.TreeVo; import java.util.List; import java.util.Map; /** * tree 工具类 * @author zhongrj * @date 2025-06-18 */ public class TreeUtils { /** * 构建树 * * @param listMap key=区域code,value=列表 * @param data 区域树 * @param map key=区域code,value=数量 * @param listMap * @return */ public static TreeVo buildTreeVo(TreeVo data, Map map, Map> listMap) { if (data == null) { return null; } if (CollectionUtils.isEmpty(map)) { return data; } String id = data.getId(); //明细列表 List list = listMap.get(id); data.setData(list); List children = data.getChildrens(); //总数 Double totalNum = Streams.reduce(children, entity -> NoNullUtils.doubleValue(map.get(entity.getId())), 0.0, Double::sum); data.setNumber(totalNum); Double num = NoNullUtils.doubleValue(map.get(data.getId())); if (num > 0) { data.setNumber(num); } if (!CollectionUtils.isEmpty(children)) { for (TreeVo treeVo : children) { buildTreeVo(treeVo, map, listMap); } } return data; } }