编码背景:为防止同一时间段用户批量导入相同excel文件数据以及大数据文件读取excel数据性能问题,修改为不实时导入,先保存前端传过来的MultipartFile类型的文件保存到服务器,待执行的任务在redis队列按照顺序读取文件保存excel数据到数据库。
/**
* 导入excel文件
*/
public String importExcel(@RequestPart MultipartFile multipartFile, String fileName) {
//保存excel文件到本地
EasyExcelUtil.saveExcel(multipartFile, fileName);
//线程执行读取excel文件进行保存到数据库
new Thread(new Runnable() {
@Override
public void run() {
getExcelData(fileName);
}
}).start();
return MessageUtil.setComSuccessMess("导入成功");
}
/**
* 读取excel文件数据,保存到数据库
* @param fileName
*/
private void getExcelData(String fileName) {
String path = "D:\\excel\\" + LocalDate.now() + File.separator + fileName;
try {
InputStream inputStream = new FileInputStream(path);
List<Glo