Отображать изображение на каждом узле в древовидной структуре в углах - PullRequest
0 голосов
/ 23 апреля 2019

Я могу отображать данные из базы данных в древовидной структуре, используя свойство echart, но теперь мне нужно динамически отображать изображение на каждом узле дерева из базы данных.

В таблицах есть дочерние и родительские отношенияизображение хранится в базе данных.Я пытаюсь просмотреть данные в соответствии с родительскими дочерними данными, но мне не удалось это сделать.

Код загрузки Java Spring

@GetMapping("treeBuild2")

public List < UserParentId > tree() {

    List < UserParentId > tree = new ArrayList < > ();
    try {
        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://192.168.1.30:3306/db_mlm", "root", "root");
        Statement stmt = con.createStatement();

        String call = ("{call gettree(1)}");
        CallableStatement stmt1 = con.prepareCall(call);
        stmt1.execute();
        ResultSet rs = stmt1.getResultSet();
        System.out.println("call->" + call);

        while (rs.next()) {

            UserParentId up = new UserParentId();
            up.setId(rs.getInt("id"));
            up.setParent_id(rs.getInt("parent_id1"));
            up.setName(rs.getString("FirstName"));
            up.setLvl(rs.getInt("lvl"));

            tree.add(up);
        }

        //  gettree method

        @GetMapping("tree")
        public List < client > getTree() {

            List < client > myList = new ArrayList < > ();
            try {
                Class.forName("com.mysql.cj.jdbc.Driver");
                Connection con = DriverManager.getConnection("jdbc:mysql://192.168.2.15:3306/sonoo", "root", "root");
                Statement stmt = con.createStatement();
                ResultSet rs = stmt.executeQuery("select * from Category");
                while (rs.next()) {

                    client c = new client();
                    c.setTreeId(rs.getInt(1));
                    c.setTreeName(rs.getString(2));
                    c.setPerentId(rs.getInt(3));
                    myList.add(c);

                    System.out.println(rs.getInt(1));
                    System.out.println(rs.getString(2));
                }
                con.close();
            } catch (Exception e) {
                System.out.println(e);
            }
            System.out.println(myList);

            for (int i = 1; i <= myList.size(); i++) {
                System.out.println();
            }

            return myList;
        }

        con.close();
    } catch (Exception e) {
        System.out.println(e);
    }

    System.out.println(tree.toString());
    return tree;
}

Я попытался использовать загрузку Spring в бэкэнде, связанном с базой данных MYSQL.

Угловой код внешнего интерфейса.

 this._httpClient.get(this.baseurl+"treeBuild2").subscribe(
            (res:any) => {  
            if(res){   

                this.list = res;
                console.log(res);

                this.r = this.convert(this.list);
                this.jsonArray = JSON.parse(JSON.stringify(this.r));
                this.str = JSON.stringify(this.r);
                console.log(this.jsonArray);
                })

//called convert function on data
convert(array):any{
    var map = {};
    for(var i = 0; i < array.length; i++){

        var obj = array[i];
        obj.children= [];

        map[obj.id] = obj;

        var parent = obj.parent_id || '-';
        if(!map[parent]){

            map[parent] = {
                children: []
            };
        }
        map[parent].children.push(obj);
    }
    return map['-'].children;

}
...