Browse Source

修改:

导入居民基本信息完善,已经可以读取中文并且转换成db所需的数据,下一步,转换成sql,并且测试数据的完整性
master
wangxianzhang 4 years ago
parent
commit
54867de8e3
  1. 7
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java
  2. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java
  3. 58
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java

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

@ -376,6 +376,11 @@ public class IcResiUserController {
}
/**
* excel导入居民基本信息
* @param loginUser
* @return
*/
@PostMapping("import/excel")
public Result importExcelByEasyExcel(@LoginUser TokenDto loginUser) {
@ -386,7 +391,7 @@ public class IcResiUserController {
Result<LoginUserDetailsResultDTO> loginUserDetails = epmetUserOpenFeignClient.getLoginUserDetails(userForm);
Object result = icResiUserService.importExcel(loginUserDetails.getData().getAgencyId());
Object result = icResiUserService.importIcResiInfoFromExcel(loginUserDetails.getData().getAgencyId());
return new Result().ok(result);
}

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

@ -128,7 +128,7 @@ public interface IcResiUserService extends BaseService<IcResiUserEntity> {
*/
Map queryIcResiDetail(IcResiDetailFormDTO pageFormDTO);
Object importExcel(String currUserAgencyId);
Object importIcResiInfoFromExcel(String currUserAgencyId);
List<Map<String,Object>> dynamicQuery(String customerId,
String formCode,

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

@ -428,8 +428,8 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
}
@Override
public Object importExcel(String currUserAgencyId) {
return imporExcel(0, 3, currUserAgencyId);
public Object importIcResiInfoFromExcel(String currUserAgencyId) {
return importIcResiInfoFromExcel(0, 3, currUserAgencyId);
// imporExcel(1, 1);
// imporExcel(2, 1);
// imporExcel(3, 1);
@ -440,7 +440,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
// imporExcel(8, 1);
}
private Object imporExcel(int sheetNo, int headRowNumber, String currUserAgencyId) {
private Object importIcResiInfoFromExcel(int sheetNo, int headRowNumber, String currUserAgencyId) {
DynamicEasyExcelListener readListener = new DynamicEasyExcelListener();
EasyExcelFactory.read(new File("/opt/test/基础信息表/resi_info.xls")).registerReadListener(readListener).headRowNumber(3).sheet(sheetNo).doRead();
@ -476,7 +476,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
Map<String, ColumnWrapper> headerColumnWrapper = integrate(formItemMap, combinedHeaders, dataList, abandonedHeaders);
// 持久化
persist(headerColumnWrapper, dataList, currUserAgencyId, abandonedHeaders);
persist(headerColumnWrapper, dataList, currUserAgencyId, abandonedHeaders, customerItems.get(0).getTableName());
return headerColumnWrapper;
}
@ -488,12 +488,18 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
* @param currUserAgencyId 当前用户的组织id
* @param checkBoxOptionColumnIdxAndLabel 复选框的列号&label中文
*/
private void persist(Map<String, ColumnWrapper> headerColumnWrapper, List<Map<Integer, String>> dataRows, String currUserAgencyId, Map<Integer, String> checkBoxOptionColumnIdxAndLabel) {
private void persist(Map<String, ColumnWrapper> headerColumnWrapper, List<Map<Integer, String>> dataRows,
String currUserAgencyId, Map<Integer, String> checkBoxOptionColumnIdxAndLabel, String tableName) {
for (Map<Integer, String> row : dataRows) {
// 当前行的列们
// List<ColumnWrapper> columnsOfCurrRow = new ArrayList<>();
List<String> columnNames = new ArrayList<>();
List<String> columnValues = new ArrayList<>();
for (Map.Entry<String, ColumnWrapper> columnWrapperEntry : headerColumnWrapper.entrySet()) {
String itemId = columnWrapperEntry.getKey();
ColumnWrapper columnWrapper = columnWrapperEntry.getValue();
if ("input".equals(columnWrapper.getItemType())
|| "textarea".equals(columnWrapper.getItemType())
@ -512,7 +518,9 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
// 取单元格的内容
String cellContent = row.get(columnWrapper.getColIndexs().get(0));
columnWrapper.setCellContent(cellContent);
if (columnWrapper.combinedLabel.equals("家庭信息:与户主关系")) {
System.out.println(6);
}
if ("local".equals(optionSourceType)) {
// 根据单元格内容,取到指定的option
Map<String, String> options = columnWrapper.getOptions();
@ -529,10 +537,17 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
String checkBoxColValue = getCheckBoxColValue(columnWrapper, row, checkBoxOptionColumnIdxAndLabel);
columnWrapper.setColValue(checkBoxColValue);
}
columnNames.add(columnWrapper.getColumnName());
columnValues.add(columnWrapper.getColValue());
}
// String columnNamesStr = String.join(",", columnNames);
// String columnValuesStr = String.join(",", columnValues);
// log.info("tableName:{}, columnNamesStr: {}, columnNamesStr: {}", tableName, columnNamesStr, columnValuesStr);
System.out.println(columnNames);
System.out.println(columnValues);
}
}
@ -545,7 +560,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
* @date 2021.10.28 21:27:18
*/
private HashMap<String, List<Integer>> combineHeaders(Map<Integer, List<String>> headers) {
HashMap<String, List<Integer>> itemAndColIndexs = new HashMap<>();
HashMap<String, List<Integer>> itemAndColIndexs = new LinkedHashMap<>();
headers.forEach((k, v) -> {
String tempKey = String.join(":", v);
@ -561,7 +576,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
}
/**
* @description 清洗headers
* @description 洗头
*
* @param headers
* @param items
@ -577,7 +592,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
List<String> v = entry.getValue();
int lastPartIndex = v.size() - 1;
String lastValuePart = v.get(lastPartIndex);
if (itemLabels.indexOf(lastValuePart) == -1) {
if (!itemLabels.contains(lastValuePart)) {
// 该部分为options,它的上一级是item,那么去掉options这一级
v.remove(lastPartIndex);
abandonedHeaders.put(colIdx, lastValuePart);
@ -598,7 +613,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
List<Map<Integer, String>> datas, Map<Integer, String> abandonedHeaders) {
// HashMap<String, List<ColumnWrapper>> tables = new HashMap<>();
Map<String, ColumnWrapper> columns = new HashMap<>(combinedHeaders.size());
Map<String, ColumnWrapper> columns = new LinkedHashMap<>(combinedHeaders.size());
for (Map.Entry<String, List<Integer>> entry : combinedHeaders.entrySet()) {
String combinedHeader = entry.getKey();
@ -662,7 +677,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
private Map<String, String> listRemoteOptions(Map<String, ColumnWrapper> columnWrappers, String fullUri, String currUserAgencyId) {
String pureUri = null;
String cascadeItemId = null;
String cascadeItemColumnValue = null;
ColumnWrapper cascadeItemColumnWrapper = null;
if (fullUri.indexOf("?") != -1) {
String[] uriParts = fullUri.split("\\?");
@ -670,8 +685,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
cascadeItemId = uriParts[1];
// 根据uri上的id,找到关联的itemid,从而找到关联的item的值
ColumnWrapper cascadeItemColumnWrapper = columnWrappers.get(cascadeItemId);
cascadeItemColumnValue = cascadeItemColumnWrapper.getColValue();
cascadeItemColumnWrapper = columnWrappers.get(cascadeItemId);
} else {
pureUri = fullUri;
}
@ -691,28 +705,28 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
case "/gov/org/customerpartybranch/branchoption":
CustomerPartyBranchDTO bform = new CustomerPartyBranchDTO();
bform.setGridId(cascadeItemColumnValue);
bform.setGridId(cascadeItemColumnWrapper.getColValue());
options = getResultDataOrThrowsException(govOrgOpenFeignClient.getBranchOption(bform), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/gov/org/icbuilding/buildingoption":
IcBuildingDTO buildingform = new IcBuildingDTO();
buildingform.setNeighborHoodId(cascadeItemColumnValue);
buildingform.setNeighborHoodId(cascadeItemColumnWrapper.getColValue());
options = getResultDataOrThrowsException(govOrgOpenFeignClient.getBuildingOptions(buildingform), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/gov/org/icbuildingunit/unitoption":
IcBuildingUnitDTO buForm = new IcBuildingUnitDTO();
buForm.setBuildingId(cascadeItemColumnValue);
buForm.setBuildingId(cascadeItemColumnWrapper.getColValue());
options = getResultDataOrThrowsException(govOrgOpenFeignClient.getUnitOptions(buForm), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/gov/org/ichouse/houseoption":
HouseFormDTO hform = new HouseFormDTO();
hform.setUnitId(cascadeItemColumnValue);
hform.setUnitId(cascadeItemColumnWrapper.getColValue());
options = getResultDataOrThrowsException(govOrgOpenFeignClient.getHouseOption(hform), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/gov/org/icneighborhood/neighborhoodoption":
IcNeighborHoodDTO nform = new IcNeighborHoodDTO();
nform.setAgencyId(currUserAgencyId);
nform.setGridId(cascadeItemId);
nform.setGridId(cascadeItemColumnWrapper.getColValue());
options = getResultDataOrThrowsException(govOrgOpenFeignClient.getNeighborHoodOptions(nform), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/sys/dict/data/education":

Loading…
Cancel
Save