优化导出速度

This commit is contained in:
wangxin
2019-04-29 10:37:38 +08:00
parent eac5552be2
commit d4ee7c7a42
2 changed files with 44 additions and 1 deletions

View File

@@ -1,6 +1,7 @@
package com.nis.util;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -97,6 +98,18 @@ public class DictUtils {
}
return itemList;
}
public static Map<String,String> getDictMap(String key){
Map dictMap=new HashMap<String,String>();
List<SysDataDictionaryItem> itemList = getDictData().get(key);
if (StringUtil.isEmpty(itemList)) {
return dictMap;
}else {
for(SysDataDictionaryItem item:itemList) {
dictMap.put(item.getItemCode(), item.getItemValue());
}
}
return dictMap;
}
public static String getDictLabels(String dictKey, String itemCodes, String defaultValue){

View File

@@ -42,6 +42,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.util.Assert;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.nis.domain.FunctionRegionDict;
import com.nis.domain.FunctionServiceDict;
import com.nis.domain.SysDataDictionaryItem;
@@ -454,6 +455,19 @@ public class ExportExcel {
}
}
if("ip_group".equals(headerStr)) {
commentStr="";
//查询dns fake ip policyGroup列表
List<PolicyGroupInfo> list=policyGroupInfoDao.findPolicyGroupInfosByType(5);
if(!StringUtil.isEmpty(list)){
for (PolicyGroupInfo policyGroupInfo : list) {
commentStr=commentStr+policyGroupInfo.getServiceGroupId()+""+policyGroupInfo.getGroupName()+"\n";
index++;
}
}
commentStr=msgProp.getProperty("select")+":\n"+commentStr;
index++;
}
if("isp".equals(headerStr)) {
commentStr="";
List<Integer> itTypeList = new ArrayList<Integer>();
@@ -2242,7 +2256,9 @@ public class ExportExcel {
* @return list 数据列表
*/
public <E> ExportExcel setDataList(Properties msgProp, Map<String,List> dataMap, Map<Object,Object> map){
long start=System.currentTimeMillis(),end=System.currentTimeMillis();
Set<String> keyList=dataMap.keySet();
Map<String,Map<String,String>> dictMaps=Maps.newConcurrentMap();
for (String key : keyList) {
List<E> list=dataMap.get(key);
for (E e : list){
@@ -2272,7 +2288,16 @@ public class ExportExcel {
val = getBasicInfo(ef.dictType(),map,valStr);
}else{
//字典数据已做国际化处理
String dict=DictUtils.getDictLabel(ef.dictType(), valStr, valStr);
String dict="";
if(dictMaps.containsKey(ef.dictType())) {
Map<String,String> dictM=dictMaps.get(ef.dictType());
dict=dictM.containsKey(valStr)?dictM.get(valStr):valStr;
}else {
Map<String,String> dictM=DictUtils.getDictMap(ef.dictType());
dictMaps.put(ef.dictType(), dictM);
dict=dictM.containsKey(valStr)?dictM.get(valStr):valStr;
}
//String dict=DictUtils.getDictLabel(ef.dictType(), valStr, valStr);
//如果找不到字典国际化值,把字典本身作为默认值放进去,不然导出就是空了
val = msgProp.getProperty(dict,dict);
//业务配置-stream 阻断类型中 阻断 改为 封堵(丢弃)
@@ -2341,6 +2366,8 @@ public class ExportExcel {
log.debug("Write success: ["+row.getRowNum()+"] "+sb.toString());
}
}
end=System.currentTimeMillis();
System.err.println("setDataList cost:"+(end-start));
return this;
}
/**
@@ -2473,6 +2500,7 @@ public class ExportExcel {
* @return
*/
public ExportExcel(Properties msgProp,List<String> titleList,Map<String,String> noExportMap,Map<String, Class<?>> clsMap, int type,String titleTime, int... groups){
long start=System.currentTimeMillis(),end=System.currentTimeMillis();
Map<String, List<String>> headerMap=new HashMap<String, List<String>>();
Map<String, List<String>> commentMap=new HashMap<String, List<String>>();
for (String title : titleList) {
@@ -2598,6 +2626,8 @@ public class ExportExcel {
annotationMap.put(title, annotationList);
}
initializeMultiSheet(msgProp,titleList, headerMap,commentMap,titleTime);
end=System.currentTimeMillis();
System.err.println("ExportExcel cost:"+(end-start));
}
/**