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 readExcel(String filePath) { // 读取 Excel 文件 List excelDataList = EasyExcel.read(filePath) .head(JobTitleExcel.class) .sheet() .doReadSync(); // 构建树结构 return buildTree(excelDataList); } /** * 构建树结构 */ private static List buildTree(List excelDataList) { Map level1Map = new HashMap<>(); // 一级分类缓存 Map level2Map = new HashMap<>(); // 二级分类缓存 List 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; } }