Browse Source

代码逻辑优化调整1

dev
jianjun 4 years ago
parent
commit
4a52bf11c8
  1. 13
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/user/LoginUserUtil.java
  2. 2
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java
  3. 94
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java
  4. 7
      epmet-user/epmet-user-server/src/main/java/com/epmet/enums/IcResiUserTableEnum.java
  5. 6
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java
  6. 9
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java
  7. 73
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java
  8. 26
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java

13
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/user/LoginUserUtil.java

@ -6,7 +6,6 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
import java.util.List; import java.util.List;
/** /**
@ -35,18 +34,6 @@ public class LoginUserUtil {
return userId; return userId;
} }
/**
* 查询登录用户的客户Id
* @return
*/
public String getCurrentCustomerId() {
HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
if (request == null) {
return null;
}
return request.getHeader(AppClientConstant.CUSTOMER_ID);
}
/** /**
* 登录用户的App头信息 * 登录用户的App头信息
* @return * @return

2
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java

@ -380,7 +380,7 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
* @Date 2020/3/30 15:07 * @Date 2020/3/30 15:07
**/ **/
private Result<UserResiInfoResultDTO> getGroupLeaderUserInfo(String groupId) { private Result<UserResiInfoResultDTO> getGroupLeaderUserInfo(String groupId) {
String customerId = loginUserUtil.getCurrentCustomerId(); String customerId = loginUserUtil.getLoginUserCustomerId();
//群主名称需要调用feign查询 //群主名称需要调用feign查询
// ResiGroupEntity resiGroupEntity = baseDao.selectById(groupId); // ResiGroupEntity resiGroupEntity = baseDao.selectById(groupId);
// if (null == resiGroupEntity) { // if (null == resiGroupEntity) {

94
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java

@ -46,7 +46,7 @@ import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.IcResiUserDTO; import com.epmet.dto.IcResiUserDTO;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
import com.epmet.dto.result.*; import com.epmet.dto.result.*;
import com.epmet.enums.IcResiUserTableEnums; import com.epmet.enums.IcResiUserTableEnum;
import com.epmet.feign.OperCustomizeOpenFeignClient; import com.epmet.feign.OperCustomizeOpenFeignClient;
import com.epmet.feign.OssFeignClient; import com.epmet.feign.OssFeignClient;
import com.epmet.service.IcResiUserImportService; import com.epmet.service.IcResiUserImportService;
@ -70,6 +70,7 @@ import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
/** /**
@ -83,6 +84,8 @@ import java.util.concurrent.atomic.AtomicInteger;
@RequestMapping("icresiuser") @RequestMapping("icresiuser")
public class IcResiUserController { public class IcResiUserController {
private static final String BASE_TABLE_NAME = "ic_resi_user"; private static final String BASE_TABLE_NAME = "ic_resi_user";
//todo 枚举吧
private static final String IC_RESI_FORM_CODE = "resi_base_info";
/** /**
* 居民上传临时目录 * 居民上传临时目录
@ -257,8 +260,8 @@ public class IcResiUserController {
workbook.write(getOutputStream("居民基本信息.xls", response)); workbook.write(getOutputStream("居民基本信息.xls", response));
} }
@RequestMapping(value = "/exportExcel") @RequestMapping(value = "/exportExcel3")
public void exportExcelByEasyExcel(@RequestHeader String customerId,@LoginUser TokenDto tokenDto, @RequestBody IcResiUserPageFormDTO pageFormDTO, HttpServletResponse response) throws Exception { public void exportExcelByEasyExcel3(@RequestHeader String customerId,@LoginUser TokenDto tokenDto, @RequestBody IcResiUserPageFormDTO pageFormDTO, HttpServletResponse response) throws Exception {
//tokenDto.setUserId("9e37adcce6472152e6508a19d3683e02"); //tokenDto.setUserId("9e37adcce6472152e6508a19d3683e02");
CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(customerId, tokenDto.getUserId()); CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(customerId, tokenDto.getUserId());
String staffOrgPath = null; String staffOrgPath = null;
@ -280,7 +283,7 @@ public class IcResiUserController {
ExcelWriter excelWriter = EasyExcel.write(getOutputStream("居民基本信息.xlsx", response)).withTemplate(file).build(); ExcelWriter excelWriter = EasyExcel.write(getOutputStream("居民基本信息.xlsx", response)).withTemplate(file).build();
FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.VERTICAL).build(); FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.VERTICAL).build();
IcResiUserTableEnums tableEnums = IcResiUserTableEnums.getObjectByTableName(BASE_TABLE_NAME); IcResiUserTableEnum tableEnums = IcResiUserTableEnum.getObjectByTableName(BASE_TABLE_NAME);
WriteSheet fistSheet = EasyExcel.writerSheet(tableEnums.getSheetNo()).build(); WriteSheet fistSheet = EasyExcel.writerSheet(tableEnums.getSheetNo()).build();
pageFormDTO.setPageSize(NumConstant.FIVE_HUNDRED); pageFormDTO.setPageSize(NumConstant.FIVE_HUNDRED);
@ -325,7 +328,7 @@ public class IcResiUserController {
if (resiChildMap.keySet().size() < pageFormDTO.getPageSize()) { if (resiChildMap.keySet().size() < pageFormDTO.getPageSize()) {
stopSearchSet.add(tableName); stopSearchSet.add(tableName);
} }
tableEnums = IcResiUserTableEnums.getObjectByTableName(tableName); tableEnums = IcResiUserTableEnum.getObjectByTableName(tableName);
if (tableEnums == null) { if (tableEnums == null) {
continue; continue;
} }
@ -346,6 +349,68 @@ public class IcResiUserController {
excelWriter.finish(); excelWriter.finish();
} }
@RequestMapping(value = "/exportExcel")
public void exportExcelByEasyExcel(@RequestHeader String customerId,@LoginUser TokenDto tokenDto, @RequestBody IcResiUserPageFormDTO pageFormDTO, HttpServletResponse response) throws Exception {
//tokenDto.setUserId("9e37adcce6472152e6508a19d3683e02");
CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(customerId, tokenDto.getUserId());
String staffOrgPath = null;
if (StringUtils.isNotBlank(staffInfoCacheResult.getAgencyPIds()) && !NumConstant.ZERO_STR.equals(staffInfoCacheResult.getAgencyPIds())) {
staffOrgPath = staffInfoCacheResult.getAgencyPIds().concat(":").concat(staffInfoCacheResult.getAgencyId());
} else {
staffOrgPath = staffInfoCacheResult.getAgencyId();
}
pageFormDTO.setCustomerId(customerId);
pageFormDTO.setPageFlag(false);
List<FormItemResult> resiFormAllItems = icResiUserService.listFormItems(customerId, IC_RESI_FORM_CODE);
Map<String, Map<String, FormItemResult>> otherSheetItems = resiFormAllItems.stream()
.collect(Collectors.groupingBy(FormItemResult::getTableName, Collectors.toMap(FormItemResult::getColumnName, o -> o)));
//获取模版文件
File file = getExportTemplateFile(customerId);
ExcelWriter excelWriter = null;
try {
excelWriter = EasyExcel.write(getOutputStream("居民基本信息.xlsx", response)).withTemplate(file).build();
pageFormDTO.setPageSize(NumConstant.FIVE_HUNDRED);
pageFormDTO.setPageNo(NumConstant.ONE);
//子表是否停止查询
Set<String> stopSearchSet = new HashSet<>();
Map<String, WriteSheet> childTableWriteSheetMap = new HashMap<>();
//表数据写入
//通过枚举获取相关表并按照sheetNo排序
List<IcResiUserTableEnum> resiTableList = Arrays.stream(IcResiUserTableEnum.values()).sorted(Comparator.comparing(IcResiUserTableEnum::getSheetNo)).collect(Collectors.toList());
for (IcResiUserTableEnum tableEnum : resiTableList) {
String tableName = tableEnum.getTableName();
pageFormDTO.setPageNo(NumConstant.ONE);
//循环一次 写入每个sheet
do {
Map<String, FormItemResult> itemMap1 = otherSheetItems.get(tableName);
Map<String, Map<String, Object>> resiChildMap = icResiUserService.getDataForExport(itemMap1, tableName, pageFormDTO, staffInfoCacheResult.getAgencyId(), staffOrgPath);
//如果 返回的条数小于每页显示的数 则退出查询
if (resiChildMap.keySet().size() < pageFormDTO.getPageSize()) {
stopSearchSet.add(tableName);
}
//构建新的sheet
WriteSheet childWriteSheet = childTableWriteSheetMap.getOrDefault(tableName,EasyExcel.writerSheet(tableEnum.getSheetNo()).build());
childTableWriteSheetMap.put(tableName, childWriteSheet);
//写入数据
excelWriter.fill(new FillWrapper("t" + (tableEnum.getSheetNo() + NumConstant.ONE), resiChildMap.values()), childWriteSheet);
pageFormDTO.setPageNo(pageFormDTO.getPageNo() + NumConstant.ONE);
//重置数据
resiChildMap.clear();
//如果包含则说明子表的数据 已经查询完毕 无需再继续查询了
} while (!stopSearchSet.contains(tableName));
}
} finally {
if (excelWriter != null){
excelWriter.finish();
}
}
}
/** /**
* desc:根据客户id 下载模版文件 如果不存在则返回null * desc:根据客户id 下载模版文件 如果不存在则返回null
* *
@ -450,7 +515,7 @@ public class IcResiUserController {
*/ */
@NoRepeatSubmit @NoRepeatSubmit
@PostMapping("importExcel") @PostMapping("importExcel")
public void importExcelByEasyExcel(@RequestPart("file") MultipartFile file, HttpServletResponse response) { public void importExcelByEasyExcel(@RequestHeader("customerId") String customerId,@RequestPart("file") MultipartFile file, HttpServletResponse response) {
if (file.isEmpty()) { if (file.isEmpty()) {
throw new RenException("请上传文件"); throw new RenException("请上传文件");
} }
@ -467,7 +532,8 @@ public class IcResiUserController {
savePath = IC_RESI_UPLOAD_DIR.resolve(fileName); savePath = IC_RESI_UPLOAD_DIR.resolve(fileName);
IOUtils.copy(file.getInputStream(), new FileOutputStream(savePath.toString())); IOUtils.copy(file.getInputStream(), new FileOutputStream(savePath.toString()));
icResiUserImportService.importIcResiInfoFromExcel(savePath.toString(), response); List<FormItemResult> formItemList = icResiUserService.listFormItems(customerId,IC_RESI_FORM_CODE);
icResiUserImportService.importIcResiInfoFromExcel(formItemList, savePath.toString(), response);
} catch (IOException e) { } catch (IOException e) {
String errorMsg = ExceptionUtils.getErrorStackTrace(e); String errorMsg = ExceptionUtils.getErrorStackTrace(e);
log.error("【导入居民信息失败】导入失败:{}", errorMsg); log.error("【导入居民信息失败】导入失败:{}", errorMsg);
@ -525,20 +591,6 @@ public class IcResiUserController {
if (resultForm == null || !resultForm.success() || resultForm.getData() == null) { if (resultForm == null || !resultForm.success() || resultForm.getData() == null) {
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode()); throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
} }
System.out.println(JSON.toJSONString(resultForm.getData()));
return resultForm.getData();
}
@NotNull
private List<FormItemResult> getResiFormAllItems(String customerId) {
CustomerFormQueryDTO queryDTO = new CustomerFormQueryDTO();
queryDTO.setFormCode("resi_base_info");
queryDTO.setCustomerId(customerId);
Result<List<FormItemResult>> resultForm = operCustomizeOpenFeignClient.listItems(queryDTO);
if (resultForm == null || !resultForm.success() || resultForm.getData() == null) {
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
}
System.out.println(JSON.toJSONString(resultForm.getData()));
return resultForm.getData(); return resultForm.getData();
} }

7
epmet-user/epmet-user-server/src/main/java/com/epmet/enums/IcResiUserTableEnums.java → epmet-user/epmet-user-server/src/main/java/com/epmet/enums/IcResiUserTableEnum.java

@ -1,7 +1,6 @@
package com.epmet.enums; package com.epmet.enums;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data;
/** /**
* @Description 描述 * @Description 描述
@ -10,7 +9,7 @@ import lombok.Data;
* @Version 1.0 * @Version 1.0
*/ */
@AllArgsConstructor @AllArgsConstructor
public enum IcResiUserTableEnums { public enum IcResiUserTableEnum {
IC_RESI_USER("ic_resi_user","社区居民基本信息录入表", 0, 3, null), IC_RESI_USER("ic_resi_user","社区居民基本信息录入表", 0, 3, null),
IC_PARTY_MEMBER("ic_party_member","党员信息录入表", 1, 2, "IS_PARTY"), IC_PARTY_MEMBER("ic_party_member","党员信息录入表", 1, 2, "IS_PARTY"),
@ -28,8 +27,8 @@ public enum IcResiUserTableEnums {
private int headRowNo; private int headRowNo;
private String mainTableFlagColumnName; private String mainTableFlagColumnName;
public static IcResiUserTableEnums getObjectByTableName(String tableName) { public static IcResiUserTableEnum getObjectByTableName(String tableName) {
for (IcResiUserTableEnums i : IcResiUserTableEnums.values()) { for (IcResiUserTableEnum i : IcResiUserTableEnum.values()) {
if (i.tableName.equals(tableName)) { if (i.tableName.equals(tableName)) {
return i; return i;
} }

6
epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java

@ -1,7 +1,9 @@
package com.epmet.service; package com.epmet.service;
import com.epmet.dto.result.FormItemResult;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.util.List;
/** /**
*@Description 居民信息导入service *@Description 居民信息导入service
@ -10,5 +12,5 @@ import java.io.IOException;
*/ */
public interface IcResiUserImportService { public interface IcResiUserImportService {
void importIcResiInfoFromExcel(String excelPathName, HttpServletResponse response); void importIcResiInfoFromExcel(List<FormItemResult> formItemList, String excelPathName, HttpServletResponse response);
} }

9
epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java

@ -129,4 +129,13 @@ public interface IcResiUserService extends BaseService<IcResiUserEntity> {
* @Date 2021/11/5 14:40 * @Date 2021/11/5 14:40
*/ */
Map<String, Map<String, String>> getHomeUserCategoryCount(String buildId); Map<String, Map<String, String>> getHomeUserCategoryCount(String buildId);
/**
* desc:根据formCode 获取标单项
*
* @param customerId
* @param formCode
* @return
*/
List<FormItemResult> listFormItems(String customerId, String formCode);
} }

73
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java

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

26
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java

@ -24,12 +24,15 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.rocketmq.messages.IcResiUserAddMQMsg; import com.epmet.commons.rocketmq.messages.IcResiUserAddMQMsg;
import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.enums.GenderEnum; import com.epmet.commons.tools.enums.GenderEnum;
import com.epmet.commons.tools.enums.HouseTypeEnum; import com.epmet.commons.tools.enums.HouseTypeEnum;
import com.epmet.commons.tools.enums.RelationshipEnum; import com.epmet.commons.tools.enums.RelationshipEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.redis.RedisUtils;
@ -44,7 +47,10 @@ import com.epmet.constant.IcPlatformConstant;
import com.epmet.constant.SystemMessageType; import com.epmet.constant.SystemMessageType;
import com.epmet.constant.UserConstant; import com.epmet.constant.UserConstant;
import com.epmet.dao.IcResiUserDao; import com.epmet.dao.IcResiUserDao;
import com.epmet.dto.*; import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.IcHouseDTO;
import com.epmet.dto.IcNeighborHoodDTO;
import com.epmet.dto.IcResiCategoryStatsConfigDTO;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
import com.epmet.dto.result.*; import com.epmet.dto.result.*;
import com.epmet.entity.IcResiUserEntity; import com.epmet.entity.IcResiUserEntity;
@ -76,7 +82,7 @@ import java.util.stream.Collectors;
*/ */
@Slf4j @Slf4j
@Service @Service
public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResiUserEntity> implements IcResiUserService { public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResiUserEntity> implements IcResiUserService, ResultDataResolver {
@Autowired @Autowired
private GovOrgOpenFeignClient govOrgOpenFeignClient; private GovOrgOpenFeignClient govOrgOpenFeignClient;
@Autowired @Autowired
@ -799,4 +805,20 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
public Map<String, Map<String, String>> getHomeUserCategoryCount(String buildId) { public Map<String, Map<String, String>> getHomeUserCategoryCount(String buildId) {
return baseDao.getHomeUserCategoryCount(buildId); return baseDao.getHomeUserCategoryCount(buildId);
} }
/**
* 根据formCode查询该form的item列表
*
* @param customerId
* @param formCode
* @return
*/
@Override
public List<FormItemResult> listFormItems(String customerId, String formCode) {
CustomerFormQueryDTO form = new CustomerFormQueryDTO();
form.setFormCode(formCode);
form.setCustomerId(customerId);
Result<List<FormItemResult>> result = operCustomizeOpenFeignClient.listItems(form);
return getResultDataOrThrowsException(result, ServiceConstant.OPER_CUSTOMIZE_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "查询表单相关信息失败");
}
} }

Loading…
Cancel
Save