一、业务实现:(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个子级只存在相同部门,得换种方式处理
标签:Map,java,excel,部门,导入,名称,ID From: https://www.cnblogs.com/springclout/p/17861361.html