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

发布时间 2023-11-28 10:46:00作者: 爱学习的疯倾

一、业务实现:(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个子级只存在相同部门,得换种方式处理