递归快速获取机构树型图
一般组织架构都会有层级关系,根部门的parentId一般设置为null或者0等特殊字符,而次级部门及以下的parentId则指向他们父节点的id。
以此为基础,业务上经常会有查询整个组织架构层级关系的需求,返回对象中的children属性用来存储子机构的集合,从而形成树型结构。
这种情况一般使用递归写法,能快速完成需求。
1、获取所有根节点,根节点的集合就是最终返回对象的集合的元素数量size
2、设置根节点的子节点集合。
3、递归设置子节点的子节点集合。
public R<List<BankBranchInfo>> getBankBranchInfo() {String sql = "select ORG_ID, ORG_NAME, PARENT_ID from auth_org WHERE TENANT_ID <> 100001 ";List<OrgEntity> listAll = beanCruder.selectList(OrgEntity.class, sql);List<BankBranchInfo> bankBranchInfos = new ArrayList<>();listAll.forEach(org -> {BankBranchInfo bankBranchInfo = new BankBranchInfo();bankBranchInfo.setId(String.valueOf(org.getOrgId()));bankBranchInfo.setBankName(org.getOrgName());bankBranchInfo.setParentId(org.getParentId() == null ? null : Long.valueOf(org.getParentId()));bankBranchInfos.add(bankBranchInfo);});//一级List<BankBranchInfo> rootList = bankBranchInfos.stream().filter(e -> e.getParentId() == null).collect(Collectors.toList());//其他级List<BankBranchInfo> other = bankBranchInfos.stream().filter(e -> e.getParentId() != null).collect(Collectors.toList());setTree(rootList, other);return R.ok(rootList, "查询完成");}private void setTree(List<BankBranchInfo> children, List<BankBranchInfo> other) {children.forEach(root -> {List<BankBranchInfo> childrenList = new ArrayList<>();root.setBankBranchInfos(childrenList);//该级子级List<BankBranchInfo> temp = other.stream().filter(e -> root.getId().equals(e.getParentId().toString())).collect(Collectors.toList());childrenList.addAll(temp);if (!childrenList.isEmpty()) {setTree(childrenList, other);}});}
相关文章:
递归快速获取机构树型图
一般组织架构都会有层级关系,根部门的parentId一般设置为null或者0等特殊字符,而次级部门及以下的parentId则指向他们父节点的id。 以此为基础,业务上经常会有查询整个组织架构层级关系的需求,返回对象中的children属性用来存储子…...
[Web安全 网络安全]-XSS跨站脚本攻击
文章目录: 一:前言 1.定义 2.漏洞出现的原因 3.鉴别可能存在XSS漏洞的地方 4.攻击原理 5.危害 6.防御 7.环境 7.1 靶场 7.2 自动扫描工具 7.3 手工测试工具 8.payload是什么 二:常用的标签语法 三:XSS的分类 反射…...
数据库数据恢复—SQL Server附加数据库出现“错误823”怎么恢复数据?
SQL Server数据库故障: SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库。 SQL Server数据库出现823错误的可能原因有:数据库物理页面损坏、数据库物理页面校验值损坏导致无法识别该页面…...
Vscode 中新手小白使用 Open With Live Server 的坑
背景 最近在家学习尝试前端项目打包的一些事项,既然是打包,那么肯定就会涉及到对打包后文件的访问,以直观的查看打包后的效果 那么肯定就会使用到 Vscode 中 Open With LIve Server 这个功能了,首先这个是一个叫 Live Server 的…...
【深度学习 transformer】Transformer与ResNet50在自定义数据集图像分类中的效果比较
在深度学习领域,图像分类是一个经典且重要的任务。近年来,Transformer架构在自然语言处理领域取得了显著成功,逐渐被引入计算机视觉任务。与此同时,ResNet50作为一种经典的卷积神经网络(CNN),在…...
【系统架构设计师】专业英语90题(附答案详解)
更多内容请见: 备考系统架构设计师-核心总结索引 文章目录 【第1~5题】【第6~10题】【第11~15题】【第16~20题】【第21~25题】【第26~30题】【第31~35题】【第36~40题】【第41~45题】【第46~50题】【第51~55题】【第56~60题】【第61~65题】【第66~70题】【第71~75题】【第76~8…...
ItemXItemEffect | ItemEffect
目录 ItemXItemEffect ItemEffectID ItemID ItemEffect ID TriggerType Charges CoolDownMSec SpellID SpellCategoryID CategoryCoolDownMSec ItemXItemEffect.db2 ItemEffectID 物品效果编号,取值链接 ItemEffect.db2 ItemID 物品 ID ItemEffect.d…...
web 动画库
web动画库 动画领域有一个比较知名的CSS库:Animate.css,它提供了60多种动画,满足一般网页的需求,比如淡入淡出、闪现等等一系列日常动画,不过虽然它能满足日常需求,但是一些复杂的场景就需要靠JS手动去操作…...
我的AI工具箱Tauri版-MicrosoftTTS文本转语音
本教程基于自研的AI工具箱Tauri版进行MicrosoftTTS文本转语音服务。 MicrosoftTTS文本转语音服务 是自研的AI工具箱Tauri版中的一款功能模块,专为实现高效的文本转语音操作而设计。通过集成微软TTS服务,用户可以将大量文本自动转换为自然流畅的语音文件…...
【Webpack--013】SourceMap源码映射设置
🤓😍Sam9029的CSDN博客主页:Sam9029的博客_CSDN博客-前端领域博主 🐱🐉若此文你认为写的不错,不要吝啬你的赞扬,求收藏,求评论,求一个大大的赞!👍* &#x…...
创新驱动,技术引领:2025年广州见证汽车电子技术新高度
汽车行业的创新浪潮正汹涌澎湃,一场引领未来出行的科技盛宴即将拉开帷幕! AUTO TECH 2025 第十二届广州国际汽车电子技术展览会将于 2025 年 11 月 20日至 22 日在广州保利世贸博览馆(PWTC Expo)隆重举行。 作为亚洲地区领先的汽…...
Spring Boot框架在心理教育辅导系统中的应用案例
目 录 摘 要 I ABSTRACT II 1绪 论 1 1.1研究背景 1 1.2设计原则 1 1.3论文的组织结构 2 2 相关技术简介 3 2.1Java技术 3 2.2B/S结构 3 2.3MYSQL数据库 4 2.4Springboot框架 4 3 系统分析 6 3.1可行性分析 6 3.1.1技术可行性 6 3.1.2操作可行性 6 3.1.3经济可行性 6 3.1.4法律…...
Shiro-550—漏洞分析(CVE-2016-4437)
文章目录 漏洞原理源码分析加密过程解密过程 漏洞复现 漏洞原理 Shiro-550(CVE-2016-4437)反序列化漏洞 在调试cookie加密过程的时候发现开发者将AES用来加密的密钥硬编码了,并且所以导致我们拿到密钥后可以精心构造恶意payload替换cookie,然后让后台最…...
【例题】lanqiao4425 咖啡馆订单系统
样例输入 3 2 2 1 3 1 2样例输出 3 2样例说明 输入的数组为:【3,1,2】 增量序列为:【2,1】 当增量 h2:对于每一个索引 i,我们会将数组元素 arr[i] 与 arr[i−h] 进行比较,并进行可…...
从小白到大神:C语言预处理与编译环境的完美指南(下)
从小白到大神:C语言预处理与编译环境的完美指南(上)-CSDN博客 👆👆👆👆👆👆上篇链接在这~~👆👆👆👆👆&#x…...
3657A/B/AM/BM矢量网络分析仪
苏州新利通 3657A/B/AM/BM 矢量网络分析仪 3657系列矢量网络分析仪适用于无线通信、有线电视、教育及汽车电子等领域,可用于对滤波器、放大器、天线、电缆、有线电视分接头等射频元件的性能测量。该产品采用Windows操作系统;具有误差校准功能、时域功能…...
卸载完mathtype后,删除word加载项中的mathtype
请参考博客“卸载完mathtype后,word加载项中还是有mathtype的解决方法_怎么删除word加载项里的mathtype-CSDN博客”以及 “安装卸载MathType经验解决MathType DLL找不到的问题——超实用_mathtype dll cannot-CSDN博客” 如果在删除.dotm文件时,删不掉…...
vue 实现tab菜单切换
1、目标: 实现切换tab菜单,激活状态,按钮高亮,显示对应的菜单内容 2、实现 <template><div class"tan_menu"><ul class"container"><liclass"item"v-for"item in tab…...
大数据Flink(一百二十):Flink SQL自定义函数(UDF)
文章目录 Flink SQL自定义函数(UDF) 一、概述 二、自定义标量函数(UDSF) 三、自定义聚合函数(UDAF) 四、 自定义表值函数(UDTF) Flink SQL自定义函数…...
【图像检索】基于灰度共生矩的纹理图像检索,matlab实现
博主简介:matlab图像代码项目合作(扣扣:3249726188) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本次案例是基于灰度共生矩的纹理图像检索,用matlab实现。 一、案例背景和算法介绍 …...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...
数据结构:递归的种类(Types of Recursion)
目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...
