多表形成树形结构

多表形成树形结构:

package com.js.archive.assistant.domain.vo;import com.js.core.domain.vo.BaseVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;import java.util.List;/*** <p>* 	 VO* </p>** @author js* @date 2024-1-18* @since JDK 1.8*/@ApiModel(value="库位号选择对象", description="")
@EqualsAndHashCode(callSuper = true)
@Data
public class ArchiveLocationNumVO extends BaseVO {private static final long serialVersionUID = 1L;@ApiModelProperty(value = "id")private Long dataId;@ApiModelProperty(value = "编号")private String code;@ApiModelProperty(value = "名称")private String name;@ApiModelProperty(value = "父id")private Long parentId;@ApiModelProperty(value = "节点等级")private Integer level;@ApiModelProperty(value = "子节点")private List<ArchiveLocationNumVO> children;
}
/*** 获取登录者全宗下的智慧库房** @return List<BizArchiveFloorVO>*/public List<ArchiveLocationNumVO> getAllFloorInfo() {List<ArchiveLocationNumVO> archiveLocationNumVOList = new ArrayList<>();//---------------------------------获取每张表的数据------------------------------------------------        Long archiveCompanyId = ThreadLocalUtil.getArchiveCompanyId();List<KfWarehouse> kfWarehouseList = kfWarehouseService.lambdaQuery().eq(BaseEntity::getArchiveCompanyId, archiveCompanyId).list();List<KfArea> bizArchiveCabinetList = kfAreaService.lambdaQuery().eq(BaseEntity::getArchiveCompanyId, archiveCompanyId).list();List<KfColumn> bizArchiveFloorList = kfColumnService.lambdaQuery().eq(BaseEntity::getArchiveCompanyId, archiveCompanyId).list();List<KfLayerSection> kfLayerSectionList = kfLayerSectionService.lambdaQuery().eq(BaseEntity::getArchiveCompanyId, archiveCompanyId).list();
//----------------------------------------------------------------------------------------------------//开始从最外层开始循环查询if (CollectionUtil.isNotEmpty(kfWarehouseList)) {kfWarehouseList.forEach(bizArchiveRoom -> {//库房1级List<ArchiveLocationNumVO> cabinetArchiveLocationNumList = new ArrayList<>();ArchiveLocationNumVO archiveLocationNumVO = new ArchiveLocationNumVO();archiveLocationNumVO.setParentId(0L);archiveLocationNumVO.setLevel(1);archiveLocationNumVO.setDataId(bizArchiveRoom.getId());archiveLocationNumVO.setCode(String.valueOf(bizArchiveRoom.getKfSerialno()));archiveLocationNumVO.setName(bizArchiveRoom.getKfName());if (CollectionUtil.isNotEmpty(bizArchiveCabinetList)) {//库区2级bizArchiveCabinetList.forEach(bizArchiveCabinet -> {if (bizArchiveRoom.getId() == bizArchiveCabinet.getWarehouseId()) {List<ArchiveLocationNumVO> archiveFloorList = new ArrayList<>();ArchiveLocationNumVO cabinetArchiveLocationNumVO = new ArchiveLocationNumVO();cabinetArchiveLocationNumVO.setParentId(bizArchiveCabinet.getWarehouseId());cabinetArchiveLocationNumVO.setLevel(2);cabinetArchiveLocationNumVO.setDataId(bizArchiveCabinet.getId());cabinetArchiveLocationNumVO.setCode(bizArchiveCabinet.getKqCode());cabinetArchiveLocationNumVO.setName(bizArchiveCabinet.getKqName());if (CollectionUtil.isNotEmpty(bizArchiveFloorList)) {//库列3级bizArchiveFloorList.forEach(bizArchiveFloor -> {if (bizArchiveCabinet.getId() == bizArchiveFloor.getAreaId()) {List<ArchiveLocationNumVO> kfColumnList = new ArrayList<>();ArchiveLocationNumVO kfColumnNumVO = new ArchiveLocationNumVO();kfColumnNumVO.setParentId(bizArchiveFloor.getAreaId());kfColumnNumVO.setLevel(3);kfColumnNumVO.setDataId(bizArchiveFloor.getId());kfColumnNumVO.setCode(String.valueOf(bizArchiveFloor.getKlSerialno()));kfColumnNumVO.setName(bizArchiveFloor.getKlName());if (CollectionUtil.isNotEmpty(kfLayerSectionList)) {//层节4级kfLayerSectionList.forEach(kfLayerSection -> {if (bizArchiveFloor.getId() == kfLayerSection.getColumnId()) {ArchiveLocationNumVO floorArchiveLocationNumVO = new ArchiveLocationNumVO();floorArchiveLocationNumVO.setParentId(kfLayerSection.getColumnId());floorArchiveLocationNumVO.setLevel(4);floorArchiveLocationNumVO.setDataId(kfLayerSection.getId());floorArchiveLocationNumVO.setName(kfLayerSection.getPositionTrans());kfColumnList.add(floorArchiveLocationNumVO);}});}kfColumnNumVO.setChildren(kfColumnList);archiveFloorList.add(kfColumnNumVO);}});}cabinetArchiveLocationNumVO.setChildren(archiveFloorList);cabinetArchiveLocationNumList.add(cabinetArchiveLocationNumVO);}});}archiveLocationNumVO.setChildren(cabinetArchiveLocationNumList);archiveLocationNumVOList.add(archiveLocationNumVO);});}return archiveLocationNumVOList;}
{"code":0,"msg":null,"data":[{"id":null,"dataId":"1","code":"1","name":"1号库房1","parentId":"0","level":1,"children":[{"id":null,"dataId":"1","code":"1-1","name":"1库区","parentId":"1","level":2,"children":[{"id":null,"dataId":"1","code":"1","name":"1列","parentId":"1","level":3,"children":[{"id":null,"dataId":"1","code":null,"name":"1库区1列左面2节号2层号","parentId":"1","level":4,"children":null}]},{"id":null,"dataId":"2","code":"2","name":"2列","parentId":"1","level":3,"children":[{"id":null,"dataId":"2","code":null,"name":"2库区2列右面1节号2层号","parentId":"2","level":4,"children":null}]},{"id":null,"dataId":"3","code":"3","name":"3列","parentId":"1","level":3,"children":[]}]},{"id":null,"dataId":"2","code":"1-2","name":"2库区","parentId":"1","level":2,"children":[{"id":null,"dataId":"4","code":"4","name":"4列","parentId":"2","level":3,"children":[]},{"id":null,"dataId":"5","code":"5","name":"5列","parentId":"2","level":3,"children":[]}]},{"id":null,"dataId":"3","code":"1-21","name":"1-21","parentId":"1","level":2,"children":[{"id":null,"dataId":"6","code":"1","name":"1列","parentId":"3","level":3,"children":[]}]},{"id":null,"dataId":"4","code":"1-3","name":"3库区","parentId":"1","level":2,"children":[]},{"id":null,"dataId":"5","code":"1-4","name":"1-4","parentId":"1","level":2,"children":[]},{"id":null,"dataId":"6","code":"1-5","name":"1-5","parentId":"1","level":2,"children":[]},{"id":null,"dataId":"7","code":"1-6","name":"6库区","parentId":"1","level":2,"children":[]}]},{"id":null,"dataId":"2","code":"2","name":"2号库房11","parentId":"0","level":1,"children":[]},{"id":null,"dataId":"3","code":"3","name":"3号库房","parentId":"0","level":1,"children":[]},{"id":null,"dataId":"4","code":"4","name":"4号库房","parentId":"0","level":1,"children":[]},{"id":null,"dataId":"5","code":"5","name":"5号库房","parentId":"0","level":1,"children":[]},{"id":null,"dataId":"6","code":"6","name":"6号库房修该","parentId":"0","level":1,"children":[]},{"id":null,"dataId":"7","code":"7","name":"7号库房","parentId":"0","level":1,"children":[]}]}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/636672.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql中建立一个用户,只能看到某个指定的数据库

MySQL用户管理及权限控制 在MySQL数据库中&#xff0c;用户管理和权限控制是非常重要的功能。通过正确地设置用户和权限&#xff0c;可以保护数据库的安全性&#xff0c;防止未授权的访问和数据泄露。本文将介绍如何在MySQL中创建一个用户&#xff0c;并限制该用户只能访问特定…

假设检验:以样本服从二项分布举例

目录 假设检验一、假设检验的思想二、假设检验的基本步骤1. 确定要进行检验的假设2. 选择检验统计量3. 确定用于做决策的拒绝域4. 求出检验统计量的值5. 查看样本结果是否位于拒绝域内6. 做出决策 三、举例说明例子1——某公司治疗打鼾例子2——女士品茶的故事 假设检验 一、假…

用Photoshop来制作GIF动画

录了个GIF格式的录屏文件&#xff0c;领导让再剪辑下&#xff0c;于是用Photoshop2023&#xff08;PS版本低至CS6操作方式一样&#xff09;进行剪辑&#xff0c;录屏文件有约1400帧&#xff0c;由于我处理的帧数太多&#xff0c;PS保存为GIF格式时&#xff0c;还是挺耗时的&…

【Docker】网络配置及自定义网络的使用

一、引言 1、什么是网络配置 Docker的网络配置主要是指Docker容器与外部网络之间的连接设置&#xff0c;包括容器内部的IP地址、端口号等。Docker提供了多种网络模式&#xff0c;包括bridge、host、none等&#xff0c;以满足不同的需求。 默认情况下&#xff0c;Docker使用brid…

用Python替代Mapinfo更快查找两张表中距离最近的点

目录 一、引言 二、准备工作 三、数据准备 四、计算距离 五、筛选最近点 六、完整代码示例 七、性能优化 八、总结 一、引言 在地理信息系统&#xff08;GIS&#xff09;中&#xff0c;经常需要查找两张表中距离最近的点。传统的做法是使用Mapinfo软件&#xff0c;但这…

探索世界,从一款好用的浏览器开始!

好用的浏览器分享 在这个数字化的时代&#xff0c;浏览器已经成为了我们生活中不可或缺的工具。从浏览新闻、社交媒体到工作学习&#xff0c;我们几乎无时无刻不在与浏览器打交道。那么&#xff0c;如何选择一款好用的浏览器呢&#xff1f;今天&#xff0c;我就来为大家分享几…

C++函数指针

目录 背景定义 实例运行结果 背景 定义 函数指针是一个指向函数的指针变量&#xff0c;它可以指向某个函数的入口地址&#xff0c;使得程序可以通过该指针变量调用该函数。 实例 #include <iostream> using namespace std;/*** 函数指针 */// 定义一个函数 int add(i…

SAP ABAP 指针

SAP ABAP 指针 目录 一、FIELD SYMBOL 字段符号 1、定义2、assign分配3.分配-内表4.动态内表 二、数据引用 一、FIELD SYMBOL 字段符号 定义&#xff1a;是已经存在的数据对象的占位符或者符号名称&#xff0c;通过关键字 FIELD-SYMBOLS 定义&#xff0c;类似于指针&#x…

systemverilog/verilog文件操作

1、Verilog文件操作 Verilog具有系统任务和功能,可以打开文件、将值输出到文件、从文件中读取值并加载到其他变量和关闭文件。 1.1 、Verilog文件操作 1.1.1、打开和关闭文件 module tb; // 声明一个变量存储 file handler integer fd; initial begin // 以写权限打开一个文…

机器学习实战15-推荐算法-协同过滤在电影推荐中的应用实践

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下机器学习实战15-推荐算法-协同过滤在电影推荐中的应用实践。 随着互联网的发展&#xff0c;信息过载问题日益严重&#xff0c;推荐系统应运而生。本文将详细介绍推荐算法在电影推荐领域的应用实践&#xff0c;以及其…

【Python】--- 基础语法(1)

目录 1.变量和表达式2.变量和类型2.1变量是什么2.2变量的语法2.3变量的类型2.3.1整数2.3.2浮点数&#xff08;小数&#xff09;2.3.3字符串2.3.4布尔2.3.5其他 2.4为什么要有这么多类型2.5动态类型特征 3.注释3.1注释的语法3.2注释的规范 结语 1.变量和表达式 对python的学习就…

muduo网络库剖析——通道Channel类

muduo网络库剖析——通道Channel类 前情从muduo到my_muduo 概要事件种类channel 框架与细节成员函数细节实现使用方法 源码结尾 前情 从muduo到my_muduo 作为一个宏大的、功能健全的muduo库&#xff0c;考虑的肯定是众多情况是否可以高效满足&#xff1b;而作为学习者&#x…

树莓派报错gpio: command not found(未找到命令)

使用gpio的时候出现报错 gpio: command not found 解决方法&#xff1a; wget https://project-downloads.drogon.net/wiringpi-latest.deb 过 wget 工具下载一个名为 "wiringpi-latest.deb" 的 Debian 软件包。这个软件包是 WiringPi 库的安装包&#xff0c;Wir…

好用的Redisson

好用的Redisson 文章目录 好用的Redisson介绍如何安装 Redisson如何编译运行 Redisson使用 RList 操作 Redis 列表示例 使用 RMap 操作 Redis 哈希示例 使用 RLock 实现 Redis 分布式锁示例 使用 RAtomicLong 实现 Redis 原子操作示例 **获取分布式队列**&#xff1a;RedissonC…

多线程-Thread类及常见方法

目录 1.什么是Thread类 1.1Thread 的常⻅构造⽅法 1.2 Thread 的⼏个常⻅属性 2.启动⼀个线程 - start() 经典面试题&#xff1a;start 和run 区别 3.中断⼀个线程 方法一&#xff1a; 方法二: 4.等待⼀个线程 - join() 1.什么是Thread类 Thread类是Java编程语言中的一个重…

图像去噪——CTNet网络推理测试(详细图文教程)

目录 一、CTNet二、源码包准备2.1 测试集2.2 模型权重 三、环境准备四、推理测试4.1 配置参数修改4.2 官网测试4.2.1 测试当通道图像4.2.1.1 命令方式测试4.2.1.2 Configuration配置测试4.2.1.3 测试结果 4.2.2 测试彩色图像4.2.2.1 命令方式测试4.2.2.2 Configuration配置测试…

性能优化-HVX架构简介

来自 「发表于知乎专栏《移动端算法优化》」 本文主要介绍Hexagon DSP的HVX技术&#xff0c;旨在通过简单的语言讲清HVX技术。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;高性能&#xff08;HPC&#xff09;开…

Hive添加第三方Jar包方式总结

一、在 Hive Shell中加入—add jar hdfs dfs -put HelloUDF-1.0.jar /tmp beeline -u "jdbc:hive2://test.bigdata.com:10000" -n "song" -p "" add jar hdfs:///tmp/HelloUDF-1.0.jar; create function HelloUDF as org.example.HelloUDF USIN…

Elasticsearch 入门向使用

文章目录 ElasticSearch简介倒排索引安装(单节点)分词器kibana与Mysql概念上的对比索引库CRUD文档CRUDDSL查询相关性算分Function Score Query自定义算分Boolean Query 搜索结果处理排序分页高亮 数据聚合 aggregations自动补全数据同步集群 ElasticSearch 简介 Elasticsearc…

轻松掌握AI辅助设计微信红包封面并快速过审

【无矶之谈】轻松使用AI设计微信红包封面/动态封面并快速过审 关注本公众号梦无矶测开实录&#xff0c;2024年1月21日之后关注最新的文章&#xff0c;后台回复封面红包&#xff0c;即可免费领取本号专属微信红包封面。&#xff08;目前我过审的有五个封面&#xff0c;其中一个…