element-uiツリーコントロールのバックグラウンドから返されるデータ+組織ツリーを生成するツールクラス


プロジェクトを開発する時、フォームの中で参加者を選ぶ必要があります。部門によって違う人を選ぶことができます。element-uiの中にツリーコントロールがあります。このような状況を満たすことができます。バックグランドパッケージのデータを記録してください。
    パッケージ形式:

    データフォーマットを返します。

    受信データのpojoクラス:

2018年4月12日修正
    以上のデータ構造はプロジェクトの使用に満足できると思っていましたが、間違っていました。当時のデータベースには10本未満のデータしかありませんでした。組織構造はとても単一で、その後同僚がデータを導入しました。
    ネット上にはたくさんの大牛の書いた方法があります。再帰的、反復的な方法があります。たくさんの大牛の書いた方法を見てから、思想が実現されました。
    1.すべてのデータを検索して一つのmapセットに入れると、key値は自分のデータのidであり、value値はデータ自体である。利点は、データベースを検索するだけで、リソースの浪費を避けることです。
    2.調べたデータを父のIDがあるかどうかを判断し、父のIDがないものをリストセットに保存する(トップレベルのデータ)
    3.データをforループし、自分のデータの親IDからmapセットのデータを取得します。例:map.get(entityList.get PartentId)は、これまでに検索したデータを一つ一つmapセットに入れていますが、実はこのステップは、自分がすべてのデータの中に父親がいるかどうかを判断することに相当します。
    4.父親がいれば、父親が子供がいるかどうかを判断して、直接に加えて、ない場合は先に父親にスペースを割り当てて、家があったらあなたは住めます。
    この考えに沿って、以下はコード実現です。
    データのインターフェースクラス:
    自分の状況によって、インターフェースの発給を変更することができます。このインターフェース類はいくつかの属性のget、set方法を実現しただけです。このインターフェース類を書くのは主に以下のツール類のためです。汎型Tのタイプを定義します。

/**
 *          
 * @author YangWenHui
 * @date 2018 4 11
 * @param <T>
 */
public interface dataTree<T> {
	
    public String getId();
	
  public String getParentId();
  
  public void setChildList(List<T> childList);
  
  public List<T> getChildList();
}
ツールクラス:
    以下の汎型Tはデータを受信するエンティティ類で、上のデータインターフェース類を継承します。

/**
 *        
 * @author YangWenHui
 *
 */
public class TreeUtil {
	
	//      
	public static <T extends dataTree<T>> List<T> getTreeList(String topId,List<T> entityList){
		List<T> resultList = new ArrayList<>();//       
		
		Map<Object, T> treeMap = new HashMap<>();
		T itemTree;
		
		for(int i=0;i<entityList.size()&&!entityList.isEmpty();i++) {
			itemTree = entityList.get(i);
			treeMap.put(itemTree.getId(),itemTree);//        map  ,id key
			if(topId.equals(itemTree.getParentId()) || itemTree.getParentId() == null) {//          
				resultList.add(itemTree);
			}
		}
		
		//    ,         childen   
		for(int i = 0; i< entityList.size()&&!entityList.isEmpty();i++) {
			itemTree = entityList.get(i);
			T data = treeMap.get(itemTree.getParentId());// map       
			if(data != null) {//       
				if(data.getChildList() == null) {
					data.setChildList(new ArrayList<>());
				}
				data.getChildList().add(itemTree);//          childList  
				treeMap.put(itemTree.getParentId(), data);//        map  
			}
		}
		return resultList;
	}
}
エンティティクラス:
    データを受信するエンティティ類は、get、set方法を書かなくてもいいです。@Dataという注釈は、get、set方法を書いてくれました。この注釈は時間を節約してくれます。

/**
 *          
 * @author YangWenHui
 *
 */
@Data
public class OtlDeptMenu implements dataTree<OtlDeptMenu>{
	
	
	private String id;
	
	private String parentId;
	
	private String name;
	
	private List<OtlDeptMenu> childList;
}
以上を書いてから使えます。
具体的な使用:
    工具類の中で自動的に階層関係を作ってくれました。

	/**
	 *           
	 * @return
	 */
	public List<OtlDeptMenu> getparticipants(){
		List<OtlDeptMenu> data = otlMeetPeopleMapper.getDeptName();//             
		List<OtlDeptMenu> list = new ArrayList<>();//       ,           。
		List<OtlDeptMenu> tree = TreeUtil.getTreeList("0", data);//     ,             id,        
		OtlDeptMenu result = new OtlDeptMenu();//                   。     ,     
		result.setId("0");
		result.setName("       ");
		result.setChildList(tree);
		list.add(result);//     list ,  element-ui               
		return list;
	}
返したデータ構造:
下にはまだたくさんのデータがあります。スクリーンショットは一部だけです。

一日の時間を研究しました。スピードが遅くて、経験を重ねました。若いですから、これからも頑張ってください。
ここで、element-uiツリーコントロールのバックグラウンドから戻ってきたデータ+組織ツリーを生成するツール類についての記事を紹介します。もっと関連するelementツリーの内容は以前の文章を検索してください。