// controller 层
/**
* 导入
* @param
* @return
*/
@ApiOperation(value = "单位导入CSV文件")
@PostMapping("/importUnitFile")
@Log("导入CSV文件")
public JsonResult importDevice(@RequestParam("file") MultipartFile file) throws Exception {
if (file.isEmpty()) return JsonResult.fail("文件为空!!!");
Integer importDevice = unitService.importDevice(file);
if (importDevice == -1) {
return JsonResult.success("添加成功!!!");
} else{
return JsonResult.success("添加失败,请检查第"+importDevice+"条信息是否正确,第"+importDevice+"条以上添加成功!!!");
}
}
// 接口
/**
* 单位导入
* @param file
* @return
*/
Integer importDevice(MultipartFile file) throws Exception;
// 业务实现
/**
* 单位导入
* @param file
* @return
*/
@Override
@Transactional
public Integer importDevice(MultipartFile file) throws Exception{
Integer count = 0;
// 读取收到文件中数据
List<UnitExcel> unitExcelList = EasyExcel.read(file.getInputStream()).head(UnitExcel.class).headRowNumber(0).sheet().doReadSync();
LocalDateTime localDateTime = LocalDateTime.now();
for (int i = 1; i < unitExcelList.size(); i++) {
String name = unitExcelList.get(i).getName();
String remarks = unitExcelList.get(i).getRemarks();
String code = unitExcelList.get(i).getCode();
if(name == null || code == null){
throw new ServiceException("关键数据不能为空!");
}
Unit unit = new Unit();
Integer factoryId = SecurityUtil.getFactoryUser().getFactoryId();
unit.setFactoryId(factoryId);
unit.setName(name);
unit.setStatus(1);
unit.setCode(code);
unit.setRemarks(remarks);
unit.setCreateTime(localDateTime);
unit.setUpdateTime(localDateTime);
int insert =unitMapper.insert(unit);
if( insert == 0){
throw new ServiceException("数据库繁忙,请稍后重试");
}
count = -1;
}
return count;
}
// 实体类
@Data
public class UnitExcel implements Serializable {
@ExcelProperty("单位名称")
@ColumnWidth(20)
private String name;
@ExcelProperty("编码")
@ColumnWidth(20)
private String code;
@ExcelProperty("备注")
@ColumnWidth(20)
private String remarks;
}
这里需要注意是,实体类中的数据类型全部为String , 在insert 前转换即可!!