用递归构建组织树

/**
 * output package name
 */
package com.kingdee.eas.testunit.client;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;

import com.kingdee.bos.metadata.entity.EntityViewInfo;
import com.kingdee.bos.metadata.entity.SelectorItemCollection;
import com.kingdee.bos.metadata.entity.SelectorItemInfo;
import com.kingdee.bos.ui.face.CoreUIObject;
import com.kingdee.bos.ctrl.swing.KDTree;
import com.kingdee.bos.ctrl.swing.tree.DefaultKingdeeTreeNode;
import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
import com.kingdee.eas.basedata.org.AdminOrgUnitCollection;
import com.kingdee.eas.basedata.org.AdminOrgUnitFactory;
import com.kingdee.eas.basedata.org.AdminOrgUnitInfo;

/**
 * output class name
 */
public class CompanyOrgTreeUI extends AbstractCompanyOrgTreeUI
{
    /**
	 * 
	 */
	private static final long serialVersionUID = 1576812014546125888L;
	private static final Logger logger = CoreUIObject.getLogger(CompanyOrgTreeUI.class);
    
    /**
     * output class constructor
     */
    public CompanyOrgTreeUI() throws Exception
    {
        super();
    }

    @Override
    public void onLoad() throws Exception
    {
    	super.onLoad();
    	loadCompanyOrgTree();
    }

    private void loadCompanyOrgTree() throws Exception
    {
    	long start = System.currentTimeMillis();
    	AdminOrgUnitInfo adminOrgUnitInfo = AdminOrgUnitFactory.getRemoteInstance().getAdminOrgUnitInfo(new ObjectUuidPK("00000000-0000-0000-0000-000000000000CCE7AED4"));
    	DefaultKingdeeTreeNode root = new DefaultKingdeeTreeNode(adminOrgUnitInfo);
    	root.setCheckBoxVisible(false);
    	Map<String,List<AdminOrgUnitInfo>> adminOrgMap = getAdminOrgUnitCollection();
    	initAdminOrgTree(root,adminOrgMap);
    	KDTree tree = new KDTree(root);
    	this.kDTreeView.setTree(tree);
    	long end = System.currentTimeMillis();
    	System.out.println(end-start);
    }
    
    private void initAdminOrgTree(DefaultKingdeeTreeNode parentNode,Map<String,List<AdminOrgUnitInfo>> adminOrgMap) throws Exception
    {
    	AdminOrgUnitInfo parentAdminOrgInfo = (AdminOrgUnitInfo)parentNode.getUserObject();
    	List<AdminOrgUnitInfo> childAdminOrgList = adminOrgMap.get(parentAdminOrgInfo.getId().toString());
    	if(childAdminOrgList!=null && childAdminOrgList.size()>0)
    	{
    		for(int i=0,size=childAdminOrgList.size();i<size;i++)
    		{
    			AdminOrgUnitInfo childAdminInfo = childAdminOrgList.get(i);
    			DefaultKingdeeTreeNode childNode = new DefaultKingdeeTreeNode(childAdminInfo);
    			childNode.setCheckBoxVisible(false);
    			parentNode.add(childNode);
    			initAdminOrgTree(childNode,adminOrgMap);
    		}
    	}
    }
    
    private Map<String,List<AdminOrgUnitInfo>> getAdminOrgUnitCollection() throws Exception
    {
    	Map<String,List<AdminOrgUnitInfo>> adminOrgMap = new HashMap<String,List<AdminOrgUnitInfo>>();
    	EntityViewInfo evi = new EntityViewInfo();
    	SelectorItemCollection sic = new SelectorItemCollection();
    	sic.add(new SelectorItemInfo("id"));
    	sic.add(new SelectorItemInfo("name"));
    	sic.add(new SelectorItemInfo("parent.id"));
    	AdminOrgUnitCollection adminOrgUnitColl = AdminOrgUnitFactory.getRemoteInstance().getAdminOrgUnitCollection(evi);
    	if(adminOrgUnitColl!=null)
    	{
    		for(int i=0,size=adminOrgUnitColl.size();i<size;i++)
    		{
    			AdminOrgUnitInfo adminOrgUnitInfo = adminOrgUnitColl.get(i);
    			if(adminOrgUnitInfo.getParent()!=null && adminOrgUnitInfo.getParent().getId()!=null)
    			{
    				String parentId = adminOrgUnitInfo.getParent().getId().toString();
    				List<AdminOrgUnitInfo> adminOrgList = adminOrgMap.get(parentId);
    				if(adminOrgList==null)
    				{
    					adminOrgList = new ArrayList<AdminOrgUnitInfo>();
    					adminOrgMap.put(parentId, adminOrgList);
    				}
    				adminOrgList.add(adminOrgUnitInfo);
    			}
    		}
    	}
    	return adminOrgMap;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值