1、业务描述
有一个树结构,存在一个唯一的code和一个父节点的pcode,要求前端传入任意层的code匹配这个code对应的所有子节点对应的数据。
2、解决思路
因为无法判定传入的code到底在那层,so 直接递归调用查询判断,如果有子节点就继续差,如果没有子节点,说明当前节点就是最后节点,直接写入收集集合中。
3、业务实现 代码如下
public List<String> getCodeInfo(String code, List<String> info) {CdRegional cdRegional = new CdRegional();cdRegional.setParentCode(code);//通过封装传入的节点到对应的方法去查询对应的节点信息List<CdRegional> list1 = cdRegionalService.findList(cdRegional);//没有子节点就说明自己是最后一个信息if (list1.isEmpty()) {//写入集合info.add(code);} else {//将查询到的所有节点遍历查询子节点list1.forEach(item -> {List<String> codeInfo = getCodeInfo(item.getRegionalCode(), info);});}return info;}
注释:基本代码都是该框架对应的信息,注重注释就行了,
public List<CdWholeleasemanagement> getInfoBy(WholelParam wholelParam) {//将子节点信息都写入新集合codeInfo//新建一个集合用于接收最后的数据List<String> code = new ArrayList<>();//传入节点信息和用于收集的集合List<String> codeInfo = getCodeInfo(wholelParam.getRegions().get(0), code);String rentRange = wholelParam.getMin_rent() + "-" + wholelParam.getMax_rent();if (wholelParam.getMax_rent() == 0.0) {wholelParam.setMax_rent(null);}// String array = wholelParam.getRegions().get(0);Integer page = (wholelParam.getPage() - 1) * 6;List<CdWholeleasemanagement> list = cdWholeleasemanagementDao.getInfoBy(wholelParam.getHuxing(),wholelParam.getGengduox(),rentRange, codeInfo, wholelParam.getMin_rent(), wholelParam.getMax_rent(),wholelParam.getMetros(),page);return list;}