• 调用 递归方法


    数据表是这种,具有父子级关系
     
    1、最顶层调用处
    List<ReMap> deviceRMLt = new ArrayList<>();
     
    deviceRMLt = DeviceModel.getRecursionDeviceLt(1,null,pmap);
    dataMap.put(Ckey.Pc.LIST, deviceRMLt);
     
    2、注意,调用递归方法的时候,自身的id,作为父id;tier+1。
        /**
         * 递归获取设备
         * 
         * @param Integer tier 层级,例如1,2,3
         * @param Long fid 父级id
         * @param ReMap pmap 其他请求参数
         * @return List<ReMap> 
         */
        public static List<ReMap> getRecursionDeviceLt(Integer tier,Long fid,ReMap pmap) {
            List<ReMap> resultLt = new ArrayList<>();
            DbCache dbCache = DbCache.instance();
            
            pmap.put(Ckey.Pc.TIER, tier);
            pmap.put(Ckey.Pc.FDID, fid);
            List<Device> list = dbCache.selectList("deviceList", pmap);
            if (list != null) {
                ReMap resultRM = new ReMap();
                for (Device device : list) {
                    ReMap mapItem;
                    try {
                        mapItem = MapUtil.objectToReMap(device);
                        if (mapItem == null) {
                            continue;
                        }
                        SystemDict systemDict = SysModel.getSubSystem(device.getSysid());
                        if (systemDict != null && systemDict.getFid() != null) {
                            mapItem.put(Ckey.Sc.FSYSID, systemDict.getFid());
                            mapItem.put(Ckey.Sc.SYSNAME, systemDict.getName());
                        }
                        Area area = AreaModel.getArea(device.getAid());
                        if (area != null) {
                            mapItem.put(Ckey.Sc.ANAME, area.getName());
                        }
                        Cabinet cabinet = CabinetManager.getCabinet(device.getCabinetid());
                        if (cabinet != null) {
                            mapItem.put(Ckey.Sc.CNAME, cabinet.getCname());
                        }
                        DeviceType deviceType = DeviceTypeModel.getDeviceType(device.getDevtypeid());
                        if (deviceType != null) {
                            mapItem.put(Ckey.Dv.DEVTYPENAME, deviceType.getDtname());
                        }
                        
                        //递归调用
                        List<ReMap> tmpList = getRecursionDeviceLt(tier+1,device.getId(),pmap);
                        if (tmpList != null && tmpList.size() > 0) {
                            mapItem.put(Ckey.Pc.CHILDREN, tmpList);
                        }
                        resultLt.add(mapItem);
    
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
            return resultLt;
        }
    3 返回结果

     

     
     


  • 相关阅读:
    如何去掉视频四周的黑边,使之充满整个屏幕?
    EMQX 入门实战(2)MQTT Java 客户端库使用
    Elasticsearch 入门实战(1)简介
    EMQX 入门实战(1)安装及简单使用
    浅聊Mybatis是怎么扫描并且注入到spring容器中的(源码向)
    Docker安装常用服务命令笔记
    Java中Stream相关常用总结记录
    注解和自定义注解
    集合框架ArrayList学习和总结
    不定长可重复字符组合枚举递归函数
  • 原文地址:https://www.cnblogs.com/YangBinChina/p/12658548.html
Copyright © 2020-2023  润新知