如何利用代码构建行政组织或者业务单元的组织树原创
金蝶云社区-丨Nick丨
丨Nick丨
8人赞赏了该文章 2,083次浏览 未经作者许可,禁止转载编辑于2022年04月16日 09:46:51

关键词:树形控件、组织接口

一、需求

代码构建行政组织或者业务单元的组织树

二、思路与方案

平台有提供接口,我们在此基础上写一些代码实现

原理就是获取根节点后再依次获取对应节点下面的子节点

这里我用的递归实现,不停寻找父节点下面的子节点,最终获取到完整树

image.png

image.png

三、实现过程

在页面添加树形控件即可标识:kdec_treeviewap

image.png

具体实现代码:

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;
	}

四、效果图

image.png

我们去到业务单元页面查看一下我们的构建是否正确

image.png

可以看到是没问题的


end~

五、开发环境版本

4.0及以上

六、注意事项

布局调整

递归生成树

七、参考资料

开发平台

学习成长中心



赞 8