|
|
@ -13,23 +13,20 @@ import com.epmet.commons.tools.exception.ExceptionUtils; |
|
|
|
import com.epmet.commons.tools.exception.RenException; |
|
|
|
import com.epmet.commons.tools.feign.ResultDataResolver; |
|
|
|
import com.epmet.commons.tools.security.user.LoginUserUtil; |
|
|
|
import com.epmet.commons.tools.utils.Result; |
|
|
|
import com.epmet.dao.IcResiUserDao; |
|
|
|
import com.epmet.dto.*; |
|
|
|
import com.epmet.dto.form.AgencyIdFormDTO; |
|
|
|
import com.epmet.dto.form.CustomerFormQueryDTO; |
|
|
|
import com.epmet.dto.form.HouseFormDTO; |
|
|
|
import com.epmet.dto.form.LoginUserDetailsFormDTO; |
|
|
|
import com.epmet.dto.result.FormItemResult; |
|
|
|
import com.epmet.dto.result.LoginUserDetailsResultDTO; |
|
|
|
import com.epmet.dto.result.OptionDTO; |
|
|
|
import com.epmet.entity.IcResiUserEntity; |
|
|
|
import com.epmet.enums.IcResiUserTableEnums; |
|
|
|
import com.epmet.enums.IcResiUserTableEnum; |
|
|
|
import com.epmet.excel.handler.DynamicEasyExcelListener; |
|
|
|
import com.epmet.feign.EpmetAdminOpenFeignClient; |
|
|
|
import com.epmet.feign.EpmetUserOpenFeignClient; |
|
|
|
import com.epmet.feign.GovOrgOpenFeignClient; |
|
|
|
import com.epmet.feign.OperCustomizeOpenFeignClient; |
|
|
|
import com.epmet.service.IcResiUserImportService; |
|
|
|
import lombok.Data; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
@ -61,9 +58,6 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
public static final ThreadLocal<Map<String, List<ErrorRow>>> errorRows = new ThreadLocal<>(); |
|
|
|
public static final ThreadLocal<Map<String, List<SkipedRow>>> skipedRows = new ThreadLocal<>(); |
|
|
|
|
|
|
|
// 导入数字赋能平台居民信息form_code
|
|
|
|
public static final String IMPORT_IC_RESI_FORM_CODE = "resi_base_info"; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private LoginUserUtil loginUserUtil; |
|
|
|
|
|
|
@ -76,9 +70,6 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
@Autowired |
|
|
|
private GovOrgOpenFeignClient govOrgOpenFeignClient; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private OperCustomizeOpenFeignClient operCustomizeOpenFeignClient; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private IcResiUserDao icResiUserDao; |
|
|
|
|
|
|
@ -164,7 +155,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public void importIcResiInfoFromExcel(String excelPathName, HttpServletResponse response) { |
|
|
|
public void importIcResiInfoFromExcel(List<FormItemResult> formItemList, String excelPathName, HttpServletResponse response) { |
|
|
|
String loginUserId = loginUserUtil.getLoginUserId(); |
|
|
|
String loginUserApp = loginUserUtil.getLoginUserApp(); |
|
|
|
String loginUserClient = loginUserUtil.getLoginUserClient(); |
|
|
@ -185,17 +176,17 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
initThreadLocalRowsStorage(); |
|
|
|
|
|
|
|
// 上传主表信息
|
|
|
|
importIcResiBaseInfoFromExcel(excelPathName, IcResiUserTableEnums.IC_RESI_USER.getSheetNo(), IcResiUserTableEnums.IC_RESI_USER.getHeadRowNo(), |
|
|
|
currUserAgencyId, agencyInfo.getPids(), loginUserId, IcResiUserTableEnums.IC_RESI_USER.getTableName()); |
|
|
|
importIcResiBaseInfoFromExcel(formItemList,excelPathName, IcResiUserTableEnum.IC_RESI_USER.getSheetNo(), IcResiUserTableEnum.IC_RESI_USER.getHeadRowNo(), |
|
|
|
currUserAgencyId, agencyInfo.getPids(), loginUserId, IcResiUserTableEnum.IC_RESI_USER.getTableName()); |
|
|
|
|
|
|
|
// 上传附表信息
|
|
|
|
for (IcResiUserTableEnums sheet : IcResiUserTableEnums.values()) { |
|
|
|
if (sheet == IcResiUserTableEnums.IC_RESI_USER) { |
|
|
|
for (IcResiUserTableEnum sheet : IcResiUserTableEnum.values()) { |
|
|
|
if (sheet == IcResiUserTableEnum.IC_RESI_USER) { |
|
|
|
continue; |
|
|
|
} |
|
|
|
|
|
|
|
try { |
|
|
|
importIcResiExtraInfoFromExcel(excelPathName, sheet.getSheetNo(), sheet.getHeadRowNo(), currUserAgencyId, loginUserId, sheet.getTableName(), customerId); |
|
|
|
importIcResiExtraInfoFromExcel(formItemList, excelPathName, sheet.getSheetNo(), sheet.getHeadRowNo(), currUserAgencyId, loginUserId, sheet.getTableName(), customerId); |
|
|
|
} catch (Exception e) { |
|
|
|
String errorMsg = ExceptionUtils.getErrorStackTrace(e); |
|
|
|
log.error("导入IC居民附加信息【{}】错误:{}", sheet.getTableComment(), errorMsg); |
|
|
@ -228,13 +219,13 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
*/ |
|
|
|
private void initThreadLocalRowsStorage() { |
|
|
|
Map<String, List<SkipedRow>> skipedRowsMap = new LinkedHashMap<>(); |
|
|
|
for (IcResiUserTableEnums e : IcResiUserTableEnums.values()) { |
|
|
|
for (IcResiUserTableEnum e : IcResiUserTableEnum.values()) { |
|
|
|
skipedRowsMap.put(e.getTableName(), new LinkedList<>()); |
|
|
|
} |
|
|
|
skipedRows.set(skipedRowsMap); |
|
|
|
|
|
|
|
Map<String, List<ErrorRow>> errorRowsMap = new LinkedHashMap<>(); |
|
|
|
for (IcResiUserTableEnums e : IcResiUserTableEnums.values()) { |
|
|
|
for (IcResiUserTableEnum e : IcResiUserTableEnum.values()) { |
|
|
|
errorRowsMap.put(e.getTableName(), new LinkedList<>()); |
|
|
|
} |
|
|
|
errorRows.set(errorRowsMap); |
|
|
@ -242,6 +233,8 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
|
|
|
|
/** |
|
|
|
* excel导入居民基本信息 |
|
|
|
* |
|
|
|
* @param formItemList |
|
|
|
* @param sheetNo |
|
|
|
* @param headRowNumber |
|
|
|
* @param currUserAgencyId |
|
|
@ -249,7 +242,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
* @param currentUserId |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private Object importIcResiBaseInfoFromExcel(String excelPathName, int sheetNo, int headRowNumber, String currUserAgencyId, String currUserAgencyPids, String currentUserId, |
|
|
|
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();
|
|
|
@ -260,17 +253,14 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
|
|
|
|
Map<Integer, List<String>> headers = mergeHead(headList); |
|
|
|
|
|
|
|
// 查询form相关信息
|
|
|
|
List<FormItemResult> customerItems = listFormItems(IMPORT_IC_RESI_FORM_CODE); |
|
|
|
|
|
|
|
// 清洗表头数据
|
|
|
|
Map<Integer, String> abandonedHeaders = washHeaders(headers, customerItems); |
|
|
|
Map<Integer, String> abandonedHeaders = washHeaders(headers, formItemList); |
|
|
|
|
|
|
|
//合并多级表头
|
|
|
|
HashMap<String, List<Integer>> combinedHeaders = combineHeaders(headers); |
|
|
|
|
|
|
|
// 得到客户配置item数据
|
|
|
|
Map<String, FormItemResult> formItemMap = customerItems.stream().collect( |
|
|
|
Map<String, FormItemResult> formItemMap = formItemList.stream().collect( |
|
|
|
Collectors.toMap(formItem -> { |
|
|
|
String groupLabel = formItem.getGroupLabel(); |
|
|
|
String label = formItem.getLabel(); |
|
|
@ -291,6 +281,8 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
|
|
|
|
/** |
|
|
|
* excel导入居民附加信息 |
|
|
|
* |
|
|
|
* @param formItemList |
|
|
|
* @param excelPathName |
|
|
|
* @param sheetNo |
|
|
|
* @param headRowNumber |
|
|
@ -299,7 +291,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
* @param targetTableName 要插入哪一个表 |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private Object importIcResiExtraInfoFromExcel(String excelPathName, int sheetNo, int headRowNumber, String currUserAgencyId, String currentUserId, |
|
|
|
private Object 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(); |
|
|
@ -309,17 +301,14 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
|
|
|
|
Map<Integer, List<String>> headers = mergeHead(headList); |
|
|
|
|
|
|
|
// 查询form相关信息
|
|
|
|
List<FormItemResult> customerItems = listFormItems(IMPORT_IC_RESI_FORM_CODE); |
|
|
|
|
|
|
|
// 清洗表头数据
|
|
|
|
Map<Integer, String> abandonedHeaders = washHeaders(headers, customerItems); |
|
|
|
Map<Integer, String> abandonedHeaders = washHeaders(headers, formItemList); |
|
|
|
|
|
|
|
//合并多级表头
|
|
|
|
HashMap<String, List<Integer>> combinedHeaders = combineHeaders(headers); |
|
|
|
|
|
|
|
// 得到客户配置item数据
|
|
|
|
Map<String, FormItemResult> formItemMap = customerItems.stream().collect( |
|
|
|
Map<String, FormItemResult> formItemMap = formItemList.stream().collect( |
|
|
|
Collectors.toMap(formItem -> { |
|
|
|
String groupLabel = formItem.getGroupLabel(); |
|
|
|
String label = formItem.getLabel(); |
|
|
@ -364,7 +353,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
|
|
|
|
columnAndValues.put("AGENCY_ID", currUserAgencyId); |
|
|
|
columnAndValues.put("PIDS", currUserAgencyPids); |
|
|
|
columnAndValues.put("CUSTOMER_ID", loginUserUtil.getCurrentCustomerId()); |
|
|
|
columnAndValues.put("CUSTOMER_ID", loginUserUtil.getLoginUserCustomerId()); |
|
|
|
|
|
|
|
columnAndValues.put("UPDATED_BY", currentUserId); |
|
|
|
|
|
|
@ -407,7 +396,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
errorRow.setName(columnAndValues.get("NAME")); |
|
|
|
errorRow.setErrorInfo(errorMsg); |
|
|
|
errorRow.setTableName(tableName); |
|
|
|
errorRows.get().get(IcResiUserTableEnums.IC_RESI_USER.getTableName()).add(errorRow); |
|
|
|
errorRows.get().get(IcResiUserTableEnum.IC_RESI_USER.getTableName()).add(errorRow); |
|
|
|
} finally { |
|
|
|
columnAndValues.clear(); |
|
|
|
} |
|
|
@ -465,14 +454,14 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
//}
|
|
|
|
|
|
|
|
columnAndValues.put("IC_RESI_USER", icResiId); |
|
|
|
columnAndValues.put("CUSTOMER_ID", loginUserUtil.getCurrentCustomerId()); |
|
|
|
columnAndValues.put("CUSTOMER_ID", loginUserUtil.getLoginUserCustomerId()); |
|
|
|
columnAndValues.put("UPDATED_BY", currentUserId); |
|
|
|
|
|
|
|
// 移除excel中存在,但是数据库表中不存在的无效列,方式sql语法错误
|
|
|
|
columnAndValues = removeNeedlessColumns(columnAndValues); |
|
|
|
|
|
|
|
// 更新主表的人员类型及更新时间
|
|
|
|
updateMainTableResiTypeFlag(Objects.requireNonNull(IcResiUserTableEnums.getObjectByTableName(targetTableName)), icResiId); |
|
|
|
updateMainTableResiTypeFlag(Objects.requireNonNull(IcResiUserTableEnum.getObjectByTableName(targetTableName)), icResiId); |
|
|
|
|
|
|
|
// 验证附加信息是否存在
|
|
|
|
List<Map<String, Object>> subInfos = icResiUserDao.selectSubTableRecords(customerId, icResiId, targetTableName); |
|
|
@ -597,18 +586,6 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 根据formCode查询该form的item列表 |
|
|
|
* @param formCode |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private List<FormItemResult> listFormItems(String formCode) { |
|
|
|
CustomerFormQueryDTO form = new CustomerFormQueryDTO(); |
|
|
|
form.setFormCode(formCode); |
|
|
|
Result<List<FormItemResult>> result = operCustomizeOpenFeignClient.listItems(form); |
|
|
|
return getResultDataOrThrowsException(result, ServiceConstant.OPER_CUSTOMIZE_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【居民信息excel导入】查询表单相关信息失败"); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @description 合并头 |
|
|
|
* |
|
|
@ -904,7 +881,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
* @param icResiUserTableEnum |
|
|
|
* @param resiUserId |
|
|
|
*/ |
|
|
|
private void updateMainTableResiTypeFlag(IcResiUserTableEnums icResiUserTableEnum, String resiUserId) { |
|
|
|
private void updateMainTableResiTypeFlag(IcResiUserTableEnum icResiUserTableEnum, String resiUserId) { |
|
|
|
HashMap<String, Boolean> map = new HashMap<>(); |
|
|
|
map.put(icResiUserTableEnum.getMainTableFlagColumnName(), true); |
|
|
|
icResiUserDao.upTable("ic_resi_user", resiUserId, map); |
|
|
@ -928,7 +905,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res |
|
|
|
list.addAll(entry.getValue()); |
|
|
|
} |
|
|
|
|
|
|
|
list.forEach(row -> {row.setSheetName(IcResiUserTableEnums.getObjectByTableName(row.tableName).getTableComment());}); |
|
|
|
list.forEach(row -> {row.setSheetName(IcResiUserTableEnum.getObjectByTableName(row.tableName).getTableComment());}); |
|
|
|
|
|
|
|
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("导入失败的列表","导入失败列表(没有数据说明全部成功)"), |
|
|
|
ErrorRow.class, list); |
|
|
|