|
|
@ -232,7 +232,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
|
|
|
|
// 上传主表信息
|
|
|
|
importIcResiBaseInfoFromExcel(formItemList,excelPathName, IcResiUserTableEnum.IC_RESI_USER.getSheetNo(), IcResiUserTableEnum.IC_RESI_USER.getHeadRowNo(), |
|
|
|
currUserAgencyId, agencyInfo.getPids(), loginUserId, IcResiUserTableEnum.IC_RESI_USER.getTableName()); |
|
|
|
currUserAgencyId, agencyInfo.getPids(), loginUserId, IcResiUserTableEnum.IC_RESI_USER.getTableName(), customerId); |
|
|
|
|
|
|
|
// 上传附表信息
|
|
|
|
for (IcResiUserTableEnum sheet : IcResiUserTableEnum.values()) { |
|
|
@ -320,43 +320,12 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
* @param currentUserId |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private Object importIcResiBaseInfoFromExcel(List<FormItemResult> formItemList, String excelPathName, int sheetNo, int headRowNumber, String currUserAgencyId, String currUserAgencyPids, String currentUserId, |
|
|
|
String tableName) { |
|
|
|
DynamicEasyExcelListener readListener = new DynamicEasyExcelListener(); |
|
|
|
//EasyExcelFactory.read(new File(excelPathName)).registerReadListener(readListener).headRowNumber(headRowNumber).sheet(sheetNo).doRead();
|
|
|
|
EasyExcel.read(new File(excelPathName)).registerReadListener(readListener).headRowNumber(headRowNumber).sheet(sheetNo).doRead(); |
|
|
|
|
|
|
|
List<Map<Integer, String>> headList = readListener.getHeadList(); |
|
|
|
List<Map<Integer, String>> dataList = readListener.getDataList(); |
|
|
|
|
|
|
|
// 合并多级表头到一个list中,key为列序号
|
|
|
|
Map<Integer, List<String>> headers = mergeMultiLevelHeadLabels(headList); |
|
|
|
|
|
|
|
// 清洗表头数据,通过items剔除,并且得到options
|
|
|
|
Map<Integer, String> abandonedHeaders = removeAndGetOptionsFromHeaders(headers, formItemList); |
|
|
|
|
|
|
|
// 交换表头信息,以label连起来的string作为key,列号的列表作为value
|
|
|
|
HashMap<String, List<Integer>> combinedHeaders = exchangeKeyAndValueOfHeaders(headers); |
|
|
|
|
|
|
|
// 得到客户配置item数据。<"兴趣爱好:兴趣特长", item对象>
|
|
|
|
Map<String, FormItemResult> customizedLabelCompbinedItemsMap = formItemList.stream().collect( |
|
|
|
Collectors.toMap(formItem -> { |
|
|
|
String groupLabel = formItem.getGroupLabel(); |
|
|
|
String label = formItem.getLabel(); |
|
|
|
if (StringUtils.isNotBlank(groupLabel)) { |
|
|
|
return groupLabel.concat(":").concat(label); |
|
|
|
} else { |
|
|
|
return label; |
|
|
|
} |
|
|
|
}, formItem -> formItem) |
|
|
|
); |
|
|
|
|
|
|
|
Map<String, ColumnWrapper> itemIdAndColumnWrapper = convertExcelHeaders2DBColumnWrappers(customizedLabelCompbinedItemsMap, combinedHeaders); |
|
|
|
|
|
|
|
// 持久化
|
|
|
|
persistIcResiBaseInfo(itemIdAndColumnWrapper, dataList, currUserAgencyId, abandonedHeaders, currUserAgencyPids, currentUserId, tableName); |
|
|
|
private void importIcResiBaseInfoFromExcel(List<FormItemResult> formItemList, String excelPathName, int sheetNo, int headRowNumber, String currUserAgencyId, String currUserAgencyPids, String currentUserId, |
|
|
|
String tableName, String customerId) { |
|
|
|
|
|
|
|
return headers; |
|
|
|
DynamicEasyExcelListener readListener = new DynamicEasyExcelListener(this, customerId, currentUserId, currUserAgencyId, currUserAgencyPids, |
|
|
|
true, tableName, formItemList, headRowNumber); |
|
|
|
EasyExcel.read(new File(excelPathName)).registerReadListener(readListener).headRowNumber(headRowNumber).sheet(sheetNo).doRead(); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -371,34 +340,12 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
* @param targetTableName 要插入哪一个表 |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private Object importIcResiExtraInfoFromExcel(List<FormItemResult> formItemList, String excelPathName, int sheetNo, int headRowNumber, String currUserAgencyId, String currentUserId, |
|
|
|
private void importIcResiExtraInfoFromExcel(List<FormItemResult> formItemList, String excelPathName, int sheetNo, int headRowNumber, String currUserAgencyId, String currentUserId, |
|
|
|
String targetTableName, String customerId) { |
|
|
|
DynamicEasyExcelListener readListener = new DynamicEasyExcelListener(); |
|
|
|
EasyExcelFactory.read(new File(excelPathName)).registerReadListener(readListener).headRowNumber(headRowNumber).sheet(sheetNo).doRead(); |
|
|
|
|
|
|
|
List<Map<Integer, String>> headList = readListener.getHeadList(); |
|
|
|
List<Map<Integer, String>> dataList = readListener.getDataList(); |
|
|
|
|
|
|
|
Map<Integer, List<String>> headers = mergeMultiLevelHeadLabels(headList); |
|
|
|
|
|
|
|
Map<Integer, String> abandonedHeaders = removeAndGetOptionsFromHeaders(headers, formItemList); |
|
|
|
|
|
|
|
HashMap<String, List<Integer>> combinedHeaders = exchangeKeyAndValueOfHeaders(headers); |
|
|
|
|
|
|
|
Map<String, FormItemResult> formItemMap = formItemList.stream().collect( |
|
|
|
Collectors.toMap(formItem -> { |
|
|
|
String groupLabel = formItem.getGroupLabel(); |
|
|
|
String label = formItem.getLabel(); |
|
|
|
if (StringUtils.isNotBlank(groupLabel)) { |
|
|
|
return groupLabel.concat(":").concat(label); |
|
|
|
} else { |
|
|
|
return label; |
|
|
|
} |
|
|
|
}, formItem -> formItem) |
|
|
|
); |
|
|
|
Map<String, ColumnWrapper> headerColumnWrapper = convertExcelHeaders2DBColumnWrappers(formItemMap, combinedHeaders); |
|
|
|
persistIcResiExtraInfo(headerColumnWrapper, dataList, currUserAgencyId, abandonedHeaders, currentUserId, targetTableName, customerId); |
|
|
|
return headerColumnWrapper; |
|
|
|
DynamicEasyExcelListener readListener = new DynamicEasyExcelListener(this, customerId, currentUserId, currUserAgencyId, null, |
|
|
|
false, targetTableName, formItemList, headRowNumber); |
|
|
|
EasyExcelFactory.read(new File(excelPathName)).registerReadListener(readListener).headRowNumber(headRowNumber).sheet(sheetNo).doRead(); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -408,7 +355,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
* @param currUserAgencyId 当前用户的组织id |
|
|
|
* @param checkBoxOptionColumnIdxAndLabel 复选框的列号&label中文 |
|
|
|
*/ |
|
|
|
private void persistIcResiBaseInfo(Map<String, ColumnWrapper> itemIdAndColumnWrapper, List<Map<Integer, String>> dataRows, |
|
|
|
public void persistIcResiBaseInfo(Map<String, ColumnWrapper> itemIdAndColumnWrapper, List<Map<Integer, String>> dataRows, |
|
|
|
String currUserAgencyId, Map<Integer, String> checkBoxOptionColumnIdxAndLabel, |
|
|
|
String currUserAgencyPids, String currentUserId, String tableName) { |
|
|
|
|
|
|
@ -517,7 +464,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
* @param checkBoxOptionColumnIdxAndLabel 复选框的列号&label中文 |
|
|
|
* @param targetTableName 要插入到哪一个表 |
|
|
|
*/ |
|
|
|
private void persistIcResiExtraInfo(Map<String, ColumnWrapper> headerColumnWrapper, List<Map<Integer, String>> dataRows, |
|
|
|
public void persistIcResiExtraInfo(Map<String, ColumnWrapper> headerColumnWrapper, List<Map<Integer, String>> dataRows, |
|
|
|
String currUserAgencyId, Map<Integer, String> checkBoxOptionColumnIdxAndLabel, |
|
|
|
String currentUserId, String targetTableName, String customerId) { |
|
|
|
|
|
|
@ -709,7 +656,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
* @author wxz |
|
|
|
* @date 2021.10.28 21:27:18 |
|
|
|
*/ |
|
|
|
private HashMap<String, List<Integer>> exchangeKeyAndValueOfHeaders(Map<Integer, List<String>> headers) { |
|
|
|
public HashMap<String, List<Integer>> exchangeKeyAndValueOfHeaders(Map<Integer, List<String>> headers) { |
|
|
|
HashMap<String, List<Integer>> itemAndColIndexs = new LinkedHashMap<>(); |
|
|
|
|
|
|
|
headers.forEach((k, v) -> { |
|
|
@ -734,7 +681,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
* @author wxz |
|
|
|
* @date 2021.10.28 21:07:12 |
|
|
|
*/ |
|
|
|
private Map<Integer, String> removeAndGetOptionsFromHeaders(Map<Integer, List<String>> headers, List<FormItemResult> items) { |
|
|
|
public Map<Integer, String> removeAndGetOptionsFromHeaders(Map<Integer, List<String>> headers, List<FormItemResult> items) { |
|
|
|
List<String> itemLabels = items.stream().map(i -> i.getLabel()).collect(Collectors.toList()); |
|
|
|
Map<Integer, String> abandonedOptions = new HashMap<>(); |
|
|
|
for (Map.Entry<Integer, List<String>> entry:headers.entrySet()) { |
|
|
@ -765,7 +712,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
* value:列号组成的列表(例如[1,2,3]) |
|
|
|
* @return key:itemId;value:columnWrapper |
|
|
|
*/ |
|
|
|
private Map<String, ColumnWrapper> convertExcelHeaders2DBColumnWrappers(Map<String, FormItemResult> customizedLabelCompbinedItemsMap, Map<String, List<Integer>> combinedHeaders) { |
|
|
|
public Map<String, ColumnWrapper> convertExcelHeaders2DBColumnWrappers(Map<String, FormItemResult> customizedLabelCompbinedItemsMap, Map<String, List<Integer>> combinedHeaders) { |
|
|
|
|
|
|
|
// HashMap<String, List<ColumnWrapper>> tables = new HashMap<>();
|
|
|
|
Map<String, ColumnWrapper> columns = new LinkedHashMap<>(combinedHeaders.size()); |
|
|
@ -835,7 +782,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
* @author wxz |
|
|
|
* @date 2021.10.27 16:17:34 |
|
|
|
*/ |
|
|
|
private Map<Integer, List<String>> mergeMultiLevelHeadLabels(List<Map<Integer, String>> headList) { |
|
|
|
public Map<Integer, List<String>> mergeMultiLevelHeadLabels(List<Map<Integer, String>> headList) { |
|
|
|
|
|
|
|
Map<Integer, String> lastNotNullHeads = new LinkedHashMap<>(); |
|
|
|
|
|
|
|