ExecutorService executorService = Executors.newSingleThreadExecutor();
String taskId=UUID.randomUUID().toString();
rectLogService.startTheTask(ModernRectTaskEnum.up,currentUser,taskId,dao);
InputStream inputStream= file.getInputStream();
String fileName = file.getName();
executorService.execute(()->{
try{
List<String> errors=new ArrayList<>();
List<ModernRectBeanVo> rectBeanVos = ExcelUtils.readPlusWithFiled(inputStream, 1,0,
ModernRectBeanVo.class,fileName, errors,null,false,null);
if (errors.size()>0) {
modernRectService.saveTheErrorModernBeans(rectBeanVos,currentUser,taskId,dao);
rectLogService.errorTheTask(taskId,dao);
}else{
ModernRectTaskEnum succEnum = null;
List<ModernRectBeanVo> errorBeans = modernRectService.checkTheBeans(rectBeanVos,currentUser,dao);
if (CollectionUtils.isNotEmpty(errorBeans)) {
modernRectService.saveTheErrorModernBeans(errorBeans,currentUser,taskId,dao);
succEnum=ModernRectTaskEnum.completeWithError;
}
List<ModernRectBeanVo> withOutRectDatas = rectBeanVos.stream().filter(x -> ModernRectDetailsEnum.withoutRect.getCnStatus().equals(x.getRect_details())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(withOutRectDatas)) {
modernRectService.saveTheWithOutRectBeans(withOutRectDatas,currentUser,taskId,dao);
if (succEnum==null) {
succEnum=ModernRectTaskEnum.completeWithBei;
}else{
succEnum=ModernRectTaskEnum.completeWithBeiAndError;
}
}
List<ModernRectBeanVo> okDatas = rectBeanVos.stream().filter(x -> !ModernRectDetailsEnum.withoutRect.getCnStatus().equals(x.getRect_details())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(okDatas)) {
modernRectService.saveWithUpTheBeans(okDatas,canBeModifyRow,currentUser,dao);//保存并流转数据
if (succEnum==null) {
succEnum=ModernRectTaskEnum.complete;
}
}
rectLogService.successTheTask(taskId,succEnum,null,dao);
}
dao.commit();
}catch (Exception e){
e.printStackTrace();
log.error("后台上传出出错",e);
try {
dao.currentConnection().rollback();
rectLogService.abnormalTheTask(taskId,dao);
dao.commit();
} catch (Exception e1) {
e1.printStackTrace();
log.error("后台上传出出错",e);
}
}finally {
try {
dao.close();
} catch (Exception e) {
e.printStackTrace();
log.error("后台上传出出错",e);
}
}
});