0
点赞
收藏
分享

微信扫一扫

java根据组织表中的id parent_id生成 org_path

伢赞 2023-07-14 阅读 87

Java根据组织表中的id parent_id生成org_path的实现流程

1. 整体流程

为了实现根据组织表中的id和parent_id生成org_path,我们可以按照以下步骤进行操作:

步骤 操作
1 获取组织表中的所有数据
2 创建一个HashMap用于存储每个组织id对应的结果
3 遍历组织表中的每个组织记录
4 对于每个组织记录,检查它是否有父组织
5 如果有父组织,将父组织的org_path与当前组织的id拼接
6 如果没有父组织,当前组织的org_path即为自身id
7 将当前组织的org_path存入HashMap
8 遍历完成后,HashMap中存储了每个组织id对应的org_path

2. 代码实现

下面是按照上述流程实现的Java代码,包含了每一步需要做的操作和相应的注释:

import java.util.HashMap;
import java.util.List;

public class OrgPathGenerator {

    // 定义一个方法生成org_path
    public void generateOrgPath(List<Org> orgList) {
        // 步骤1:获取组织表中的所有数据
        // orgList 是组织表中的数据,每个Org对象包含id和parent_id等字段

        // 步骤2:创建一个HashMap用于存储每个组织id对应的结果
        HashMap<Integer, String> orgPathMap = new HashMap<>();

        // 步骤3:遍历组织表中的每个组织记录
        for (Org org : orgList) {
            // 步骤4:检查当前组织是否有父组织
            if (org.getParentId() != null) {
                // 步骤5:将父组织的org_path与当前组织的id拼接
                String parentOrgPath = orgPathMap.get(org.getParentId());
                String orgPath = parentOrgPath + "/" + org.getId();
                orgPathMap.put(org.getId(), orgPath);
            } else {
                // 步骤6:没有父组织,当前组织的org_path即为自身id
                orgPathMap.put(org.getId(), String.valueOf(org.getId()));
            }
        }

        // 步骤8:遍历完成后,HashMap中存储了每个组织id对应的org_path
        for (Integer orgId : orgPathMap.keySet()) {
            System.out.println("组织id:" + orgId + ",org_path:" + orgPathMap.get(orgId));
        }
    }

    // 测试代码
    public static void main(String[] args) {
        // 假设组织表中有以下数据
        List<Org> orgList = getOrgListFromDatabase();
        OrgPathGenerator generator = new OrgPathGenerator();
        generator.generateOrgPath(orgList);
    }

    // 模拟从数据库中获取组织表数据
    private static List<Org> getOrgListFromDatabase() {
        // 省略数据库操作,直接返回模拟数据
        // 假设组织表中有以下数据
        Org org1 = new Org(1, null);
        Org org2 = new Org(2, 1);
        Org org3 = new Org(3, 1);
        Org org4 = new Org(4, 2);
        Org org5 = new Org(5, 2);
        return List.of(org1, org2, org3, org4, org5);
    }
}

class Org {
    private Integer id;
    private Integer parentId;

    public Org(Integer id, Integer parentId) {
        this.id = id;
        this.parentId = parentId;
    }

    public Integer getId() {
        return id;
    }

    public Integer getParentId() {
        return parentId;
    }
}

通过上述代码实现,可以根据组织表中的id和parent_id生成对应的org_path。请根据具体的业务需求和数据结构进行适当的调整和扩展。

举报

相关推荐

0 条评论