|  |  | 
 |  |  |     @Override | 
 |  |  |     public List<HeLibraryAssortVO> selectHeLibraryAssortList(HeLibraryAssort heLibraryAssort) { | 
 |  |  |         List<HeLibraryAssort> heLibraryAssorts = heLibraryAssortMapper.selectHeLibraryAssortList(heLibraryAssort); | 
 |  |  |         //将pid为空的,过滤掉 | 
 |  |  |         List<HeLibraryAssort> heLibraryAssortList2 = new ArrayList<>(); | 
 |  |  |         for (HeLibraryAssort heLibraryAssort1 : heLibraryAssorts) { | 
 |  |  | //            if (heLibraryAssort1.getPid() != null) { | 
 |  |  |                 heLibraryAssortList2.add(heLibraryAssort1); | 
 |  |  | //            } | 
 |  |  |         List<HeLibraryAssortVO> heLibraryAssortVOS = DtoConversionUtils.sourceToTarget(heLibraryAssorts, HeLibraryAssortVO.class); | 
 |  |  |  | 
 |  |  |         List<HeLibraryAssortVO> rootList = new ArrayList<>(); | 
 |  |  |         Map<Long, HeLibraryAssortVO> categoryMap = new HashMap<>(); | 
 |  |  |  | 
 |  |  |         // 建立id->对象的映射 | 
 |  |  |         for (HeLibraryAssortVO category : heLibraryAssortVOS) { | 
 |  |  |             categoryMap.put(category.getId(), category); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         List<HeLibraryAssortVO> heLibraryAssortVOS = DtoConversionUtils.sourceToTarget(heLibraryAssortList2, HeLibraryAssortVO.class); | 
 |  |  |         //遍历查出来的数据,通过 id=pid 获取他们的子数据 | 
 |  |  |         List<HeLibraryAssortVO> heLibraryAssortVOArrayList = new ArrayList<>(); | 
 |  |  |         for (HeLibraryAssortVO heLibraryAssortVO : heLibraryAssortVOS) { | 
 |  |  | //            if (heLibraryAssortVO.getPid() != null) { | 
 |  |  | //                continue; | 
 |  |  | //            } | 
 |  |  |             HeLibraryAssort heLibraryAssort1 = new HeLibraryAssort(); | 
 |  |  |             heLibraryAssort1.setPid(heLibraryAssortVO.getId()); | 
 |  |  |             List<HeLibraryAssort> heLibraryAssortList = heLibraryAssortMapper.selectHeLibraryAssortList(heLibraryAssort1); | 
 |  |  |  | 
 |  |  |             if (!Collections.isEmpty(heLibraryAssortList)) { | 
 |  |  |                 heLibraryAssortVO.setHeLibraryAssortList(heLibraryAssortList); | 
 |  |  |         for (HeLibraryAssortVO category : heLibraryAssortVOS) { | 
 |  |  |             if (category.getPid() == null || category.getPid() == -1) { | 
 |  |  |                 // 顶层节点 | 
 |  |  |                 rootList.add(category); | 
 |  |  |             } else { | 
 |  |  |                 // 找到父节点,并添加到其子节点列表 | 
 |  |  |                 HeLibraryAssortVO parent = categoryMap.get(category.getPid()); | 
 |  |  |                 if (parent != null) { | 
 |  |  |                     HeLibraryAssort sc = DtoConversionUtils.sourceToTarget(category, HeLibraryAssort.class); | 
 |  |  |                     parent.getHeLibraryAssortList().add(sc); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             heLibraryAssortVOArrayList.add(heLibraryAssortVO); | 
 |  |  |         } | 
 |  |  |         return heLibraryAssortVOArrayList; | 
 |  |  |         return rootList; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** |