Browse Source

返回更多属性

release
jianjun 3 years ago
parent
commit
ab44e5afc1
  1. 3
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcCustomExportResultDTO.java
  2. 5
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcExportTemplateForExportResultDTO.java
  3. 4
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcExportTemplateServiceImpl.java
  4. 12
      epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcExportTemplateDao.xml
  5. 4
      epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml
  6. 117
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java
  7. 7
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java

3
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcCustomExportResultDTO.java

@ -40,8 +40,11 @@ public class IcCustomExportResultDTO implements Serializable {
@AllArgsConstructor @AllArgsConstructor
@Data @Data
public static class SqlColumn { public static class SqlColumn {
private String itemId;
private String tableName; private String tableName;
private String columnName; private String columnName;
private String optionSourceType;
private String optionSourceValue;
} }
} }

5
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcExportTemplateForExportResultDTO.java

@ -60,9 +60,8 @@ public class IcExportTemplateForExportResultDTO implements Serializable {
* 列名 * 列名
*/ */
private String columnName; private String columnName;
/**
* 只有远程获取的才有值
*/
private String optionSourceValue; private String optionSourceValue;
private String optionSourceType;
} }

4
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcExportTemplateServiceImpl.java

@ -117,7 +117,7 @@ public class IcExportTemplateServiceImpl extends BaseServiceImpl<IcExportTemplat
log.error("getTemplateConfigForExport item 不存在 id:{}", itemId); log.error("getTemplateConfigForExport item 不存在 id:{}", itemId);
return; return;
} }
hiddenSqlColumns.add(new IcCustomExportResultDTO.SqlColumn(item.getTableName(), item.getColumnName())); hiddenSqlColumns.add(new IcCustomExportResultDTO.SqlColumn(item.getItemId(),item.getTableName(), item.getColumnName(),item.getOptionSourceType(),item.getOptionSourceValue()));
}); });
} }
@ -130,7 +130,7 @@ public class IcExportTemplateServiceImpl extends BaseServiceImpl<IcExportTemplat
private void digui(Map<String, List<IcExportTemplateForExportResultDTO>> resultTemp, IcExportTemplateForExportResultDTO root, List<List<String>> headerList, List<IcCustomExportResultDTO.SqlColumn> showSqlColumns, List<IcCustomExportResultDTO.SqlColumn> hiddenSqlColumns, Set<String> hasExistColumnSet) { private void digui(Map<String, List<IcExportTemplateForExportResultDTO>> resultTemp, IcExportTemplateForExportResultDTO root, List<List<String>> headerList, List<IcCustomExportResultDTO.SqlColumn> showSqlColumns, List<IcCustomExportResultDTO.SqlColumn> hiddenSqlColumns, Set<String> hasExistColumnSet) {
if (StringUtils.isNotBlank(root.getColumnName())) { if (StringUtils.isNotBlank(root.getColumnName())) {
showSqlColumns.add(new IcCustomExportResultDTO.SqlColumn(root.getTableName(), root.getColumnName())); showSqlColumns.add(new IcCustomExportResultDTO.SqlColumn(root.getItemId(),root.getTableName(), root.getColumnName(),root.getOptionSourceType(),root.getOptionSourceValue()));
if (StringUtils.isNotBlank(root.getOptionSourceValue())) { if (StringUtils.isNotBlank(root.getOptionSourceValue())) {
String[] paramArr = root.getOptionSourceValue().split(StrConstant.QUESTION_MARK_TRANSFER)[NumConstant.ONE].split(StrConstant.AND_MARK); String[] paramArr = root.getOptionSourceValue().split(StrConstant.QUESTION_MARK_TRANSFER)[NumConstant.ONE].split(StrConstant.AND_MARK);
//先remote中再添加 然后移除item中有的 //先remote中再添加 然后移除item中有的

12
epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcExportTemplateDao.xml

@ -20,17 +20,11 @@
</resultMap> </resultMap>
<select id="getTemplateConfigForExport" resultType="com.epmet.dto.result.IcExportTemplateForExportResultDTO"> <select id="getTemplateConfigForExport" resultType="com.epmet.dto.result.IcExportTemplateForExportResultDTO">
SELECT SELECT
c.ID,c.TEMP_ID, c.ID,c.TEMP_ID,c.LABEL,c.PID,c.sort,ifi.ID AS itemId,ifig.TABLE_NAME,concat(ifi.COLUMN_NAME,if(ifi.COLUMN_NUM = 0,'',ifi.COLUMN_NUM)) columnName,
c.LABEL, ifi.OPTION_SOURCE_VALUE,ifi.OPTION_SOURCE_TYPE
c.PID,
c.sort,
ifi.ID AS itemId,
ifig.TABLE_NAME,
concat(ifi.COLUMN_NAME,if(ifi.COLUMN_NUM = 0,'',ifi.COLUMN_NUM)) columnName,
ifi2.OPTION_SOURCE_VALUE
FROM ic_export_template_config c FROM ic_export_template_config c
LEFT JOIN ic_form_item ifi ON c.FORM_ITEM_ID = ifi.ID LEFT JOIN ic_form_item ifi ON c.FORM_ITEM_ID = ifi.ID
LEFT JOIN ic_form_item ifi2 ON c.FORM_ITEM_ID = ifi2.ID AND ifi2.OPTION_SOURCE_TYPE ='remote' AND ifi2.OPTION_SOURCE_VALUE LIKE '%?%' # LEFT JOIN ic_form_item ifi2 ON c.FORM_ITEM_ID = ifi2.ID AND ifi2.OPTION_SOURCE_TYPE ='remote' AND ifi2.OPTION_SOURCE_VALUE LIKE '%?%'
LEFT JOIN ic_form_item_group ifig ON ifi.ITEM_GROUP_ID = ifig.ID LEFT JOIN ic_form_item_group ifig ON ifi.ITEM_GROUP_ID = ifig.ID
WHERE TEMP_ID = #{tempId} and c.CUSTOMER_ID = #{customerId} and c.DEL_FLAG = '0' WHERE TEMP_ID = #{tempId} and c.CUSTOMER_ID = #{customerId} and c.DEL_FLAG = '0'
ORDER BY c.PID,c.SORT ORDER BY c.PID,c.SORT

4
epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml

@ -243,7 +243,9 @@
SELECT SELECT
ifi.ID AS itemId, ifi.ID AS itemId,
ifig.TABLE_NAME, ifig.TABLE_NAME,
CONCAT(ifi.COLUMN_NAME, if(ifi.COLUMN_NUM = 0, '', ifi.COLUMN_NUM)) columnName CONCAT(ifi.COLUMN_NAME, if(ifi.COLUMN_NUM = 0, '', ifi.COLUMN_NUM)) columnName,
ifi.OPTION_SOURCE_TYPE,
ifi.OPTION_SOURCE_VALUE
FROM FROM
ic_form_item ifi ic_form_item ifi
LEFT JOIN ic_form_item_group ifig ON ifi.ITEM_GROUP_ID = ifig.ID LEFT JOIN ic_form_item_group ifig ON ifi.ITEM_GROUP_ID = ifig.ID

117
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java

@ -3,6 +3,7 @@ package com.epmet.service.impl;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
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;
@ -20,6 +21,7 @@ import com.epmet.service.IcResiUserExportService;
import com.epmet.service.IcResiUserService; import com.epmet.service.IcResiUserService;
import com.github.pagehelper.Page; import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.google.common.cache.Cache;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -28,8 +30,10 @@ import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* desc: * desc:
@ -64,17 +68,17 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
//获取模板条件 //获取模板条件
IcExportTemplateQueryFormDTO param = new IcExportTemplateQueryFormDTO(); IcExportTemplateQueryFormDTO param = new IcExportTemplateQueryFormDTO();
param.setCustomerId(loginUserUtil.getLoginUserCustomerId()); param.setCustomerId(loginUserUtil.getLoginUserCustomerId());
param.setCustomerId("default");
param.setTempId(pageFormDTO.getTemplateId()); param.setTempId(pageFormDTO.getTemplateId());
Result<IcCustomExportResultDTO> exportConfigResult = operCustomizeOpenFeignClient.getExcelHeaderAndSqlColumnForExport(param); Result<IcCustomExportResultDTO> exportConfigResult = operCustomizeOpenFeignClient.getExcelHeaderAndSqlColumnForExport(param);
if (!exportConfigResult.success() || exportConfigResult.getData() == null) { if (!exportConfigResult.success() || exportConfigResult.getData() == null) {
log.error("获取模板失败"); log.error("获取模板失败");
return; return;
} }
IcCustomExportResultDTO resultDTO = exportConfigResult.getData(); IcCustomExportResultDTO exportConfigData = exportConfigResult.getData();
log.info("查询到的模板配置信息:{}", JSON.toJSONString(exportConfigData));
FreezeAndFilter writeHandler = new FreezeAndFilter(); FreezeAndFilter writeHandler = new FreezeAndFilter();
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel("居民基本信息.xlsx", response)).registerWriteHandler(writeHandler).build(); excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel("居民基本信息.xlsx", response)).registerWriteHandler(writeHandler).build();
WriteSheet writeSheet = EasyExcel.writerSheet().head(resultDTO.getHeaders()).build(); WriteSheet writeSheet = EasyExcel.writerSheet().head(exportConfigData.getHeaders()).build();
CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(loginUserUtil.getLoginUserCustomerId(), loginUserUtil.getLoginUserId()); CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(loginUserUtil.getLoginUserCustomerId(), loginUserUtil.getLoginUserId());
String staffOrgPath = null; String staffOrgPath = null;
@ -84,8 +88,8 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
staffOrgPath = staffInfoCacheResult.getAgencyId(); staffOrgPath = staffInfoCacheResult.getAgencyId();
} }
Page<Map<String, Object>> mapListPage = null; Page<Map<String, Object>> mapListPage = null;
List<IcCustomExportResultDTO.SqlColumn> allShowColumns = new ArrayList<>(resultDTO.getShowSqlColumns()); List<IcCustomExportResultDTO.SqlColumn> allShowColumns = new ArrayList<>(exportConfigData.getShowSqlColumns());
allShowColumns.addAll(resultDTO.getHiddenSqlColumns()); allShowColumns.addAll(exportConfigData.getHiddenSqlColumns());
do { do {
String finalStaffOrgPath = staffOrgPath; String finalStaffOrgPath = staffOrgPath;
mapListPage = PageHelper.startPage(pageFormDTO.getPageNo(), pageFormDTO.getPageSize(), pageFormDTO.getIsPage()).doSelectPage(() -> { mapListPage = PageHelper.startPage(pageFormDTO.getPageNo(), pageFormDTO.getPageSize(), pageFormDTO.getIsPage()).doSelectPage(() -> {
@ -93,25 +97,31 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
}); });
pageFormDTO.setPageNo(pageFormDTO.getPageNo() + NumConstant.ONE); pageFormDTO.setPageNo(pageFormDTO.getPageNo() + NumConstant.ONE);
//todo List<Map<String, Object>> result = mapListPage.getResult();
if (pageFormDTO.getPageNo() == 4) {
break;
}
} while (mapListPage != null && mapListPage.getResult().size() == pageFormDTO.getPageSize());
List<Map<String, Object>> result = mapListPage.getResult();
List<List<Object>> resultData = new ArrayList<>(); List<List<Object>> resultData = new ArrayList<>();
result.forEach(o -> { result.forEach(o -> {
List<Object> singleResult = new ArrayList<>(); List<Object> singleResult = new ArrayList<>();
o.values().forEach(value -> { o.forEach((key,value) -> {
if (singleResult.size() < resultDTO.getShowSqlColumns().size()) { List<IcCustomExportResultDTO.SqlColumn> showSqlColumns = exportConfigData.getShowSqlColumns();
singleResult.add(value); Map<String, IcCustomExportResultDTO.SqlColumn> itemMap = showSqlColumns.stream().collect(Collectors.toMap(IcCustomExportResultDTO.SqlColumn::getColumnName, item -> item));
} if (singleResult.size() < showSqlColumns.size()) {
singleResult.add(value);
IcCustomExportResultDTO.SqlColumn sqlColumn = itemMap.get(key);
String vauleStr = value == null ? StrConstant.EPMETY_STR : value.toString();
/* if (Constant.OPITON_SOURCE_REMOTE.equals(sqlColumn.getOptionSourceType()) && StringUtils.isNotBlank(vauleStr)) {
putRemoteValue(formItemMap.getRemoteItemConditionMap().get(e.getItemId()), currentStaffAgencyId, resiUser,originalConditionMap, e, columnName, vauleStr);
} else {
putOptionValue(resiUser, e, columnName, vauleStr);
}*/
}
});
resultData.add(singleResult);
}); });
resultData.add(singleResult); log.info("需要写入的data长度:{}", resultData.size());
}); excelWriter.write(resultData, writeSheet);
log.debug("需要写入的data长度:{}", resultData.size()); } while (mapListPage.getResult().size() == pageFormDTO.getPageSize());
excelWriter.write(resultData, writeSheet);
} catch (IOException e) { } catch (IOException e) {
log.error("exportIcResiUser exception", e); log.error("exportIcResiUser exception", e);
} finally { } finally {
@ -119,7 +129,70 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
excelWriter.finish(); excelWriter.finish();
} }
} }
}
/**
* key:itemId,value: key:columnName,中文
*/
private static Map<String, Cache<String,String>> remoteOptionCacheMap = new HashMap<>();
/*private void putRemoteValue(Set<FormItemResult> conditionItemSet, String currentStaffAgencyId, Map<String, Object> map, Map<String, Object> originalConditionMap, FormItemResult e, String columnName, String vauleStr) {
try {
Map<String, IcResiUserImportServiceImpl.ColumnWrapper> columnWrappers = new HashMap<>();
if (e.getOptionSourceValue().contains(StrConstant.QUESTION_MARK)){
for (FormItemResult o : conditionItemSet) {
String column = getColumnName(o);
Object conditionValue = originalConditionMap.getOrDefault(column, map.get(column));
originalConditionMap.putIfAbsent(column,conditionValue.toString());
IcResiUserImportServiceImpl.ColumnWrapper value = new IcResiUserImportServiceImpl.ColumnWrapper();
value.setColValue(conditionValue.toString());
columnWrappers.put(o.getItemId(), value);
}
}
Cache<String, String> cache = remoteOptionCacheMap.getOrDefault(e.getItemId(), CacheBuilder.newBuilder().maximumSize(NumConstant.FIVE_HUNDRED).build());
remoteOptionCacheMap.putIfAbsent(e.getItemId(),cache);
String cacheValue = cache.getIfPresent(vauleStr);
if (StringUtils.isNotBlank(cacheValue)){
map.put(columnName,cacheValue);
} else {
String[] parts = icResiUserImportService.splitOptionSourceUrl(e.getOptionSourceValue());
Map<String, String> remoteOptions = icResiUserImportService.listRemoteOptions(parts[0], parts[1], columnWrappers, currentStaffAgencyId, "query");
if (FormItemTypeEnum.CHECKBOX.getCode().equals(e.getItemType())) {
remoteOptions.forEach((label, value) -> map.put(value, vauleStr.contains(value) ? StrConstant.YES : StrConstant.NO));
} else if (FormItemTypeEnum.SELECT.getCode().equals(e.getItemType())) {
remoteOptions.forEach((label, value) -> {
if (vauleStr.equals(value)) {
map.put(columnName, label);
}
cache.put(value,label);
});
}
}
} catch (Exception ex) {
log.error("listRemoteOptions url:{}", e.getOptionSourceValue());
}
} }
private void putOptionValue(Map<String, Object> map, FormItemResult e, String columnName, String vauleStr) {
FormItemTypeEnum itemTypeEnum = FormItemTypeEnum.getEnum(e.getItemType());
switch (itemTypeEnum) {
case CHECKBOX:
e.getOptions().forEach(optionDTO -> {
map.put(optionDTO.getValue(), vauleStr.contains(optionDTO.getValue()) ? StrConstant.YES : StrConstant.NO);
});
break;
case SELECT:
case RADIO:
e.getOptions().forEach(optionDTO -> {
if (optionDTO.getValue().equals(vauleStr)) {
map.put(columnName, optionDTO.getLabel());
}
});
break;
default:
}
}*/
} }

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

@ -999,13 +999,6 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
columnWrappers.put(o.getItemId(), value); columnWrappers.put(o.getItemId(), value);
} }
} }
/*if (e.getItemId().equals("1078")) {
IcResiUserImportServiceImpl.ColumnWrapper value = new IcResiUserImportServiceImpl.ColumnWrapper();
value.setColValue(gridId.toString());
columnWrappers.put("1001", value);
}else if (e.getOptionSourceValue().contains(StrConstant.QUESTION_MARK)){
continue;
}*/
Cache<String, String> cache = remoteOptionCacheMap.getOrDefault(e.getItemId(), CacheBuilder.newBuilder().maximumSize(NumConstant.FIVE_HUNDRED).build()); Cache<String, String> cache = remoteOptionCacheMap.getOrDefault(e.getItemId(), CacheBuilder.newBuilder().maximumSize(NumConstant.FIVE_HUNDRED).build());
remoteOptionCacheMap.putIfAbsent(e.getItemId(),cache); remoteOptionCacheMap.putIfAbsent(e.getItemId(),cache);
String cacheValue = cache.getIfPresent(vauleStr); String cacheValue = cache.getIfPresent(vauleStr);

Loading…
Cancel
Save