74 lines
2.4 KiB
Java
74 lines
2.4 KiB
Java
|
|
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;
|
|||
|
|
}
|
|||
|
|
}
|