jstree java_Java递归获取部门树 返回jstree数据

@GetMapping("/getDept")

@ResponseBody

public Tree getDept(String deptId){

Tree deptNode = getDeptNode(deptId);

if (deptNode == null){

return null;

}

List> childNode = getChildNode(deptId);

for (Tree child:childNode) {

Tree node = getDept(child.getId());

deptNode.getChildren().add(node);

deptNode.setChildren(true);

}

return deptNode;

}

@Autowired

private DeptDao sysDeptMapper;

private Tree getDeptNode(String deptId){

Map query = new HashMap<>();

query.put("deptId",deptId);

List deptList =sysDeptMapper.list(query);

if (deptList.size() == 1){

DeptDO sysDept = deptList.get(0);

Tree tree = getDeptTree(sysDept);

return tree;

}else{

return null;

}

}

private List> getChildNode(String deptId){

List> trees = new ArrayList<>();

Map query = new HashMap<>();

query.put("parentId",deptId);

List sysDepts = sysDeptMapper.list(query);

for (DeptDO sysDept : sysDepts) {

Tree tree = getDeptTree(sysDept);

trees.add(tree);

}

return trees;

}

private Tree getDeptTree(DeptDO sysDept){

Tree tree = new Tree<>();

tree.setId(sysDept.getDeptId().toString());

tree.setParentId(sysDept.getParentId().toString());

tree.setText(sysDept.getName());

Map state = new HashMap<>(16);

state.put("opened", true);

tree.setState(state);

if (!("0".equals(tree.getParentId()))){

tree.setHasParent(true);

}

return tree;

}

//树结构

public class Tree {

private String id;//节点ID

private String text;//显示节点文本

private Map state;//节点状态,open closed

private boolean checked = false;//节点是否被选中 true false

private Map attributes;//节点属性

private List> children = new ArrayList>();//节点的子节点

private String parentId;//父ID

private boolean hasParent = false;//是否有父节点

private boolean hasChildren = false;//是否有子节点

//省略getter setter方法

}

//第2种实现

@Override

public List getTree() {

List trees = new ArrayList();

List list = deptDao.list(new HashMap<>());

for (DeptDO d : list) {

if (d.getParentid() == null) {

Tree tree = new Tree();

tree.setId(d.getDeptid().toString());

tree.setText(d.getDeptname());

Map state = new HashMap();

state.put("opened", true);

tree.setState(state);

List childTree = getChild(d.getDeptid());

if (childTree.size() > 0) {

tree.setChildren(childTree);

}

trees.add(tree);

}

}

return trees;

}

private List getChild(Long parentid) {

List trees = new ArrayList();

Map map = new HashMap();

map.put("parentid", parentid);

List childList = deptDao.list(map);

for (DeptDO d : childList) {

Tree tree = new Tree();

tree.setId(d.getDeptid().toString());

tree.setText(d.getDeptname());

List childTree = getChild(d.getDeptid());

if (childTree.size() > 0) {

tree.setChildren(childTree);

}

trees.add(tree);

}

return trees;

}

//jstree json

public class Tree {

private String id;

private String text;

private String icon;

private Map state;

private List children;

//省略getter setter方法

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值