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. Winter-2-STL-C Where is the Marble? 解题报告及测试数据

    Time Limit:3000MS     Memory Limit:0KB Description Download as PDF Raju and Meena love to play with ...

  2. 关于http响应状态码

    http状态返回代码 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码. http状态返回代码 代码   说明 100   (继续) 请求者应当继续提出请求. 服务器返回此代码表示已 ...

  3. 整理一些《纸书科学计算器》的小Tips

    本文最开始是在2016年的文章 Win10应用<纸书科学计算器>更新啦! 发表之后撰写的,当时那篇文章收到了不少人点赞,应用在国内市场的日下载量也突然上涨,让我感到受宠若惊,这里要感谢Wp ...

  4. [pixhawk笔记]11-Windows下PX4代码查看

    由于项目需要做基于Simulink的PX4二次开发,在Windows下面做,所以需要在Windows下查看PX4的代码,故写该文档,记录环境安装和配置过程.按照该网页安装工具链:Windows Ins ...

  5. @Override笔记

    作用:用来保证正确重写方法,当你重写方法出错时,比如方法名误写,或者漏掉参数,编译器会提示编译错误. 使用场景:继承父类,重写父类方法:实现接口,实现接口方法. 备注:jdk1.5之允许在继承时使用, ...

  6. mysql增加远程访问

    grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

  7. 解读:MultipleOutputs类

    //MultipleOutputs类用于简化多文件输出The MultipleOutputs class simplifies writing output data to multiple outp ...

  8. nginx配置Strict Transport Security

    一个网站接受一个HTTP的请求,然后跳转到HTTPS,用户可能在开始跳转前,通过没有加密的方式和服务器对话,比如,用户输入http://zt.test.com或者直接zt.test.com.这样存在中 ...

  9. BZOJ3236: [AHOI2013]作业

    BZOJ3236: [AHOI2013]作业 题目描述 传送门 行,我知道是Please contact lydsy2012@163.com! 传送门2 题目分析 这题两问还是非常,emmmm. 首先 ...

  10. 监控控制台是否运行的bat

    @echo offrem set secs=5set srvname="TRS.Export.Scheduler.exe" echo.echo ================== ...