• 菜单树数据形成


    String sql="select * from STS_MALFUNC_SOLUTION s start with s.step_id=? connect by prior s.step_id = s.step_dept_id order by s.step_type Asc";

    这是查询当前节点( s.step_id=? )的所有子孙节点(包含当前节点),并按照升序排序。

    //菜单树的数据结构
    public class GoJsData {
        private Integer id;
        private String  text;
        private Integer size;
        private String color;
        private String weight;
        private List<GoJsData> causes = new ArrayList<GoJsData>(); // 子节点集合
        
        public GoJsData(Integer id, String text, Integer size, String color, String weight, List<GoJsData> causes) {
            super();
            this.id = id;
            this.text = text;
            this.size = size;
            this.color = color;
            this.weight = weight;
            this.causes = causes;
        }
        
        
        public GoJsData() {
            super();
        }
    }

    具体的操作,如下:

    @Test
        public void content() throws IOException {
            // 1 . 查询数据      STEP_ID:当前节点ID ;STEP_DEPT_ID:父节点ID
            String sql="select * from STS_MALFUNC_SOLUTION s start with s.step_id=? connect by prior s.step_id = s.step_dept_id order by s.step_type Asc";
            List<Map<String,Object>> list= baseDao.queryForList(sql, new Object[] {"11000"});
            
            // 2 .  剥离 当前节点,创建根数据   
            GoJsData g=null ;        
            for (Map<String, Object> map : list) {
                String pstepId = String.valueOf(map.get("STEP_DEPT_ID"));
                if(Integer.valueOf(pstepId)==1) {
                    g = new GoJsData( Integer.valueOf( String.valueOf(map.get("STEP_ID")) ),  
                            String.valueOf(map.get("STEP_CONTENT")),  18, "red",  "Bold",  new ArrayList<GoJsData>());
                    list.remove(map);
                    break;
                }
            }
            //3 . 递归形成最终树数据
            dd(list,g);
            System.out.println(JSONObject.toJSONString(g));
        }
        // 递归操作
        public GoJsData dd(List<Map<String,Object>> list,GoJsData g) {    
            for (Map<String, Object> map : list) {
                int pstepId = Integer.valueOf(String.valueOf(map.get("STEP_DEPT_ID")));
                System.out.println(pstepId);
                if(g.getId() == pstepId) {
                    GoJsData gj = new GoJsData( Integer.valueOf( String.valueOf(map.get("STEP_ID")) ),  
                            String.valueOf(map.get("STEP_CONTENT")),  14, "red",  "Bold",  new ArrayList<GoJsData>());
                    g.getCauses().add(gj);                    
                    dd(list,gj);
                }
            }        
            return g;    
        }

    后端查询所有数据,前端拼接树结构

    function createMenu(menu,pre){
        let str = ``;
        for( let obj of menu){ 
            if(obj.UP_MENU_ID==pre.MENU_ID) {
                if(obj.IS_LEAF ==1){
                str=str+`<li> <a href="#">
                            <i class="menu-icon glyphicon glyphicon-home"></i>
                            <span class="menu-text"> ${obj.MENU_NAME} </span>
                         </a> </li> `;
                }else{
                    str=str+`<li> <a href="#">
                        <i class="menu-icon fa fa-desktop"></i>
                        <span class="menu-text"> ${obj.MENU_NAME} </span>
                        <i class="menu-expand"></i>
                        </a>  <ul class="submenu"> ${ createMenu(menu,obj)}</ul> </li> `;
           }
        }
      }
      return str;
    }
    MENU_ID 与 UP_MENU_ID : 节点ID 与 此节点的上级节点ID

     前端拼接树

    function treeData(data,pre){
        let trees = [];
        for(let obj of data){
            if(obj.PID == pre.ID){
                trees.push( { text:obj.NAME,nodes:treeData(data,obj) } );
            }
        }
        return trees;
    }
  • 相关阅读:
    多姿多彩的线程
    字典操作
    字符串语法
    购物车
    列表常用语法
    整数划分问题
    计算N的阶层
    判断是否是素数
    快速排序
    冒泡排序
  • 原文地址:https://www.cnblogs.com/wdp1990/p/11364379.html
Copyright © 2020-2023  润新知