diff --git a/src/main/java/com/zcloud/service/accident/impl/AccidentRecordsServiceImpl.java b/src/main/java/com/zcloud/service/accident/impl/AccidentRecordsServiceImpl.java index d405ec89..40639f60 100644 --- a/src/main/java/com/zcloud/service/accident/impl/AccidentRecordsServiceImpl.java +++ b/src/main/java/com/zcloud/service/accident/impl/AccidentRecordsServiceImpl.java @@ -1,5 +1,6 @@ package com.zcloud.service.accident.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.*; @@ -123,10 +124,24 @@ public class AccidentRecordsServiceImpl implements AccidentRecordsService { // 标记别名 HEADER_ALIAS_CACHE.forEach((k, v) -> reader.addHeaderAlias(v, k)); List recordsExcels = reader.readAll(AccidentRecordsExcel.class); + if (CollUtil.isEmpty(recordsExcels)) { + throw new RuntimeException("没有数据"); + } sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); AccidentRecordsMapper mapper = sqlSession.getMapper(AccidentRecordsMapper.class); - recordsExcels.forEach(accidentRecord -> mapper.save(new AccidentRecords(accidentRecord, dictionariesService))); + for (int i = 0; i < recordsExcels.size(); i++) { + mapper.save(new AccidentRecords(recordsExcels.get(i), dictionariesService)); + if ((i + 1) % 300 == 0 || i == recordsExcels.size() - 1) { + sqlSession.flushStatements(); + } + } sqlSession.commit(); + } catch (RuntimeException e) { + if (sqlSession != null) { + sqlSession.rollback(); + } + log.error("导入excel失败", e); + throw e; } catch (Exception e) { if (sqlSession != null) { sqlSession.rollback();