一、产品需求:
-
excel数据模板下载 -
excel数据导入 -
导入得时候根据模板得校验规则来进行筛选,导入成功的返回成功列表,数据有问题得返回失败列表,失败列表支持数据编辑修正
看到需求第一眼可能就是第三列有点难度,我们知道,传统得数据校验是在DTO上面加注解
@PostMapping("/v2/importExcel")publicUserExcelVOimportExcelV2(@RequestParam("file")MultipartFilefile){List<UserExcel>list=null;List<UserExcel>fail=newArrayList<>();UserExcelVOuserExcelVO=newUserExcelVO();try{list=EasyExcel.read(file.getInputStream(),UserExcel.class,newModelExcelListener()).sheet().doReadSync();list.forEach(data->{Set<ConstraintViolation<UserExcel>>violations=ValidationUtils.getValidator().validate(data);if(violations.size()>0){fail.add(data);}});userExcelVO.setFail(fail);list.removeAll(fail);userExcelVO.setSuccess(list);}catch(IOExceptione){e.printStackTrace();}returnuserExcelVO;}publicstaticclassModelExcelListenerextendsAnalysisEventListener<UserExcel>{privateList<UserExcel>datas=newArrayList<>();/***通过AnalysisContext对象还可以获取当前sheet,当前行等数据*/@Overridepublicvoidinvoke(UserExceldata,AnalysisContextcontext){//数据存储到list,供批量处理,或后续自己业务逻辑处理。log.info("读取到数据{}",data);datas.add(data);//根据业务自行处理,可以写入数据库等等}//所有的数据解析完了调用@OverridepublicvoiddoAfterAllAnalysed(AnalysisContextcontext){log.info("所有数据解析完成");}}
三、测试结果
访问
-
localhost:8086/user/v1/importExcel
-
localhost:8086/user/v2/importExcel
结果


发现测试结果一致,后续写代码的时候,除了做功能,应该要考虑代码的扩展性,不然产品说加个功能,我们又得吭哧吭哧写代码,那这样也是太累了。
代码下载地址:
❝
https://gitee.com/jike11231/mybatis-plus-demo-test.git ❞
来源:blog.csdn.net/jike11231/
article/details/123994833
构建高质量的技术交流社群,欢迎从事编程开发、技术招聘HR进群,也欢迎大家分享自己公司的内推信息,相互帮助,一起进步!
文明发言,以
交流技术、职位内推、行业探讨为主
广告人士勿入,切勿轻信私聊,防止被骗

本篇文章来源于微信公众号: Java笔记虾
微信扫描下方的二维码阅读本文

Comments NOTHING