# 递归显示部门
<script>
function menuFoldClick(){
var srcE=window.event.srcElement;
var tagName=window.event.srcElement.tagName;
if(tagName=="LI"){
var nextBrother=srcE.nextSibling;
if(nextBrother.nodeType!=1){
nextBrother=nextBrother.nextSibling;
}
if(nextBrother.tagName=="UL"){
var displayCss=nextBrother.style.display;
if(displayCss=="none"){
nextBrother.style.display="";
}else{
nextBrother.style.display="none";
}
}
}
}
</script>
<ul οnclick="menuFoldClick()">
<%HashMap depMap=(HashMap)request.getAttribute("depMap"); %>
<%!public void printSubDep(JspWriter out,HashMap depMap,Integer j,Integer id){
List list2=(List)depMap.get(j);
if(list2!=null&&list2.size()>0){
try{
boolean flag=false;
for(int n=0;n<list2.size();n++){
TDepartment dep2 =(TDepartment)list2.get(n);
if(dep2.getUpDep().intValue()==id.intValue()){
flag=true;
break;
}
}
if(flag) out.print("<ul>");
int k=j;
for(int n=0;n<list2.size();n++){
TDepartment dep2 =(TDepartment)list2.get(n);
if(dep2.getUpDep().intValue()==id.intValue()){
out.print("<li>" + dep2.getDepName()
+ "</li>");
j++;
printSubDep(out,depMap,j,dep2.getId());
}
j=k;
}
if(flag) out.print("</ul>");
}catch(IOException e){
e.getStackTrace();
}
}
} %>
<%
if (depMap.size()>0) {
List depListObj = (List) depMap.get(1);
for (int j = 0; j < depListObj.size(); j++) {
TDepartment dep = (TDepartment) depListObj.get(j);
out.print("<li>" + dep.getDepName() + "</li>");
printSubDep(out,depMap,2,dep.getId());
}
}
%>
</ul>
# 递归查询文件夹目录(注意:需要的递归返回结果是什么,比如此处需要children的List)
public JSONObject folderTree(){
String folderName = obtainParam("name", true);
Iterable<FileFolder> iterable = folderService.findAll(QFileFolder.fileFolder.name.containsIgnoreCase(folderName)
.and(QFileFolder.fileFolder.status.eq(Status.ENABLED)));
List<FileFolder> list = CommonUtils.toList(iterable.iterator());
List<JSONObject> finalList = new ArrayList<>();
if(list.size()>0){
//路径节点集合
List<FileFolder> pathFileFolderList = new ArrayList<>();
//获取根目录
List<FileFolder> rootList = new ArrayList<>();
for(FileFolder fileFolder: list){
if(null != fileFolder){
pathFileFolderList.add(fileFolder);
FileFolder parent = fileFolder.getParent();
if(null == parent) rootList.add(fileFolder);
while (null != parent){
pathFileFolderList.add(parent);
parent = parent.getParent();
}
}
}
//从一级目录开始遍历
for(FileFolder folder: rootList){
if(null != folder){
toTreeJson(folder,pathFileFolderList,finalList);
}
}
}
return formatResult(finalList);
}
public List<JSONObject> folderRecursiceTree(FileFolder folder, List<FileFolder> pathFileFolderList){
List<JSONObject> childObjList = new ArrayList<>();
Iterable<FileFolder> childIterable = folderService.findAll(QFileFolder.fileFolder.parent.eq(folder).and(QFileFolder.fileFolder.status.eq(Status.ENABLED)));
List<FileFolder> childList = CommonUtils.toList(childIterable.iterator());
if(childList.size()>0){
for(FileFolder child:childList){
if(null !=child){
if(pathFileFolderList.contains(child)){
toTreeJson(child,pathFileFolderList,childObjList);
}
}
}
}
return childObjList;
}
public void toTreeJson(FileFolder child, List<FileFolder> pathFileFolderList, List<JSONObject> childObjList){
JSONObject jsonObject = new JSONObject();
jsonObject.put("id", child.getId());
jsonObject.put("label", child.getName());
List<JSONObject> deep2ChildList = folderRecursiceTree(child, pathFileFolderList);
jsonObject.put("children", deep2ChildList);
childObjList.add(jsonObject);
}
/** * 检查模板父级目录递归(注意最后的addAll) */ public List<SvCheckItemRecordVO> recursiveRecordVOList(Map<String,Object> treeMap,List<SvCheckItemRecordVO> svCheckItemRecordVOList){ List<SvCheckItemRecordVO> newTreeList =new LinkedList<>(); int k=0; for(SvCheckItemRecordVO inRecordVO : svCheckItemRecordVOList){ System.out.println("========="+inRecordVO.getTreeLevel()+";"+inRecordVO.getTreeName()); String parentId = inRecordVO.getTreeParent(); if(null!=parentId){ System.out.println("**********"+inRecordVO.getTreeLevel()+";"+inRecordVO.getTreeName()); if(treeMap.get(parentId)!=null){ SvCheckItemRecordVO mapParentRecordVO = (SvCheckItemRecordVO) treeMap.get(parentId); mapParentRecordVO.getCheckItemRecordVOList().add(inRecordVO); mapParentRecordVO.setRowSpan(mapParentRecordVO.getRowSpan()+inRecordVO.getRowSpan()); continue; }else { k=k+1; SvCheckItemsRecord parentRecord = svCheckItemsRecordService.selectOne(parentId); SvCheckItemRecordVO parentRecordVO = toSvCheckItemRecordVO(parentRecord); treeMap.put(parentId,parentRecordVO); parentRecordVO.getCheckItemRecordVOList().add(inRecordVO); parentRecordVO.setRowSpan(inRecordVO.getRowSpan()); newTreeList.add(parentRecordVO); } }else { System.out.println("==========**********"+inRecordVO.getTreeLevel()+";"+inRecordVO.getTreeName()); if(treeMap.get(inRecordVO.getBh())==null){ newTreeList.add(inRecordVO); } } } if(k>0){ newTreeList.addAll(recursiveRecordVOList(treeMap, newTreeList)); } return newTreeList; }