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<String, Double> map, Map<String, ? extends List<?>> 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<TreeVo> 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;
|
}
|
}
|