/** 将所有菜单组装成树
* @param classDTOList 数据库查询出来的所有菜单
* 菜单列表
* @return List<ClassDTO>
*/
private List<ClassDTO> assembleClassTree(List<ClassDTO> classDTOList) {
List<ClassDTO> classTreeList = null;
if(CommonUtils.listNotNull(classDTOList)){
classTreeList = new ArrayList<ClassDTO>();
for(ClassDTO classDTO1 : classDTOList){
if(classDTO1.isLevel1()){
this.setChildClass(classDTO1, classDTOList);
classTreeList.add(classDTO1);
}
}
}
return classTreeList;
}
/** 通过递归的方法组装菜单树
* @param classDTO
* @param classDTOList
* @return
*/
private void setChildClass(ClassDTO parentClassDTO, List<ClassDTO> classDTOList) {
List<ClassDTO> childClassList = parentClassDTO.getChildList();
if(childClassList == null) {
childClassList = new ArrayList<ClassDTO>();
parentClassDTO.setChildList(childClassList);
}
for(ClassDTO childClassDTO : classDTOList ){
if(parentClassDTO.getIdClass().equals(childClassDTO.getIdParentClass())){
childClassList.add(childClassDTO);
this.setChildClass(childClassDTO, classDTOList);
}
}
}
/** 通过递归的方法取得parentId下的子集合
* @param parentId 父级Id
* @param allClassTree 菜单树状 集合
* @return
*/
private List<ClassDTO> getChildClassByParentId(String parentId, List<ClassDTO> allClassTree) {
for (ClassDTO classDTO : allClassTree) {
//找到parentId, 则返回此板块下的所有子版块集合
if (classDTO.getIdClass().equals(parentId)) {
return classDTO.getChildList();
}
//否则, 继续找
else {
List<ClassDTO> childList = classDTO.getChildList();
if (CommonUtils.listNotNull(childList)) {
childList = this.getChildClassByParentId(parentId, childList);
if (childList != null) {
return childList;
}
else {
continue;
}
}
}
}
return null;
}
/**
* 给出一颗树 递归出其下所有叶子节点
* @param allTree 给出的树
* @param leafClassList 叶子节点
* @throws BusinessServiceException
*/
private void loopLeafClassListByTree(List<ClassDTO> allTree, List<ClassDTO> leafClassList){
if(CommonUtils.listNotNull(allTree)){
for (ClassDTO classDTO : allTree) {
if (classDTO.isLeafClass()) {
leafClassList.add(classDTO);
}
else {
List<ClassDTO> childClassList = classDTO.getChildList();
if (CommonUtils.listNotNull(childClassList)) {
this.loopLeafClassListByTree(childClassList, leafClassList);
}
}
}
}
}