Files
ks/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/JobTitleUtils.java

74 lines
2.4 KiB
Java
Raw Normal View History

2025-09-22 17:06:47 +08:00
package com.ruoyi.cms.util;
import com.alibaba.excel.EasyExcel;
import com.ruoyi.common.core.domain.entity.JobTitle;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 工具类读取 Excel 并构建树结构
*/
public class JobTitleUtils {
/**
* 读取 Excel 文件并转换为 JobTitle 列表
*/
public static List<JobTitle> readExcel(String filePath) {
// 读取 Excel 文件
List<JobTitleExcel> excelDataList = EasyExcel.read(filePath)
.head(JobTitleExcel.class)
.sheet()
.doReadSync();
// 构建树结构
return buildTree(excelDataList);
}
/**
* 构建树结构
*/
private static List<JobTitle> buildTree(List<JobTitleExcel> excelDataList) {
Map<String, JobTitle> level1Map = new HashMap<>(); // 一级分类缓存
Map<String, JobTitle> level2Map = new HashMap<>(); // 二级分类缓存
List<JobTitle> result = new ArrayList<>(); // 最终结果
long jobId = 1; // 自增 ID
for (JobTitleExcel excelData : excelDataList) {
// 处理一级分类
JobTitle level1 = level1Map.get(excelData.getLevel1());
if (level1 == null) {
level1 = new JobTitle();
level1.setJobId(jobId++);
level1.setJobName(excelData.getLevel1());
level1.setParentId(0L); // 根节点
level1Map.put(excelData.getLevel1(), level1);
result.add(level1);
}
// 处理二级分类
JobTitle level2 = level2Map.get(excelData.getLevel2());
if (level2 == null) {
level2 = new JobTitle();
level2.setJobId(jobId++);
level2.setJobName(excelData.getLevel2());
level2.setParentId(level1.getJobId()); // 父节点为一级分类
level2Map.put(excelData.getLevel2(), level2);
level1.getChildren().add(level2);
}
// 处理三级分类
JobTitle level3 = new JobTitle();
level3.setJobId(jobId++);
level3.setJobName(excelData.getLevel3());
level3.setParentId(level2.getJobId()); // 父节点为二级分类
level2.getChildren().add(level3);
}
return result;
}
}