summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwangxin <[email protected]>2019-04-29 10:37:38 +0800
committerwangxin <[email protected]>2019-04-29 10:37:38 +0800
commitd4ee7c7a42dd0d03988a70620bf99bd668fea9da (patch)
treefd8be0c951e09368fb924c28d34a34f0eddc1ad7
parenteac5552be24c31a6d2b9ad231c61d876bbcdb698 (diff)
优化导出速度
-rw-r--r--src/main/java/com/nis/util/DictUtils.java13
-rw-r--r--src/main/java/com/nis/util/excel/ExportExcel.java32
2 files changed, 44 insertions, 1 deletions
diff --git a/src/main/java/com/nis/util/DictUtils.java b/src/main/java/com/nis/util/DictUtils.java
index f0e2e5918..cbf42237d 100644
--- a/src/main/java/com/nis/util/DictUtils.java
+++ b/src/main/java/com/nis/util/DictUtils.java
@@ -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){
diff --git a/src/main/java/com/nis/util/excel/ExportExcel.java b/src/main/java/com/nis/util/excel/ExportExcel.java
index f4a1ac786..ff8f78446 100644
--- a/src/main/java/com/nis/util/excel/ExportExcel.java
+++ b/src/main/java/com/nis/util/excel/ExportExcel.java
@@ -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));
}
/**