Browse Source

Merge remote-tracking branch 'origin/master'

dev
jianjun 3 years ago
parent
commit
2db2dff72f
  1. 19
      epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcResiVirtualSheetImportListener.java
  2. 63
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java

19
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.alibaba.excel.event.AnalysisEventListener;
import com.epmet.enums.IcResiUserTableEnum; import com.epmet.enums.IcResiUserTableEnum;
import com.epmet.service.impl.IcResiUserImportServiceImpl; import com.epmet.service.impl.IcResiUserImportServiceImpl;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@Slf4j
public class IcResiVirtualSheetImportListener extends AnalysisEventListener<Map<String, String>> { public class IcResiVirtualSheetImportListener extends AnalysisEventListener<Map<String, String>> {
private IcResiUserImportServiceImpl importService; private IcResiUserImportServiceImpl importService;
@ -18,7 +20,7 @@ public class IcResiVirtualSheetImportListener extends AnalysisEventListener<Map<
/** /**
* 身份证号列表 * 身份证号列表
*/ */
private List<Map<String, String>> resiInfo = new ArrayList<>(); //private List<Map<String, String>> resiInfo = new ArrayList<>();
public IcResiVirtualSheetImportListener(IcResiUserImportServiceImpl importService, IcResiUserTableEnum sheetEnumObject) { public IcResiVirtualSheetImportListener(IcResiUserImportServiceImpl importService, IcResiUserTableEnum sheetEnumObject) {
this.importService = importService; this.importService = importService;
@ -28,17 +30,18 @@ public class IcResiVirtualSheetImportListener extends AnalysisEventListener<Map<
@Override @Override
public void invoke(Map<String, String> data, AnalysisContext context) { public void invoke(Map<String, String> data, AnalysisContext context) {
if (data != null && data.size() > 0) { if (data != null && data.size() > 0) {
resiInfo.add(data); //resiInfo.add(data);
importService.singlePersistResiVirtualSheetExtraInfo(data, sheetEnumObject);
} }
} }
@Override @Override
public void doAfterAllAnalysed(AnalysisContext context) { public void doAfterAllAnalysed(AnalysisContext context) {
try { //try {
importService.persistIcResiVirtualSheetExtraInfo(resiInfo, sheetEnumObject); // importService.batchPersistIcResiVirtualSheetExtraInfo(resiInfo, sheetEnumObject);
} finally { //} finally {
// 清空数据 // // 清空数据
resiInfo.clear(); // resiInfo.clear();
} //}
} }
} }

63
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的数据导入持久化 * 虚拟(不对应实际的数据库表)sheet的数据导入持久化
* @param sheetEnumObject * @param sheetEnumObject
*/ */
public void persistIcResiVirtualSheetExtraInfo(List<Map<String, String>> resiInfo, IcResiUserTableEnum sheetEnumObject) { public void batchPersistIcResiVirtualSheetExtraInfo(List<Map<String, String>> resiInfos, IcResiUserTableEnum sheetEnumObject) {
for (Map<String, String> columnAndValues : resiInfo) { for (Map<String, String> columnAndValues : resiInfos) {
String idCard = columnAndValues.get(ID_CARD_COLUMN_NO); singlePersistResiVirtualSheetExtraInfo(columnAndValues, sheetEnumObject);
try { }
Map<String, String> resiInfoMap = icResiUserDao.selectResiInfoMap(idCard, null); }
if (resiInfoMap == null || resiInfoMap.size() == 0) { /**
throw new RenException(EpmetErrorCode.RESI_NOT_FOUND.getCode(), String.format("身份证号为【%s】的居民信息未找到,请确认该居民信息存在", idCard)); * 单条处理 虚拟(不对应实际的数据库表)sheet的数据导入持久化
} * @param columnAndValues
String icResiId = resiInfoMap.get("ID"); * @param sheetEnumObject
*/
public void singlePersistResiVirtualSheetExtraInfo(Map<String, String> columnAndValues, IcResiUserTableEnum sheetEnumObject) {
String idCard = columnAndValues.get(ID_CARD_COLUMN_NO);
try {
Map<String, String> resiInfoMap = icResiUserDao.selectResiInfoMap(idCard, null);
// 更新主表中该居民类型字段为true if (resiInfoMap == null || resiInfoMap.size() == 0) {
updateMainTableResiTypeFlag(sheetEnumObject, icResiId); throw new RenException(EpmetErrorCode.RESI_NOT_FOUND.getCode(), String.format("身份证号为【%s】的居民信息未找到,请确认该居民信息存在", idCard));
}
String icResiId = resiInfoMap.get("ID");
// 保存类别变更信息 // 更新主表中该居民类型字段为true
saveSubTableInfoToCategoryChangedResiCache(icResiId, sheetEnumObject.getMainTableFlagColumnName(), resiInfoMap); updateMainTableResiTypeFlag(sheetEnumObject, icResiId);
} 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")); saveSubTableInfoToCategoryChangedResiCache(icResiId, sheetEnumObject.getMainTableFlagColumnName(), resiInfoMap);
errorRow.setIdCard(idCard); } catch (Exception e) {
errorRow.setErrorInfo(errorMsg); String errorMsg;
errorRow.setTableName(sheetEnumObject.getTableName()); if (e instanceof RenException || e instanceof EpmetException) {
errorRows.get().get(sheetEnumObject.getTableName()).add(errorRow); 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);
} }
} }

Loading…
Cancel
Save