Cascader级联选择器数据数据格式不知道的可以去官网看下;这里我就不表示什么了。

部门实体类:

 import lombok.Data;

 @Data
public class Department {
private Integer id; private Integer parentId; private String name; public Department(Integer id, Integer parentId, String name) {
this.id = id;
this.parentId = parentId;
this.name = name;
} public static TreeItem deptNode(Department dept) {
TreeItem treeItem = new TreeItem();
treeItem.setId(dept.getId());
treeItem.setName(dept.getName());
treeItem.setParentId(dept.getParentId());
return treeItem;
}
}

用户实体类:

 import lombok.Data;

 @Data
public class Employee { private Integer id; private String name; private Integer deptId; public Employee(Integer id, String name, Integer deptId) {
this.id = id;
this.name = name;
this.deptId = deptId;
} public static TreeItem empNode(Employee emp) {
TreeItem treeItem = new TreeItem();
treeItem.setId(emp.getId());
treeItem.setName(emp.getName());
treeItem.setParentId(emp.getDeptId());
return treeItem;
}
}

返回数据实体类:

 import lombok.Data;

 import java.util.List;

 @Data
public class TreeItem {
private Integer id; private Integer parentId; private String name; private List<TreeItem> children;
}

数据处理操作,这里是用java8新的特性写的。不懂的可以学习下,挺好用的

 import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; public class App {
public static void main(String[] args) {
//创建部门
List<Department> deptList = Arrays.asList(
new Department(1, 0, "星宇"),
new Department(2, 1, "金3"),
new Department(3, 2, "金3/1"),
new Department(4, 2, "金3/2"),
new Department(5, 1, "总1"),
new Department(6, 5, "总1/2") );
//创建员工
List<Employee> empList = Arrays.asList(
new Employee(1, "张三", 5),
new Employee(2, "李四", 6),
new Employee(3, "王五", 2),
new Employee(4, "赵六", 2),
new Employee(5, "田七", 3),
new Employee(6, "牛八", 4)
);
//转换成结点
List<TreeItem> allDept = deptList.stream()
.map(Department::deptNode)
.collect(Collectors.toList());
//按照上级部门分组
Map<Integer, List<TreeItem>> deptMap = allDept.stream()
.collect(Collectors.groupingBy(TreeItem::getParentId));
//给每个部门绑定子部门
allDept.forEach(node ->
node.setChildren(deptMap.get(node.getId()))
); List<TreeItem> treeItem = deptMap.get(0); Map<Integer, List<TreeItem>> empMap = empList.stream()
.filter(emp -> emp.getDeptId() != null)
.map(Employee::empNode)
.collect(Collectors.groupingBy(TreeItem::getParentId));
//BFS辅助队列
List<TreeItem> queue = new ArrayList<>();
queue.addAll(treeItem);
for (int i = 0; i < queue.size(); i++) {
TreeItem node = queue.get(i);
//遍历时先将子部门放入队列中
if (node.getChildren() != null) {
queue.addAll(node.getChildren());
} else {
node.setChildren(new ArrayList<>());
}
//再将部门成员放入子结点中
List<TreeItem> children = empMap.get(node.getId());
if (children != null) {
node.getChildren().addAll(children);
}
} treeItem.forEach(x -> System.out.println(x)); }
}
TreeItem(id=1, parentId=0, name=星宇, children=[TreeItem(id=2, parentId=1, name=金3, children=[TreeItem(id=3, parentId=2, name=金3/1, children=[TreeItem(id=5, parentId=3, name=田七, children=null)]), TreeItem(id=4, parentId=2, name=金3/2, children=[TreeItem(id=6, parentId=4, name=牛八, children=null)]), TreeItem(id=3, parentId=2, name=王五, children=null), TreeItem(id=4, parentId=2, name=赵六, children=null)]), TreeItem(id=5, parentId=1, name=总1, children=[TreeItem(id=6, parentId=5, name=总1/2, children=[TreeItem(id=2, parentId=6, name=李四, children=null)]), TreeItem(id=1, parentId=5, name=张三, children=null)])])

上面是我打印出来的数据,其实你们只要返回treeItem这个集合就可以了,这个数据结构符合Cascader级联选择器。

ElementUI组件Cascader级联选择器数据后台处理的更多相关文章

  1. ElementUI 之 Cascader 级联选择器指定 value label

    ElementUI 的 Cascader 级联选择器个人觉得很好用,但是对 :options="options" 里的数据格式是有特定要求的:input 框显示的值是 option ...

  2. element-ui Cascader 级联选择器示例

    <html> <head>test</head> <style> @import url("http://unpkg.com/element- ...

  3. element UI Cascader 级联选择器 编辑 修改 数组 路径 问题(转载)

    来源:https://segmentfault.com/a/1190000014827485 element UI的Cascader级联选择器编辑时 vue.js element-ui 2 eleme ...

  4. vue+element ui项目总结点(一)select、Cascader级联选择器、encodeURI、decodeURI转码解码、mockjs用法、路由懒加载三种方式

    不多说上代码: <template> <div class="hello"> <h1>{{ msg }}</h1> <p> ...

  5. Cascader 级联选择器

    当一个数据集合有清晰的层级结构时,可通过级联选择器逐级查看并选择. 基础用法 有两种触发子菜单的方式 只需为 Cascader 的options属性指定选项数组即可渲染出一个级联选择器. 通过expa ...

  6. element 的 Cascader 级联选择器设定默认值

    Cascader 级联选择器 发现在很多的CRM管理系统里面,都有不少页面是用到这种级联选择器的,确实,功能很实用, 不过要设置默认值则应该让不少人头痛,因为你选择的时候 @change 事件的参数就 ...

  7. vue+element级联选择器对接后台数据

    1.后台接口返回的数据肯定要和级联选择器的数据一致,所以我专门弄个model存放返回的值,如下:/** * @Auther: GGDong * @Date: 2019/4/3 10:30 */@Get ...

  8. Element-ui Cascader 级联选择器 同时返回 value 和 label

    给 cascader 组件赋值一个别名 ref="cascaderAddr" <el-form-item label="部门" prop="or ...

  9. 【前端】Element-UI 省市县级联选择器 JSON数据

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/element_cascader.html 不想自己处理的就直接下载吧 http://shamoyuu.bj.bce ...

随机推荐

  1. centos7 离线安装docker-ce

    测试的时候,在VM中安装了一个minimal安装的centos7.因为发现在已经安装好环境的系统中,执行下面,并不会下载依赖的rpm.#下载docker-ce和其需要的依赖rpm yum instal ...

  2. Spring AOP统一异常处理

    1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  3. igraph Tutorial

      igraph Tutorial¶   参考http://www.cs.rhul.ac.uk/home/tamas/development/igraph/tutorial/tutorial.html ...

  4. pxe基于虚拟机的自启动

    环境系统:centos6.4 min版 虚拟机实现:提供的服务器ip为192.168.0.105,桥接 安装dhcp服务: yum -y install dhcp 配置dhcp服务,使能够成功启动: ...

  5. 20145303 实验二 Java面向对象程序设计

    实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验要求 1.没有Lin ...

  6. 20145324 《Java程序设计》第7周学习总结

    20145324 <Java程序设计>第7周学习总结 教材学习内容总结 第十一章 1.静态sleep()用于流程暂停指定时间,单位是毫秒 2.一个Thread被标记为Daemon线程,在所 ...

  7. 20145328 《Java程序设计》实验一实验报告

    20145328 <Java程序设计>实验一实验报告 实验名称 Java开发环境的熟悉(Windows + IDEA) 实验内容 使用JDK编译.运行简单的Java程序: 使用IDEA 编 ...

  8. apache解压版安装服务

    解压版也就是绿色版 到apache/bin目录 然后运行下面命令 httpd.exe -k install -n "Apache24" 如果要卸载服务的话,就是下面这个命令 htt ...

  9. P4Lang Repository: Switch

    Github Switch Introduction Structure: +-----+ +-----+ +-----+ +-----+ |App a| |App j| |App n| |App z ...

  10. linux文件的一些特殊权限

    一些特殊权限 虽然我们通常看到一个八进制的权限掩码用三位数字来表示,但是从技术层面 上来讲,用四位数字来表示它更确切些. 为什么呢?因为,除了读取,写入,和执 行权限之外,还有其它的,较少用到的权限设 ...