public Rest importlabelData(MultipartFile file){
return songService.importlabelData(file);
}
@Override
public Rest<String> importData(MultipartFile file) {
Assert.notNull(file, "请选择文件");
InputStream inputStream = null;
StringBuilder builder = new StringBuilder();
ArrayList<SongExcelModel> addList = new ArrayList<>();
List<Object> dataList = new ArrayList<>();
Rest<String> rest = new Rest<>();
try{
inputStream = new BufferedInputStream(file.getInputStream());
dataList = EasyExcelFactory.read(inputStream, new Sheet(1, 1, SongExcelModel.class));
List<OmsSong> omsSongs = new ArrayList<OmsSong>();
for(int i = 0; i < dataList.size(); i++){
Object obj = dataList.get(i);
if( obj instanceof SongExcelModel){
SongExcelModel song = (SongExcelModel) obj;
if(StringUtils.isAnyBlank(song.getSongName(), song.getCode(), song.getLabel())){
builder.append("第").append(i + 1).append("行必填项存在空值, ");
continue;
}
//验证歌曲code是否存在与系统中,不存在则不导入
OmsSong omsSong = songMapper.getByCode(song.getCode());
if(Objects.isNull(omsSong.getId())){
builder.append("第").append(i + 2).append("行的歌曲code系统中不存在");
continue;
}
String[] split = song.getLabel().split(",");
Set<String> labelSet = new HashSet<>();
int labelNumber = 0;
//验证歌曲标签在标签库中是否存在,最多可设置3个标签
for(String str : split){
if(labelNumber > 3){
break;
}
SongLabelEnum labelEnum = this.getSongLabelEnum(str.trim());
if(Objects.nonNull(labelEnum) && labelSet.add(labelEnum.name())){
labelNumber++;
}
}
if(labelNumber > 0){
song.setLabel(String.join(",", labelSet));
}else {
song.setLabel(null);
}
omsSongs.add(omsSong);
addList.add(song);
}else {
builder.append("第").append(i + 2).append("行格式错误, ");
}
}
if(StringUtils.isNotEmpty(builder.toString())) {
logger.error("数据导入失败,{}条数据有误: {}", dataList.size() - addList.size(), builder.toString());
rest.setCode(ResultEnum.ERROR.getCode());
rest.setMessage("数据导入失败: " + builder.substring(0, builder.lastIndexOf(",")));
}else {
this.saveImportData(addList);
this.bulkAddSong(omsSongs);
rest.setCode(ResultEnum.SUCCESS.getCode());
rest.setMessage("数据导入成功");
}
}catch (Exception e){
logger.error("歌曲导入异常: {}", e.getMessage());
rest.setCode(ResultEnum.ERROR.getCode());
rest.setMessage("导入任务异常");
}finally {
if(Objects.nonNull(inputStream)){
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return rest;
}
批量导入文件
最新推荐文章于 2024-07-31 17:31:48 发布