如何利用代码构建行政组织或者业务单元的组织树原创
8人赞赏了该文章
2,083次浏览
编辑于2022年04月16日 09:46:51
关键词:树形控件、组织接口
一、需求
代码构建行政组织或者业务单元的组织树
二、思路与方案
平台有提供接口,我们在此基础上写一些代码实现
原理就是获取根节点后再依次获取对应节点下面的子节点
这里我用的递归实现,不停寻找父节点下面的子节点,最终获取到完整树
三、实现过程
在页面添加树形控件即可标识:kdec_treeviewap
具体实现代码:
afterCreateNewData中调用方法即可
@Override public void afterCreateNewData(EventObject e) { super.afterCreateNewData(e); this.buildTreeNode(); } /** * 构建树 */ private void buildTreeNode() { OrgTreeParam param = new OrgTreeParam(); param.setOrgViewNumber(OrgViewType.OrgUnit); TreeNode rootNode = OrgUnitServiceHelper.getTreeRootNodeById(param); TreeView tv1 = this.getView().getControl("kdec_treeviewap"); getTreeChildren(rootNode.getId(), rootNode); tv1.addNode(rootNode); } /** * 递归获取子节点 * * @param parentId * @param rootNode * @return */ private List<TreeNode> getTreeChildren(String parentId, TreeNode rootNode) { OrgTreeParam param = new OrgTreeParam(); param.setOrgViewNumber(OrgViewType.OrgUnit); param.setId(Long.valueOf(parentId)); List<TreeNode> rootInfoTree = OrgUnitServiceHelper.getTreeChildren(param); if (rootNode.getId().equals(parentId)) { rootNode.addChildren(rootInfoTree); } if (rootInfoTree.size() > 0) { for (TreeNode treeNode : rootInfoTree) { List<TreeNode> children = getTreeChildren(treeNode.getId(), rootNode); if (children.size() > 0) { treeNode.addChildren(children); } } } return rootInfoTree; }
四、效果图
我们去到业务单元页面查看一下我们的构建是否正确
可以看到是没问题的
end~
五、开发环境版本
4.0及以上
六、注意事项
布局调整
递归生成树
七、参考资料
推荐阅读