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