package com.vci.starter.web.pagemodel;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 树型数据,easyui,extjs,layui通用
|
* @author weidy
|
*
|
*/
|
public class Tree implements java.io.Serializable{
|
|
/**
|
* 禁止修改这个值
|
* @serial 序列化值
|
*/
|
private static final long serialVersionUID = 6886695271635257882L;
|
|
/**
|
* 构造函数
|
*/
|
public Tree(){
|
|
}
|
|
/**
|
* 构造函数
|
* @param oid 主键
|
* @param text 树节点文本
|
*/
|
public Tree(String oid, String text){
|
setOid(oid);
|
setText(text);
|
}
|
|
/**
|
* 构造函数
|
* @param oid 主键
|
* @param text 树节点文本
|
*/
|
public Tree(String oid, String text,Object o){
|
setOid(oid);
|
setText(text);
|
setData(o);
|
}
|
|
|
/**
|
* 主键
|
*/
|
private String oid;
|
/**
|
* 显示文本
|
*/
|
private String text;
|
/**
|
* 编号
|
*/
|
private String id;
|
/**
|
* 是否叶子
|
*/
|
private boolean leaf = false;
|
|
/**
|
* 是否显示复选框
|
*/
|
private boolean showCheckbox = false;
|
/**
|
* 是否默认选中
|
*/
|
private boolean checked = false;
|
|
/**
|
* 子节点
|
*/
|
private List<Tree> children = new ArrayList<Tree>();
|
/**
|
* 层级
|
*/
|
private int level;
|
/**
|
* 图标
|
*/
|
private String icon;
|
/**
|
* 图标样式
|
*/
|
private String iconCls;
|
/**
|
* 上级节点
|
*/
|
private String parentId;
|
|
/**
|
* 上级节点的名称
|
*/
|
private String parentName;
|
|
/**
|
* 上级节点的业务类型
|
*/
|
private String parentBtmName;
|
/**
|
* 是否展开
|
*/
|
private boolean expanded = false;
|
|
/**
|
* 链接
|
*/
|
private String href;//layui和extjs使用href,easyui使用url,统一href
|
|
/**
|
* 排序索引
|
*/
|
private String index;//排序索引
|
/***
|
* 当前数据对象
|
*/
|
private Object data;
|
|
/**
|
* 其他的属性
|
*/
|
private Map<String,String> attributes = new HashMap<String, String>();//使用平台的话,所有的属性都是String的
|
|
/**
|
* 获取主键
|
* @return 主键的值
|
*/
|
public String getOid() {
|
return oid;
|
}
|
|
/**
|
* 设置主键
|
* @param oid 主键的值
|
*/
|
public void setOid(String oid) {
|
this.oid = oid;
|
}
|
|
/**
|
* 获取树节点文本
|
* @return 树节点文本
|
*/
|
public String getText() {
|
return text;
|
}
|
|
/**
|
* 设置树节点文本
|
* @param text 树节点文本
|
*/
|
public void setText(String text) {
|
this.text = text;
|
}
|
|
/**
|
* 设置编号
|
* @param id
|
*/
|
public void setId(String id) {
|
this.id = id;
|
}
|
|
/**
|
* 获取编号
|
*/
|
public String getId() {
|
return id;
|
}
|
|
/**
|
* 是否叶子节点
|
* @return true 表示叶子节点
|
*/
|
public boolean isLeaf() {
|
return leaf;
|
}
|
|
/**
|
* 设置叶子节点
|
* @param leaf 是否叶子节点
|
*/
|
public void setLeaf(boolean leaf) {
|
this.leaf = leaf;
|
}
|
|
/**
|
* 是否显示复选框
|
* @return true表示显示
|
*/
|
public boolean isShowCheckbox() {
|
return showCheckbox;
|
}
|
|
/**
|
* 设置是否显示复选框
|
* @param showCheckbox 是否显示复选框
|
*/
|
public void setShowCheckbox(boolean showCheckbox) {
|
this.showCheckbox = showCheckbox;
|
}
|
|
/**
|
* 是否自动勾选上
|
* @return true表示需要自动勾选
|
*/
|
public boolean isChecked() {
|
return checked;
|
}
|
|
/**
|
* 设置是否勾选
|
* @param checked 是否自动勾选
|
*/
|
public void setChecked(boolean checked) {
|
this.checked = checked;
|
}
|
|
/**
|
* 获取子节点
|
* @return 子节点列表
|
*/
|
public List<Tree> getChildren() {
|
return children;
|
}
|
|
/**
|
* 设置子节点
|
* @param children 子节点列表
|
*/
|
public void setChildren(List<Tree> children) {
|
this.children = children;
|
}
|
|
/**
|
* 获取图标
|
* @return 图标
|
*/
|
public String getIcon() {
|
return icon;
|
}
|
|
/**
|
* 设置图标
|
* @param icon 图标
|
*/
|
public void setIcon(String icon) {
|
this.icon = icon;
|
}
|
|
/**
|
* 获取图标的显示css类
|
* @return css类的名称
|
*/
|
public String getIconCls() {
|
return iconCls;
|
}
|
|
/**
|
* 设置图标的显示css类
|
* @param iconCls css类的名称
|
*/
|
public void setIconCls(String iconCls) {
|
this.iconCls = iconCls;
|
}
|
|
/**
|
* 获取上级主键
|
* @return 上级节点的oid
|
*/
|
public String getParentId() {
|
return parentId;
|
}
|
|
/**
|
* 设置上级主键
|
* @param parentId 上级节点的oid
|
*/
|
public void setParentId(String parentId) {
|
this.parentId = parentId;
|
}
|
|
/**
|
* 是否自动展开
|
* @return true表示自动展开
|
*/
|
public boolean isExpanded() {
|
return expanded;
|
}
|
|
/**
|
* 设置是否自动展开
|
* @param expanded 是否自动展开
|
*/
|
public void setExpanded(boolean expanded) {
|
this.expanded = expanded;
|
}
|
|
/**
|
* 获取链接地址
|
* @return 链接地址
|
*/
|
public String getHref() {
|
return href;
|
}
|
|
/**
|
* 设置链接地址
|
* @param href 链接地址
|
*/
|
public void setHref(String href) {
|
this.href = href;
|
}
|
|
/**
|
* 获取排序号
|
* @return 排序号
|
*/
|
public String getIndex() {
|
return index;
|
}
|
|
/**
|
* 设置排序号
|
* @param index 排序号
|
*/
|
public void setIndex(String index) {
|
this.index = index;
|
}
|
|
/**
|
* 获取树节点指代的业务数据的所有属性映射
|
* @return key表示属性的名称,value表示属性的值
|
*/
|
public Map<String, String> getAttributes() {
|
return attributes;
|
}
|
|
/**
|
* 设置树节点指代的业务数据的所有属性映射
|
* @param attributes key表示属性的名称,value表示属性的值
|
*/
|
public void setAttributes(Map<String, String> attributes) {
|
this.attributes = attributes;
|
}
|
|
/**
|
* 获取上级的节点的名称
|
* @return 上级的名称
|
*/
|
public String getParentName() {
|
return parentName;
|
}
|
|
/**
|
* 设置上级节点的名称
|
* @param parentName 上级的名称
|
*/
|
public void setParentName(String parentName) {
|
this.parentName = parentName;
|
}
|
|
public String getParentBtmName() {
|
return parentBtmName;
|
}
|
|
public void setParentBtmName(String parentBtmName) {
|
this.parentBtmName = parentBtmName;
|
}
|
|
/**
|
* 利用递归将树转换为上下级关系
|
* @param rootTree 顶层节点
|
* @param children 子节点
|
* @return 含有上下级关系的树
|
*/
|
public static List<Tree> getChildList(List<Tree> rootTree, List<Tree> children){
|
if(rootTree == null ||rootTree.size() == 0){
|
if(children !=null && children.size()>0){
|
rootTree = children.subList(0, children.size());
|
}else{
|
return null;
|
}
|
}
|
Tree bt = new Tree();
|
bt.findChild(rootTree, children);
|
return rootTree;
|
}
|
|
/**
|
* 查询树的下级
|
* @param treenode 当前节点
|
* @param children 其他的节点
|
*/
|
public void findChild(List<Tree> treenode, List<Tree> children){
|
for (Tree node : treenode) {
|
for (Tree childnode : children) {
|
if (node.getOid().equalsIgnoreCase(childnode.getParentId())) {
|
childnode.setParentName(node.getText());
|
if(StringUtils.isBlank(childnode.getParentBtmName())){
|
childnode.setParentBtmName(node.getAttributes().getOrDefault("btmname",""));
|
}
|
node.getChildren().add(childnode);
|
}
|
}
|
if (node.getChildren().size()>0) {
|
findChild(node.getChildren(), children);
|
node.setLeaf(false);
|
}else {
|
node.setLeaf(true);
|
|
}
|
this.getChildren().add(node);
|
}
|
}
|
|
|
public Object getData() {
|
return data;
|
}
|
|
public void setData(Object data) {
|
this.data = data;
|
}
|
|
public int getLevel() {
|
return level;
|
}
|
|
public void setLevel(int level) {
|
this.level = level;
|
}
|
|
@Override
|
public String toString() {
|
return "Tree{" +
|
"oid='" + oid + '\'' +
|
", text='" + text + '\'' +
|
", leaf=" + leaf +
|
", showCheckbox=" + showCheckbox +
|
", checked=" + checked +
|
", children=" + children +
|
", level=" + level +
|
", icon='" + icon + '\'' +
|
", iconCls='" + iconCls + '\'' +
|
", parentId='" + parentId + '\'' +
|
", parentName='" + parentName + '\'' +
|
", parentBtmName='" + parentBtmName + '\'' +
|
", expanded=" + expanded +
|
", href='" + href + '\'' +
|
", index='" + index + '\'' +
|
", data=" + data +
|
", attributes=" + attributes +
|
'}';
|
}
|
}
|