diff options
| author | wangxin <[email protected]> | 2019-04-29 10:37:38 +0800 |
|---|---|---|
| committer | wangxin <[email protected]> | 2019-04-29 10:37:38 +0800 |
| commit | d4ee7c7a42dd0d03988a70620bf99bd668fea9da (patch) | |
| tree | fd8be0c951e09368fb924c28d34a34f0eddc1ad7 | |
| parent | eac5552be24c31a6d2b9ad231c61d876bbcdb698 (diff) | |
优化导出速度
| -rw-r--r-- | src/main/java/com/nis/util/DictUtils.java | 13 | ||||
| -rw-r--r-- | src/main/java/com/nis/util/excel/ExportExcel.java | 32 |
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)); } /** |
