工作随记—给这栋楼批量导入各公司员工数据

给这栋楼批量导入各公司员工数据

需求图解:如下啦

关键词:二级分类、三级分类、批量导入

在这里插入图片描述

实现该方法核心两个实体类

  1. CompanyPerson 意思就是整个excel表格我们把他称为CompanyPersonList公司人员名单,里面每一条数据都是一个CompanyPerson公司人员数据
  2. Unit单位实体类,Unit可以是楼座也可以是该楼座具体的某个公司,通过传入不同的单位unitId来判断二级分类、三级分类,例如说unitId=1,是二级分类, 传入unitld=10是三级分类,在这种情况下实现批量新增

在这里插入图片描述

核心代码实现分析

  1. firstLineMap 首先解析导入的文件第一行数据 所属单位 姓名 职位…
@Override
public List<CompanyPerson> importExcel(MultipartFile file, Integer unitId) throws Exception {
    LinkedHashMap<String, String> firstLineMap = this.excelHeadMap();
    //当前操作时间
    LocalDateTime now = LocalDateTime.now();
  1. 读取文件里的数据,每一行都是代表一条公司人员数据CompanyPerson
   //文件里面的数据 每一行是一个CompanyPerson
    List<CompanyPerson> companyPersonList = ImportExportUtil
            .importExcelOfDate(CompanyPerson.class, firstLineMap, file);
  1. 判断这个excel表有没有数据,是不是空,如果不等于空就遍历这个excel表
  if (CompanyPersonList != null) {
        int i = 2;
        //第二行开始,也就是获取到第一条数据的信息
        for (CompanyPerson companyPerson : CompanyPersonList) {
            //获取到第一条数据的子单位名称
            String unitName = companyPerson.getUnitName();
            if (StringUtils.isEmpty(unitName)) {
                throw new Exception("请检查第" + i + "行" + "所属单位不能为空");
            }
  1. 用unitMapper.selectList获取到一个unitList,因为一个表里有很多个所属单位字段不一样,条件就是根据unitName,进而得到一个Unit

    获取到Unit之后,给CompanyPerson赋值上子单元UnitId

       //获取到unitName为这个的子单位的信息
        List<Unit> unitList = unitMapper.selectList(Wrappers.<Unit>lambdaQuery()
                .eq(Unit::getUnitName, unitName));
        for (Unit unit : unitList) {
            Integer id = unit.getId();
            if (unit == null) {
                throw new Exception("请检查第" + i + "行" + "所属单位跟选择的单位不匹配");
            }
            //获取到子单位id,并设置给CompanyPerson
           companyPerson.setUnitId(unit.getId());
        }

5.如果数据还有其他的也要做判断,例如手机号 、身份证、入职时间不能为空,这里省略了

那CompanyPerson::getUnitId对应的是每一个unitId,因为上面已经赋值给companyPerson了,所以在companyPerson里取UnitId

CompanyPerson oldEntity = this.baseMapper.selectOne(Wrappers.<ComponyPerson>lambdaQuery()
                    .eq(ComponyPerson::getUnitId, componyPerson.getUnitId())
                    .eq(ComponyPerson::getPhone,componyPerson.getPhone()));
            if (oldEntity != null) {
                //如果已存在则覆盖更新
                componyPerson.setId(oldEntity.getId());
                componyPerson.setUserId(oldEntity.getUserId());
            }
                componyPerson.setCreator(SecurityUtils.getUser().getId());
                componyPerson.setDelFlag("0");
                componyPerson.setCreateDate(now);
                componyPerson.setModifyDate(now);
                i = i + 1;
        }
    }

    return componyPersonList;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值