|  |  | 
 |  |  | package com.doumee.dao.web.response.platformReport; | 
 |  |  |  | 
 |  |  | import com.doumee.config.DataSyncConfig; | 
 |  |  | import com.doumee.core.haikang.model.param.respose.PageRegionInfoResponse; | 
 |  |  | import com.doumee.dao.business.model.Company; | 
 |  |  | import io.swagger.annotations.ApiModelProperty; | 
 |  |  | import lombok.Data; | 
 |  |  | import org.apache.commons.lang3.StringUtils; | 
 |  |  |  | 
 |  |  | import java.math.BigDecimal; | 
 |  |  | import java.util.ArrayList; | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.Objects; | 
 |  |  | 
 |  |  |         for (PageRegionInfoResponse treeNode : nodeList){ | 
 |  |  |             // 判断当前节点是否为根节点,此处注意:若parentId类型是String,则要采用equals()方法判断。 | 
 |  |  |             if (Objects.isNull(treeNode.getParentIndexCode()) | 
 |  |  |                     || StringUtils.equals(treeNode.getParentIndexCode(),"null")) { | 
 |  |  |                     || StringUtils.equals(treeNode.getParentIndexCode(),"null") | 
 |  |  |                     || !isValidParentCode(treeNode.getParentIndexCode(),nodeList)) { | 
 |  |  |                 // 是,添加 | 
 |  |  |                 rootNodeList.add(treeNode); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |         return rootNodeList; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private boolean isValidParentCode(String parentIndexCode, List<PageRegionInfoResponse> nodeList) { | 
 |  |  |         for (PageRegionInfoResponse treeNode : nodeList){ | 
 |  |  |             // 判断当前节点是否为根节点,此处注意:若parentId类型是String,则要采用equals()方法判断。 | 
 |  |  |             if ( StringUtils.equals(treeNode.getIndexCode(),parentIndexCode)) { | 
 |  |  |                 return true; | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |         return false; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  | 
 |  |  |     public List<PageRegionInfoResponse> buildTree(){ | 
 |  |  |         // treeNodes:保存一个顶级节点所构建出来的完整树形 | 
 |  |  |         List<PageRegionInfoResponse> treeNodes = new ArrayList<PageRegionInfoResponse>(); | 
 |  |  |         // getRootNode():获取所有的根节点 | 
 |  |  |          getRootNode();//:获取所有的根节点 | 
 |  |  |         for (PageRegionInfoResponse treeRootNode : getRootNode()) { | 
 |  |  |             // 将顶级节点进行构建子树 | 
 |  |  |             treeRootNode = buildChildTree(treeRootNode); | 
 |  |  | 
 |  |  |         // nodeList:所有节点集合(所有数据) | 
 |  |  |         for (PageRegionInfoResponse treeNode : nodeList) { | 
 |  |  |             // 判断当前节点的父节点ID是否等于根节点的ID,即当前节点为其下的子节点 | 
 |  |  |                 if (!Objects.isNull(treeNode.getParentIndexCode())&&treeNode.getParentIndexCode().equals(pNode.getRegionIndexCode())) { | 
 |  |  |                 if (!Objects.isNull(treeNode.getParentIndexCode())&&treeNode.getParentIndexCode().equals(pNode.getIndexCode())) { | 
 |  |  |                     // 再递归进行判断当前节点的情况,调用自身方法 | 
 |  |  |                     childTree.add(buildChildTree(treeNode)); | 
 |  |  |                 } |