前端vue:
按钮:
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-upload2"
size="mini"
:loading="exportLoading"
@click="handleImport"
v-hasPermi="['management:formulas:import']"
>批量导入</el-button>
</el-col>
js:
/** 批量导入按钮按钮操作 */
handleImport(){
this.openImport = true;
this.reset();
this.ImportTitle = "批量导入数据";
this.$refs.upload.clearFiles();
},
//文件上传到数据库
myImportFile(param) {
var file = param.file;
let formData = new FormData();
formData.append("file", file); //将文件保存在foemat对象中
ImportFile(formData).then((res) => {
this.$modal.msgSuccess("导入文件成功");
this.openImport = false;
this.getList();
});
},
beforeUpload(file){
if (file.type != "" || file.type != null || file.type != undefined){
//截取文件的后缀,判断文件类型
const FileExt = file.name.replace(/.+\./, "").toLowerCase();
//计算文件的大小
const isLt5M = file.size / 1024 / 1024 < 50; //这里做文件大小限制
//如果大于50M
if (!isLt5M) {
this.$showMessage('上传文件大小不能超过 50MB!');
return false;
}
//如果文件类型不在允许上传的范围内
if(this.fileType.includes(FileExt)){
return true;
}
else {
this.$message.error("上传文件格式不正确!");
return false;
}
}
}
//批量导入数据
export function ImportFile(data){
return request({
url: '/management/formulas/import',
method: 'post',
data: data
})
}
后端springboot
controller:
/**
* 文件导入数据库
*/
@ApiOperation("文件导入数据库")
@RequestMapping("/import")
@PostMapping
public AjaxResult handleFileImport(@RequestParam("file") MultipartFile file) {
String fileName = file.getOriginalFilename(); // 获取文件名
InputStream is = null;
try {
is = file.getInputStream();
List<Map> studentList = slFormulasService.getListByExcel(is, fileName);// 获取解析后的List集合
Boolean result = slFormulasService.batchImportSlFormulasInfo(studentList); // 把数据插入数据库
if (result) {
return AjaxResult.success("文件上传成功!");
} else {
return AjaxResult.success("文件上传失败");
}
} catch (Exception e) {
e.printStackTrace();
return AjaxResult.error("文件上传失败:" + e.getMessage());
}
}
service:
@Override
public List<Map> getListByExcel(InputStream is, String fileName) throws Exception {
try {
//获取解析excel后的list集合
List<Map> slformulasList = new ExcelUtil<>(new SlFormulas()).AnalysisExcel(is, fileName);
return slformulasList;
} catch (Exception e) {
e.printStackTrace();
}
return new ArrayList<>();
}
@Override
public Boolean batchImportSlFormulasInfo(List<Map> list) throws Exception {
//判断list是否重复
//判断list与数据库中的是否存在
int index=0;
ArrayList list1 = new ArrayList();
//取list中的product、part_name、rubber_code
for (Map<String, String> map : list) {
index++;
String product = map.get("product");
String part_name = map.get("partName");
String rubber_code = map.get("rubberCode");
//判断数据库中是否存在该数据
QueryWrapper<SlFormulas> wrapper = new QueryWrapper<>();
wrapper.eq("product", product);
wrapper.eq("part_name", part_name);
wrapper.eq("rubber_code", rubber_code);
List<SlFormulas> selectList = slFormulasMapper.selectList(wrapper);
//判断数据库中是否存在
if (!selectList.isEmpty()) {
list1.add(index);
}
}
if (!list1.isEmpty()){
throw new Exception("excel中第"+list1+"行在数据库中存在");
}
//如果不存在,则添加数据
int flag = slFormulasMapper.batchImportSlFormulasInfo(list);
if (flag <= 0) {
return false;
}else {
return true;
}
}