首页 > 数据库 >给层级目录添加分类父类(父类为临时组合节点,非数据库数据)

给层级目录添加分类父类(父类为临时组合节点,非数据库数据)

时间:2023-11-13 11:36:04浏览次数:37  
标签:层级 String List private item trees 父类 节点

@Data
public class Tree implements Serializable
{
private static final long serialVersionUID = 1L;

/** 节点主键 */
private Long pkId;

/** 节点ID */
private String id;

/** 节点父ID */
private String pId;

/** 节点名称 */
private String name;

/** 节点标题 */
private String title;

//子节点
private List<Tree> children;

//节点默认展开
private Boolean spread = true;


/** 部门编号*/
private String organNo;
//与上一层关系
private String upperAffiliatedRelation;
//持股比例
private BigDecimal upperHoldStockPercent;

}
{
//创建分类节点
//按父id分组
Map<String, List> map = trees.stream().collect(Collectors.groupingBy(Tree::getPId));
for (Map.Entry<String, List> entry : map.entrySet()) {
String mapKey = entry.getKey();
List mapValue = entry.getValue();
//按同一分类目录分组
Map<String, List> collect = mapValue.stream().collect(Collectors.groupingBy(item-> Optional.ofNullable(item.getUpperAffiliatedRelation()).orElse("0")));
for (Map.Entry<String, List> item : collect.entrySet()) {
String key = item.getKey();
List value = item.getValue();
setNode(trees, key ,value, mapKey);//调用方法创造节点
}
}
//组成目录
List collect = trees.stream().filter(item -> item.getPId().equals("0"))
.peek(menu -> menu.setChildren(getChildList(menu, trees))).collect(Collectors.toList());
return collect;
}
private List getChildList(Tree menu, List trees) {
return trees.stream().filter(item -> item.getPId().equals(menu.getId()))
.peek(child -> child.setChildren(getChildList(child, trees))).collect(Collectors.toList());
}
//创造节点
List setNode(List trees, String key, List value, String mapKey) {
//创建分类目录
Tree node = new Tree();
String pid = UUID.randomUUID().toString();//目录id
if (other113.equals(key)) {
node.setTitle(other113Display+"("+value.size()+")");
}
if(mapKey.equals("0")){
node.setTitle(AccessorHelper.getAccessor().getOrgan().getName());
}
node.setId(pid);
node.setPId(mapKey);//设置临时节点父级
value.forEach(t->{t.setPId(pid);});//设置子类
if(!mapKey.equals("0")){
value.forEach(item->{
item.setTitle(item.getTitle()+"[持股"+item.getUpperHoldStockPercent().toString()+"%]");
});
}

    trees.add(node);
    return trees;
}

标签:层级,String,List,private,item,trees,父类,节点
From: https://www.cnblogs.com/kansc/p/17828765.html

相关文章

  • 倾斜摄影三维模型的根节点合并的点云抽稀关键技术分析
    倾斜摄影三维模型的根节点合并的点云抽稀关键技术分析 倾斜摄影三维模型的根节点合并是指将多个倾斜摄影拍摄得到的点云数据进行抽稀操作,以减少点云数据量和提高数据处理效率。在处理大规模的倾斜摄影点云数据时,点云抽稀是一个关键的技术,它可以有效地降低数据存储需求、加速数......
  • 红黑树插入节点的模拟实现
    要学习红黑树节点的插入那么首先就要了解什么是红黑树,以及红黑树的特点。红黑树的特点本来AVL树已经很厉害了,但是红黑树的总体效率略比1AVL树高。高的大体原因。我们先来看一下红黑树和AVL树的区别。AVL树严格的保证了左子树和右子树的高度差不超过1,而红黑树则是保证了最长路径不超......
  • Newtonsoft.Json.Linq 的层级结构
    Json基于类Newtonsoft.Json.Linq.JToken的应用简介【C#基础】 〇、前言在日常开发中,对于Json的使用还是比较频繁的,特别是Json对象和字符串或者实体对象之间的转换。虽然几乎天天用,但是总是感觉没那么明了,今天结合微软的Newtonsoft.Json.Linq类,试着详解一下,把相关......
  • 关于W3C制定的 JavaScript 标准事件模型,先事件捕获从windows > document 往下级直到
    关于W3C制定的JavaScript标准事件模型,先事件捕获从windows>document往下级直到特定的事件节点,然后进行事件处理,再事件冒泡,从特定节点往上级,这个完整的过程dom2规定的事件流包括3个阶段:①事件捕获,②处于目标阶段(事件处理),③事件冒泡阶段。DOM2级事件"规定事件流的三个阶......
  • redis 6个节点(3主3从),始终一个节点不能启动
    redis节点,始终有一个节点不能启动起来1.修改了配置文件protected-modeno,重启修改了配置文件protected-modeno,重启redis问题依然存在2、查看/var/log/message的redis日志Aug2107:40:33redisMasterkernel:Outofmemory:Killprocess31814(redis-server)score193ors......
  • 【ROS2机器人入门到实战】生命周期节点
    3.生命周期节点写在前面当前平台文章汇总地址:ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取教程配套机器人开发平台:两驱版|四驱版为方便交流,搭建了机器人技术问答社区:地址fishros.org.cn以前在ROS1中,节点的启动顺序无法被控制,这对整个机器人系统......
  • 关于设备节点的读写权限 ---wrx
    涉及到外设接口访问权限,需要开启外设访问的节点,对用户开通读写权限确定外设节点,可询问驱动,查看节点liunx读写权限||手动调试修改设备中节点的读写权限||adb调试指令如下 ......
  • Hadoop细粒度近实时慢节点告警实践
    1.背景在https://blog.51cto.com/u_15327484/8260931文章中,介绍了通过抓取Yarnweb页面的方式获取task级别的进度,并且将task进度通过纵向的历史进度进行预测对比检查作业进度是否符合预期。对于task级别的进度,不仅可以用作纵向对比,还可以进行横向对比。当多次发生某个节点上执行......
  • clickhouse节点重做(节点替换)
    测试验证环境:docker容器化部署的4节点2分片和2副本(centos7+clickhouse22.1.3)172.17.0.6clickhouse01172.17.0.7clickhouse02172.17.0.8clickhouse03172.17.0.9clickhouse04(故障节点)172.17.0.10clickhouse04(替换节点)节点重做一般情况,节点操作系统重装或......
  • 恒创科技:影响服务器香港节点无法访问的因素有哪些?
    ​香港服务器及大陆服务器对于国内用户在速度延迟上差不多,但香港的服务器不用备案,用来部署企业官网还是不错的,因为这样可以快速上线。但也有需要注意的地方,比如使用中可能会遇到无法访问的情况,会影响到网站的运营与打开。影响服务器香港节点无法访问的因素有很多。以下是......