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