java 为解决导入部门名称是中文,部门名称转换成部门ID

一、业务实现:(Server层)

/**
     * 为解决导入部门名称是中文,部门名称转换成部门ID
     * key : 部门名称
     * value : 部门ID
     **/
    Map<String, Integer> getOrgNameToIdMapping();
二、业务层(SercerImpl)
/**
     * 为解决导入部门名称是中文,部门名称转换成部门ID
     * key : 部门名称   * value : 部门ID
     **/
    @Override
    public Map<String, Integer> getOrgNameToIdMapping() {     // 从数据库中查询的部门集合,当然也可以加参数指定部门名称匹配ID
        List<Org> list = this.list();
        Map<String, Integer> map = new HashMap<>();
        if (StringUtils.isEmpty(list)) {
            return map;
        }
        list.forEach(dept -> {
            map.put(dept.getName(), dept.getId());
        });
        return map;
    }

三、在需要处理业务的地方调用,如:导入数据时

这里是个简单示例,希望对大家有所帮助

//部门校验,部门名称转换部门ID
        Map<String, Integer> orgNameToIdMapping = orgApi.getOrgNameToIdMapping();     //excel.getOrgName是导入时从Excel表格中读取的中文部门名称,如:研发部门
        if (StringUtils.isNotEmpty(excel.getOrgName())) {
            if (!orgNameToIdMapping.containsKey(excel.getOrgName())) {
                throw new RuntimeException("部门名称不存在!");
            } else {          // 匹配研发部门ID
                Integer deptId = orgNameToIdMapping.get(excel.getOrgName());
                if (deptId == null) {
                    throw new RuntimeException("系统中未存在该部门编号!");
                } else {
                    excel.setOrgId(deptId);
                }
            }
        }

提示:该处理方式只对部门名称不存在重复可行,如果2个子级只存在相同部门,得换种方式处理

您可以使用 Apache POI 库来读取 Excel 文件并将其转换为 Java 对象。这个库提供了一些类和方法来读取 Excel 文件中的单元格并将其转换为 Java 对象。以下是一个简单的示例代码,它将读取 Excel 文件中的数据并将其转换为具有适当字段的 Java 对象: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ExcelToObjectConverter { public static void main(String[] args) throws IOException { String excelFilePath = "path/to/excel/file.xlsx"; List<Employee> employees = readEmployeesFromExcelFile(excelFilePath); System.out.println(employees); } private static List<Employee> readEmployeesFromExcelFile(String excelFilePath) throws IOException { List<Employee> employees = new ArrayList<>(); FileInputStream inputStream = new FileInputStream(excelFilePath); Workbook workbook = new XSSFWorkbook(inputStream); Sheet firstSheet = workbook.getSheetAt(0); Iterator<Row> iterator = firstSheet.iterator(); while (iterator.hasNext()) { Row nextRow = iterator.next(); if (nextRow.getRowNum() == 0) { continue; // skip header row } Iterator<Cell> cellIterator = nextRow.cellIterator(); Employee employee = new Employee(); while (cellIterator.hasNext()) { Cell nextCell = cellIterator.next(); int columnIndex = nextCell.getColumnIndex(); switch (columnIndex) { case 0: employee.setId((int) nextCell.getNumericCellValue()); break; case 1: employee.setName(nextCell.getStringCellValue()); break; case 2: employee.setAge((int) nextCell.getNumericCellValue()); break; case 3: employee.setSalary(nextCell.getNumericCellValue()); break; } } employees.add(employee); } workbook.close(); inputStream.close(); return employees; } } class Employee { private int id; private String name; private int age; private double salary; // getters and setters // toString method } ``` 在这个示例中,我们首先使用 FileInputStream 类从文件系统中读取 Excel 文件,然后创建 Workbook 对象,该对象代表 Excel 工作簿。我们使用 `getSheetAt()` 方法获取工作簿中的第一个 Sheet 对象。然后我们使用迭代器遍历每一行并使用 switch 语句将单元格的值转换为 Java 对象的适当字段。最后,我们将 Java 对象添加到一个列表中并返回该列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值