MrShi
2025-08-19 ff087240b3dee29ce4e14ad0836e76b9fdf312cf
server/src/main/java/com/doumee/dao/business/vo/CompanyTree.java
@@ -1,9 +1,14 @@
package com.doumee.dao.business.vo;
import com.doumee.core.constants.Constants;
import com.doumee.dao.business.model.Company;
import com.doumee.dao.business.model.CompanyMember;
import com.doumee.dao.business.model.Member;
import org.apache.commons.lang3.StringUtils;
import org.yaml.snakeyaml.scanner.Constant;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
@@ -17,6 +22,7 @@
    // 保存参与构建树形的所有数据(通常数据库查询结果)
    public List<Company> nodeList = new ArrayList<>();
    public List<CompanyMember> memberList = new ArrayList<>();
    public Integer origin = 0; //0自建 1企微
@@ -28,6 +34,11 @@
    public CompanyTree(List<Company> nodeList, Integer origin){
        this.nodeList = nodeList;
        this.origin = origin;
    }
    public CompanyTree(List<Company> nodeList, Integer origin, List<CompanyMember> memberList ){
        this.nodeList = nodeList;
        this.origin = origin;
        this.memberList=memberList;
    }
@@ -42,6 +53,9 @@
        for (Company treeNode : nodeList){
            // 判断当前节点是否为根节点,此处注意:若parentId类型是String,则要采用equals()方法判断。
            if(origin== 1){
                if( findParentIdFromList(treeNode.getQwParentId()) == null){
                    treeNode.setQwParentId(null);//去除没获取的父节点的企微父级标识,作为顶节点
                }
                if (StringUtils.isBlank(treeNode.getQwParentId()) || StringUtils.equals(treeNode.getQwId(),"1")) {
                    // 是,添加
                    rootNodeList.add(treeNode);
@@ -54,6 +68,15 @@
            }
        }
        return rootNodeList;
    }
    private Company findParentIdFromList(String qwParentId) {
        for(Company c : nodeList){
            if(StringUtils.equals(c.getQwId(),qwParentId)){
                return  c;
            }
        }
        return null;
    }
@@ -93,13 +116,43 @@
                if (!Objects.isNull(treeNode.getParentId())&&treeNode.getParentId().equals(pNode.getId())) {
                    // 再递归进行判断当前节点的情况,调用自身方法
                    childTree.add(buildChildTree(treeNode));
                }
            }
        }
        // for循环结束,即节点下没有任何节点,树形构建结束,设置树结果
        pNode.setChildList(childTree);
        List<Company> memberList = getMemberNode(pNode.getId());
        if(memberList!=null && memberList.size()>0){
            if(pNode.getChildList() == null){
                pNode.setChildList(memberList);
            }else{
                pNode.getChildList().addAll(memberList);
            }
        }
        if(  pNode.getChildList() == null ||   pNode.getChildList().size() ==0){
            pNode.setHasChildren(Boolean.FALSE);
        }else{
            pNode.setHasChildren(Boolean.TRUE);
        }
        return pNode;
    }
    private   List<Company> getMemberNode(Integer id) {
        List<Company> companyList = new ArrayList<>();
        if(memberList!=null && memberList.size()>0){
            for(CompanyMember member :memberList){
                if(member.getCompanyId()!=null && Constants.equalsInteger(member.getCompanyId(),id)){
                    Company com = new Company();
                    com.setObjType(Constants.ONE);
                    com.setName(member.getMemberName());
                    com.setMemberId(member.getMemberId());
                    companyList.add(com);
                }
            }
        }
        return companyList;
    }
}