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のタイプを定義します。
以下の汎型Tはデータを受信するエンティティ類で、上のデータインターフェース類を継承します。
データを受信するエンティティ類は、get、set方法を書かなくてもいいです。@Dataという注釈は、get、set方法を書いてくれました。この注釈は時間を節約してくれます。
具体的な使用:
工具類の中で自動的に階層関係を作ってくれました。
下にはまだたくさんのデータがあります。スクリーンショットは一部だけです。
一日の時間を研究しました。スピードが遅くて、経験を重ねました。若いですから、これからも頑張ってください。
ここで、element-uiツリーコントロールのバックグラウンドから戻ってきたデータ+組織ツリーを生成するツール類についての記事を紹介します。もっと関連するelementツリーの内容は以前の文章を検索してください。
パッケージ形式:
データフォーマットを返します。
受信データの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ツリーの内容は以前の文章を検索してください。