文档拆分条款目录-查询/getSplitMenusByInfoId接口名字模糊查询(应该使用递归)

This commit is contained in:
caozhen
2023-09-22 16:37:05 +08:00
parent a5d528ba26
commit 0513cb1e59
@@ -3,22 +3,24 @@ package com.jero.modules.split.controller;
import com.alibaba.fastjson.JSONObject;
import com.jero.common.api.vo.Result;
import com.jero.common.system.base.controller.JeroController;
import com.jero.modules.laws.enterprise.entity.vo.LawsTreeNodeModel;
import com.jero.modules.laws.enterprise.util.FindsTreeNodeChildrenUtil;
import com.jero.modules.laws.standard.entity.LawsTreeNode;
import com.jero.modules.split.entity.SarFileSplitMenuEO;
import com.jero.modules.split.page.SarFileSplitMenuEOPage;
import com.jero.modules.split.service.IFileSplitItemsEOService;
import com.jero.modules.split.service.ISarFileSplitMenuEOService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
@RestController
@RequestMapping("/split/sarFileSplitMenu")
@@ -50,16 +52,69 @@ public class SarFileSplitMenuEOController extends JeroController<SarFileSplitMen
@GetMapping("/getSplitMenusByInfoId")
@RequiresPermissions("split:sarFileSplitItems:page")
public Result<List<SarFileSplitMenuEO>> list(SarFileSplitMenuEOPage page) throws Exception {
final String temporaryName = page.getName();
page.setName(null);
page.setValidFlag("0");
// page.setOrderBy("regexp_replace(replace('.'||NAME, '.', '.00000000'), '0+([^\\.]{8})', '\\1')");
page.setOrderBy("display_seq asc");
List<SarFileSplitMenuEO> getList = sarFileSplitMenuEOService.queryByList(page);
//转树结构
List<SarFileSplitMenuEO> menuEOS = convertToTree(getList);
// getList = menuEOS.get(0).getChildren();
List<SarFileSplitMenuEO> menuEOS = new ArrayList<>();
if (StringUtils.isBlank(temporaryName)){
menuEOS = convertToTree(getList);
}
if (StringUtils.isNotBlank(temporaryName)){
menuEOS = convertToTree(getList, temporaryName);
}
return Result.OK(menuEOS);
}
public List<SarFileSplitMenuEO> convertToTree(List<SarFileSplitMenuEO> menuList, String name) {
Set<String> menuIds = new HashSet<>();
for (SarFileSplitMenuEO menuEO : menuList) {
String eoName = menuEO.getName();
if (eoName.contains(name)){
menuIds.add(menuEO.getId());
String pId = menuEO.getPId();
if (StringUtils.isNotBlank(pId)){
SarFileSplitMenuEO eo = menuList.stream().filter(vo -> vo.getId().equals(pId)).collect(Collectors.toList()).get(0);
menuIds.add(eo.getId());
String pId1 = eo.getPId();
if (StringUtils.isNotBlank(pId1)){
SarFileSplitMenuEO eo2 = menuList.stream().filter(vo -> vo.getId().equals(pId1)).collect(Collectors.toList()).get(0);
menuIds.add(eo2.getId());
String pId2 = eo2.getPId();
if (StringUtils.isNotBlank(pId2)){
SarFileSplitMenuEO eo3 = menuList.stream().filter(vo -> vo.getId().equals(pId2)).collect(Collectors.toList()).get(0);
menuIds.add(eo3.getId());
String pId3 = eo3.getPId();
if (StringUtils.isNotBlank(pId3)){
SarFileSplitMenuEO eo4 = menuList.stream().filter(vo -> vo.getId().equals(pId3)).collect(Collectors.toList()).get(0);
menuIds.add(eo4.getId());
String pId4 = eo4.getPId();
if (StringUtils.isNotBlank(pId4)){
SarFileSplitMenuEO eo5 = menuList.stream().filter(vo -> vo.getId().equals(pId4)).collect(Collectors.toList()).get(0);
menuIds.add(eo5.getId());
String pId5 = eo5.getPId();
if (StringUtils.isNotBlank(pId5)){
SarFileSplitMenuEO eo6 = menuList.stream().filter(vo -> vo.getId().equals(pId5)).collect(Collectors.toList()).get(0);
menuIds.add(eo6.getId());
}
}
}
}
}
}
}
}
List<SarFileSplitMenuEO> sarFileSplitMenuEOS = menuList.stream().filter(vo -> menuIds.contains(vo.getId())).collect(Collectors.toList());
for (SarFileSplitMenuEO sarFileSplitMenuEO : sarFileSplitMenuEOS) {
sarFileSplitMenuEO.setChildren(null);
}
List<SarFileSplitMenuEO> menuEOList = convertToTree(sarFileSplitMenuEOS);
return menuEOList;
}
public List<SarFileSplitMenuEO> convertToTree(List<SarFileSplitMenuEO> menuList) {
// 创建一个Map来保存id与SarFileSplitMenuEO对象的映射关系
Map<String, SarFileSplitMenuEO> menuMap = new HashMap<>();