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