From d168f7db6c2abd05fd5916b3354c64e1f55c8fa3 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Thu, 19 May 2022 15:26:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B1=85=E6=B0=91=E4=BF=A1=E6=81=AF=E5=AF=BC?= =?UTF-8?q?=E5=85=A5-=E8=99=9A=E6=8B=9Fsheet=E7=9A=84=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=E7=94=B1=E6=89=B9=E9=87=8F=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E5=8D=95=E6=9D=A1=EF=BC=8C=E9=98=B2=E6=AD=A2OOM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IcResiVirtualSheetImportListener.java | 19 +++--- .../impl/IcResiUserImportServiceImpl.java | 63 +++++++++++-------- 2 files changed, 47 insertions(+), 35 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcResiVirtualSheetImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcResiVirtualSheetImportListener.java index 79ddbea5a9..ce17a6610e 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcResiVirtualSheetImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcResiVirtualSheetImportListener.java @@ -4,11 +4,13 @@ import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.epmet.enums.IcResiUserTableEnum; import com.epmet.service.impl.IcResiUserImportServiceImpl; +import lombok.extern.slf4j.Slf4j; import java.util.ArrayList; import java.util.List; import java.util.Map; +@Slf4j public class IcResiVirtualSheetImportListener extends AnalysisEventListener> { private IcResiUserImportServiceImpl importService; @@ -18,7 +20,7 @@ public class IcResiVirtualSheetImportListener extends AnalysisEventListener> resiInfo = new ArrayList<>(); + //private List> resiInfo = new ArrayList<>(); public IcResiVirtualSheetImportListener(IcResiUserImportServiceImpl importService, IcResiUserTableEnum sheetEnumObject) { this.importService = importService; @@ -28,17 +30,18 @@ public class IcResiVirtualSheetImportListener extends AnalysisEventListener data, AnalysisContext context) { if (data != null && data.size() > 0) { - resiInfo.add(data); + //resiInfo.add(data); + importService.singlePersistResiVirtualSheetExtraInfo(data, sheetEnumObject); } } @Override public void doAfterAllAnalysed(AnalysisContext context) { - try { - importService.persistIcResiVirtualSheetExtraInfo(resiInfo, sheetEnumObject); - } finally { - // 清空数据 - resiInfo.clear(); - } + //try { + // importService.batchPersistIcResiVirtualSheetExtraInfo(resiInfo, sheetEnumObject); + //} finally { + // // 清空数据 + // resiInfo.clear(); + //} } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index b9e5f9c098..42fd297d3f 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -736,38 +736,47 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res * 虚拟(不对应实际的数据库表)sheet的数据导入持久化 * @param sheetEnumObject */ - public void persistIcResiVirtualSheetExtraInfo(List> resiInfo, IcResiUserTableEnum sheetEnumObject) { - for (Map columnAndValues : resiInfo) { - String idCard = columnAndValues.get(ID_CARD_COLUMN_NO); - try { - Map resiInfoMap = icResiUserDao.selectResiInfoMap(idCard, null); + public void batchPersistIcResiVirtualSheetExtraInfo(List> resiInfos, IcResiUserTableEnum sheetEnumObject) { + for (Map columnAndValues : resiInfos) { + singlePersistResiVirtualSheetExtraInfo(columnAndValues, sheetEnumObject); + } + } - if (resiInfoMap == null || resiInfoMap.size() == 0) { - throw new RenException(EpmetErrorCode.RESI_NOT_FOUND.getCode(), String.format("身份证号为【%s】的居民信息未找到,请确认该居民信息存在", idCard)); - } - String icResiId = resiInfoMap.get("ID"); + /** + * 单条处理 虚拟(不对应实际的数据库表)sheet的数据导入持久化 + * @param columnAndValues + * @param sheetEnumObject + */ + public void singlePersistResiVirtualSheetExtraInfo(Map columnAndValues, IcResiUserTableEnum sheetEnumObject) { + String idCard = columnAndValues.get(ID_CARD_COLUMN_NO); + try { + Map resiInfoMap = icResiUserDao.selectResiInfoMap(idCard, null); - // 更新主表中该居民类型字段为true - updateMainTableResiTypeFlag(sheetEnumObject, icResiId); + if (resiInfoMap == null || resiInfoMap.size() == 0) { + throw new RenException(EpmetErrorCode.RESI_NOT_FOUND.getCode(), String.format("身份证号为【%s】的居民信息未找到,请确认该居民信息存在", idCard)); + } + String icResiId = resiInfoMap.get("ID"); - // 保存类别变更信息 - saveSubTableInfoToCategoryChangedResiCache(icResiId, sheetEnumObject.getMainTableFlagColumnName(), resiInfoMap); - } catch (Exception e) { - String errorMsg; - if (e instanceof RenException || e instanceof EpmetException) { - errorMsg = e.getMessage(); - } else { - errorMsg = "未知系统错误"; - log.error(ExceptionUtils.getErrorStackTrace(e)); - } + // 更新主表中该居民类型字段为true + updateMainTableResiTypeFlag(sheetEnumObject, icResiId); - ErrorRow errorRow = new ErrorRow(); - errorRow.setName(columnAndValues.get("NAME")); - errorRow.setIdCard(idCard); - errorRow.setErrorInfo(errorMsg); - errorRow.setTableName(sheetEnumObject.getTableName()); - errorRows.get().get(sheetEnumObject.getTableName()).add(errorRow); + // 保存类别变更信息 + saveSubTableInfoToCategoryChangedResiCache(icResiId, sheetEnumObject.getMainTableFlagColumnName(), resiInfoMap); + } catch (Exception e) { + String errorMsg; + if (e instanceof RenException || e instanceof EpmetException) { + errorMsg = e.getMessage(); + } else { + errorMsg = "未知系统错误"; + log.error(ExceptionUtils.getErrorStackTrace(e)); } + + ErrorRow errorRow = new ErrorRow(); + errorRow.setName(columnAndValues.get("NAME")); + errorRow.setIdCard(idCard); + errorRow.setErrorInfo(errorMsg); + errorRow.setTableName(sheetEnumObject.getTableName()); + errorRows.get().get(sheetEnumObject.getTableName()).add(errorRow); } }