From e9eb9ee7bec1dd64e3b9a494a2814a5bc3952709 Mon Sep 17 00:00:00 2001
From: yuxc <yuxc@vci-tech.com>
Date: 星期五, 27 十二月 2024 11:57:43 +0800
Subject: [PATCH] 1、主要优化业务类型加载过慢由于重复加载平台的属性、枚举数据,属性数据通过第一次加载全部进行传递解决,枚举数据通过新增枚举的本地线程工具类来进行实现。
---
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java | 24 +++++++++++++++++++-----
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/AllOsEnumVOMapThreadLocal.java | 27 +++++++++++++++++++++++++++
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsEnumServiceImpl.java | 6 +++++-
3 files changed, 51 insertions(+), 6 deletions(-)
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/AllOsEnumVOMapThreadLocal.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/AllOsEnumVOMapThreadLocal.java
new file mode 100644
index 0000000..607dee4
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/AllOsEnumVOMapThreadLocal.java
@@ -0,0 +1,27 @@
+package com.vci.web.other;
+
+import com.vci.pagemodel.OsEnumVO;
+
+import java.util.Map;
+
+/**
+ * 鎵�鏈夌埗瀛愮嚎绋嬫灇涓剧殑鏄剧ず瀵硅薄MAP
+ */
+public class AllOsEnumVOMapThreadLocal {
+ //鎶婃瀯閫犲嚱鏁扮鏈夛紝澶栭潰涓嶈兘new锛屽彧鑳介�氳繃涓嬮潰涓や釜鏂规硶鎿嶄綔
+ private AllOsEnumVOMapThreadLocal(){
+
+ }
+ private static final InheritableThreadLocal<Map<String, OsEnumVO>> LOCAL = new InheritableThreadLocal<>();
+
+ public static void set(Map<String, OsEnumVO> data){
+ LOCAL.set(data);
+ }
+
+ public static Map<String, OsEnumVO> get(){
+ return LOCAL.get();
+ }
+ public static void remove(){
+ LOCAL.remove();
+ }
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java
index 89700e6..90ba72c 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java
@@ -44,6 +44,7 @@
import com.vci.starter.web.util.Lcm.ConcurrentDateFormat;
import com.vci.starter.web.util.Lcm.DateUtil;
import com.vci.starter.web.util.Lcm.Func;
+import com.vci.web.other.AllOsEnumVOMapThreadLocal;
import com.vci.web.service.*;
import com.vci.web.util.PlatformClientUtil;
import com.vci.web.util.WebUtil;
@@ -200,10 +201,14 @@
@Override
public List<OsBtmTypeVO> btmDO2VOs(Collection<BizType> btmItems,Map<String, OsAttributeVO> attributeVOMap) {
List<OsBtmTypeVO> VOS = new ArrayList<>();
- Optional.ofNullable(btmItems).orElseGet(() -> new ArrayList<>()).parallelStream().forEach(btmItem -> {
+// Optional.ofNullable(btmItems).orElseGet(() -> new ArrayList<>()).parallelStream().forEach(btmItem -> {
+// OsBtmTypeVO vo = btmDO2VO(btmItem,attributeVOMap);
+// VOS.add(vo);
+// });
+ for (BizType btmItem : btmItems) {
OsBtmTypeVO vo = btmDO2VO(btmItem,attributeVOMap);
VOS.add(vo);
- });
+ }
return VOS;
}
@@ -251,7 +256,8 @@
vo.setApNameArray(btmItem.apNameArray);
List<OsAttributeVO> attributeVOS = attributeService.listAttrByIds(Arrays.stream(btmItem.apNameArray).collect(Collectors.toList()),attributeVOMap);
List<OsBtmTypeAttributeVO> btmTypeAttributeVOS = new ArrayList<>();
- Optional.ofNullable(attributeVOS).orElseGet(() -> new ArrayList<>()).stream().forEach(attributeVO -> {
+// Optional.ofNullable(attributeVOS).orElseGet(() -> new ArrayList<>()).stream().forEach(attributeVO -> {
+ for (OsAttributeVO attributeVO : attributeVOS) {
OsBtmTypeAttributeVO btmTypeAttributeVO = new OsBtmTypeAttributeVO();
BeanUtilForVCI.convert(attributeVO, btmTypeAttributeVO);
btmTypeAttributeVO.setPkBtmType(vo.getOid());
@@ -271,7 +277,8 @@
btmTypeAttributeVO.setEnumItemMap(enumService.getEnumValueMap(btmTypeAttributeVO.getEnumId()));
}
btmTypeAttributeVOS.add(btmTypeAttributeVO);
- });
+// });
+ }
vo.setAttributes(btmTypeAttributeVOS);
}
return vo;
@@ -703,7 +710,13 @@
List<Tree> rootTreeList = new ArrayList<>();
BizType[] bizTypes = getBizTypes("");
OsBtmTypeVO osBtmTypeVO = null;
- List<OsBtmTypeVO> osBtmTypeVOS = btmDO2VOs(Arrays.asList(bizTypes),null);
+ Map<String, OsAttributeVO> attributeVOMap = null;
+ if(bizTypes.length > 0){
+ //鍏堝皢鎵�闇�瑕佺殑灞炴�с�佹灇涓炬暟鎹叏閮ㄥ姞杞藉嚭鏉ワ紝閬垮厤鍚庣画杩涜閲嶅鍔犺浇
+ attributeVOMap = attributeService.selectAllAttributeMap();
+ AllOsEnumVOMapThreadLocal.set(enumService.selectAllEnumMap());
+ }
+ List<OsBtmTypeVO> osBtmTypeVOS = btmDO2VOs(Arrays.asList(bizTypes),attributeVOMap);
for (int i = 0; i < osBtmTypeVOS.size(); i++) {
osBtmTypeVO = osBtmTypeVOS.get(i);
@@ -721,6 +734,7 @@
rootTreeList.add(tree);
}
}
+ AllOsEnumVOMapThreadLocal.remove();
rootTreeList = rootTreeList.stream().sorted((o1, o2) -> o1.getId().compareTo(o2.getId())).collect(Collectors.toList());
return rootTreeList;
}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsEnumServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsEnumServiceImpl.java
index c874cc9..e4c7ff6 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsEnumServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsEnumServiceImpl.java
@@ -26,6 +26,7 @@
import com.vci.starter.web.pagemodel.DataGrid;
import com.vci.starter.web.pagemodel.PageHelper;
import com.vci.starter.web.util.*;
+import com.vci.web.other.AllOsEnumVOMapThreadLocal;
import com.vci.web.service.OsEnumServiceI;
import com.vci.web.service.OsLifeCycleServiceI;
import com.vci.web.service.WebBoServiceI;
@@ -197,7 +198,10 @@
if(StringUtils.isBlank(enumCode)){
return null;
}
- Map<String, OsEnumVO> enumVOMap = self.selectAllEnumMap();
+ Map<String, OsEnumVO> enumVOMap = AllOsEnumVOMapThreadLocal.get();
+ if(enumVOMap == null){
+ enumVOMap = self.selectAllEnumMap();
+ }
if(MY_DATA_SECRET.equalsIgnoreCase(enumCode)){
//褰撳墠鐢ㄦ埛
OsEnumVO enumVO = enumVOMap.getOrDefault(EnumIdConstant.DATASECRET_ENUMNAME, null);
--
Gitblit v1.9.3