/**
* 分页列表查询
*
* @param serviceTable
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@AutoLog(value = "服务表-分页列表查询")
@ApiOperation(value="服务表-分页列表查询", notes="服务表-分页列表查询")
@GetMapping(value = "/list")
public Result<?> queryPageList(ServiceTable serviceTable,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
/*QueryWrapper<ServiceTable> queryWrapper = QueryGenerator.initQueryWrapper(serviceTable, req.getParameterMap());
Page<ServiceTable> page = new Page<ServiceTable>(pageNo, pageSize);
IPage<ServiceTable> pageList = serviceTableService.page(page, queryWrapper);
return Result.ok(pageList);*/
QueryWrapper<ServiceTable> queryWrapper = QueryGenerator.initQueryWrapper(serviceTable, req.getParameterMap());
// queryWrapper.eq("parent_id","0"); // 默认0 的是一级菜单
queryWrapper.orderByAsc("number");
List<ServiceTable> parentNodes = serviceTableService.list(queryWrapper);
List<ServiceTableDto> stdto = new ArrayList<ServiceTableDto>() ;
//存储根节点的菜单,即一级菜单
List<ServiceTableDto> rootlist=new ArrayList<>();
for (ServiceTable parentNode:parentNodes) {
ServiceTableDto tableDto = new ServiceTableDto();
tableDto.setId(parentNode.getId());
tableDto.setServiceName(parentNode.getServiceName());
tableDto.setServiceEnglishName(parentNode.getServiceEnglishName());
tableDto.setParentId(parentNode.getParentId());
tableDto.setType(parentNode.getType());
stdto.add(tableDto);
}
//遍历所有数据,找到根节点菜单
for (ServiceTableDto menuDTO: stdto) {
if(menuDTO.getParentId().equals("0")){
//找到根节点菜单的时候,寻找这个根节点菜单下的子节点菜单。
findChilds(menuDTO,stdto);
//添加到根节点的列表中
rootlist.add(menuDTO);
}
}
return Result.ok(rootlist);
}
/**
* @Author LS
* @Description 递归子节点遍历
* @Date 9:26 2021/8/20 0020
* @Param [root, list]
* @return void
**/
private void findChilds(ServiceTableDto root,List<ServiceTableDto> list){
List<ServiceTableDto> childlist=new ArrayList<>();
//遍历所有数据,找到是入参父节点的子节点的数据,然后加到childlist集合中。
for (ServiceTableDto menu : list) {
if (root.getId().equals(menu.getParentId()))
childlist.add(menu);
}
//若子节点不存在,那么就不必再遍历子节点中的子节点了 直接返回。
if(childlist.size()==0)
return;
//设置父节点的子节点列表
root.setChildNodes(childlist);
//若子节点存在,接着递归调用该方法,寻找子节点的子节点。
for (ServiceTableDto childs : childlist) {
findChilds(childs, list);
}
}
java 递归案例
最新推荐文章于 2024-06-07 00:36:28 发布