From 9423f2936340d82b046ec615381c1c5e03698557 Mon Sep 17 00:00:00 2001
From: yuxc <yuxc@vci-tech.com>
Date: 星期五, 27 九月 2024 17:56:53 +0800
Subject: [PATCH] 1、主要完成对获取UI上下文的定义接口的优化,优化的方向为对多次获取业务类型对象进行转换而导致耗时较久的问题继续修改,还有对多次获取属性对象进行转换对象导致耗时过长问题进行修改。 2、对树的数据查询接口的优化,对多次获取属性对象进行转换对象导致耗时过长问题进行修改。

---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java       |   52 +++++++++++-
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsBtmServiceI.java               |   26 +++++-
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIDataServiceI.java              |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java    |   68 +++++++++++-----
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIDataController.java      |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java       |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIController.java          |    3 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsAttributeServiceI.java         |    8 ++
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java      |   14 ++-
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIEngineServiceI.java            |    9 +-
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java |   26 ++++++
 11 files changed, 166 insertions(+), 46 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java
index f16e2fc..0e30296 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java
@@ -95,7 +95,7 @@
 	 * @throws PLException
 	 */
 	@VciBusinessLog(operateName="鏃ュ織鏌ヨ")
-	@GetMapping(value = "/getLogListByContion")
+	@PostMapping(value = "/getLogListByContion")
 	@ResponseBody
 	public BaseResult getLogListByContion(@RequestBody LogQueryCriteriaDTO dto){
 		try {
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIController.java
index eef47eb..93a5a43 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIController.java
@@ -1,5 +1,6 @@
 package com.vci.web.controller;
 
+import com.vci.corba.common.PLException;
 import com.vci.starter.web.annotation.controller.VciUnCheckRight;
 import com.vci.starter.web.annotation.log.VciBusinessLog;
 import com.vci.starter.web.pagemodel.BaseResult;
@@ -66,7 +67,7 @@
 	 * @return 琛ㄥ崟鐨勫畾涔�
 	 */
 	@GetMapping("/getTableDefineById")
-	public UITableDefineVO getTableDefineById(String btmType,String id){
+	public UITableDefineVO getTableDefineById(String btmType,String id) throws PLException {
 		return uiService.getTableById(btmType,id);
 	}
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIDataController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIDataController.java
index dba34fa..b1a9072 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIDataController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIDataController.java
@@ -46,7 +46,7 @@
     @PostMapping("/dataGridQuery")
     @VciUnCheckRight
     @VciBusinessLog(operateName = "鍒楄〃鏁版嵁鐨勬煡璇�",description = "${param.btmname}閲岀殑${param.tableDefineId}")
-    public DataGrid dataGrid(UIDataGridQuery dataGridQuery){
+    public DataGrid dataGrid(UIDataGridQuery dataGridQuery) throws PLException {
         return uiDataService.getDataForGrid(dataGridQuery);
     }
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsAttributeServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsAttributeServiceI.java
index 91400a3..1b7c9fc 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsAttributeServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsAttributeServiceI.java
@@ -104,6 +104,14 @@
 	List<OsAttributeVO> listAttrByIds(Collection<String> attrCodes);
 
 	/**
+	 * 浣跨敤灞炴�х紪鍙疯幏鍙栧璞�--鎵归噺
+	 * @param attrCodes 灞炴�х殑鑻辨枃鍚嶇О
+	 * @param attributeVOMap 灞炴�у璞�
+	 * @return 灞炴�х殑鏄剧ず瀵硅薄
+	 */
+	List<OsAttributeVO> listAttrByIds(Collection<String> attrCodes, Map<String, OsAttributeVO> attributeVOMap);
+
+	/**
 	 * 鎵归噺娣诲姞灞炴��
 	 * @param attribItemList 灞炴�х殑鍒楄〃
 	 */
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsBtmServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsBtmServiceI.java
index 8c21a3c..c489099 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsBtmServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsBtmServiceI.java
@@ -4,10 +4,7 @@
 import com.vci.corba.omd.btm.BizType;
 import com.vci.dto.OsBtmTypeDTO;
 import com.vci.model.IndexObject;
-import com.vci.pagemodel.OsBtmTypeAttributeVO;
-import com.vci.pagemodel.OsBtmTypeVO;
-import com.vci.pagemodel.OsERVO;
-import com.vci.pagemodel.OsUsedAttributeVO;
+import com.vci.pagemodel.*;
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.pagemodel.PageHelper;
@@ -49,6 +46,11 @@
      * @return 涓氬姟绫诲瀷瀵硅薄
      */
     List<OsBtmTypeVO> selectAllBtm();
+    /**
+     * 鏌ヨ鎵�鏈夌殑涓氬姟绫诲瀷
+     * @return 涓氬姟绫诲瀷瀵硅薄
+     */
+    List<OsBtmTypeVO> selectAllBtm(Map<String, OsAttributeVO> attributeVOMap);
 
     /**
      * 鑾峰彇鍚嶅瓧浠ilter寮�濮嬬殑涓氬姟绫诲瀷(for 鏌ヨ)锛屼富瑕佺敤浜庡睘鎬ф睜鐨勪笟鍔$被鍨嬮�夋嫨瀵硅瘽妗�
@@ -74,18 +76,24 @@
     Map<String,OsBtmTypeVO> selectAllBtmMap();
 
     /**
+     * 鏌ヨ鎵�鏈夌殑涓氬姟绫诲瀷鏄犲皠
+     * @return key 鏄笟鍔$殑鑻辨枃鍚嶇О鐨勫皬鍐�
+     */
+    Map<String,OsBtmTypeVO> selectAllBtmMap(Map<String, OsAttributeVO> attributeVOMap);
+
+    /**
      * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
      * @param btmItems 鏁版嵁瀵硅薄
      * @return 鏄剧ず瀵硅薄
      */
-    List<OsBtmTypeVO> btmDO2VOs(Collection<BizType> btmItems);
+    List<OsBtmTypeVO> btmDO2VOs(Collection<BizType> btmItems,Map<String, OsAttributeVO> attributeVOMap);
 
     /**
      * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
      * @param btmItem 鏁版嵁瀵硅薄
      * @return 鏄剧ず瀵硅薄
      */
-    OsBtmTypeVO btmDO2VO(BizType btmItem);
+    OsBtmTypeVO btmDO2VO(BizType btmItem, Map<String, OsAttributeVO> attributeVOMap);
 
     /**
      * 浣跨敤缂栧彿鑾峰彇涓氬姟绫诲瀷
@@ -100,6 +108,12 @@
      * @return 涓氬姟绫诲瀷
      */
     OsBtmTypeVO getBtmById(String id);
+    /**
+     * 浣跨敤缂栧彿鑾峰彇涓氬姟绫诲瀷
+     * @param id 缂栧彿
+     * @return 涓氬姟绫诲瀷
+     */
+    OsBtmTypeVO getBtmById(String id, Map<String, OsAttributeVO> attributeVOMap);
 
     /**
      * 鑾峰彇涓氬姟绫诲瀷鐨勫湪鍝釜灞炴�т腑浣跨敤
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIDataServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIDataServiceI.java
index 0bbdd9b..8213139 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIDataServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIDataServiceI.java
@@ -34,7 +34,7 @@
      * @return DataGrid涓璬ata涓篗ap<String,String>鏍煎紡
      * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
-    DataGrid getDataForGrid(UIDataGridQuery dataGridQuery)  throws VciBaseException;
+    DataGrid getDataForGrid(UIDataGridQuery dataGridQuery) throws VciBaseException, PLException;
 
     /**
      * 鑾峰彇琛ㄥ崟鐨勬暟鎹�
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIEngineServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIEngineServiceI.java
index 40b4ec7..bbc26c9 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIEngineServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIEngineServiceI.java
@@ -1,5 +1,6 @@
 package com.vci.web.service;
 
+import com.vci.corba.common.PLException;
 import com.vci.corba.portal.data.PLTabButton;
 import com.vci.corba.portal.data.PLUILayout;
 import com.vci.corba.portal.data.PortalVI;
@@ -90,7 +91,7 @@
 	 * @param queryDetail 鏌ヨ鏄庣粏
 	 * @return 鏄剧ず瀵硅薄
 	 */
-	UITableDefineVO tableDO2VO(PortalVI prm,boolean queryDetail);
+	UITableDefineVO tableDO2VO(PortalVI prm, boolean queryDetail, Map<String, OsAttributeVO> attributeVOMap) throws PLException;
 
 	/**
 	 * 浣跨敤琛ㄦ牸鐨勮嫳鏂囧悕绉拌幏鍙栬〃鍗�
@@ -98,7 +99,7 @@
 	 * @param btmId 涓氬姟绫诲瀷
 	 * @return 琛ㄥ崟鐨勫畾涔�
 	 */
-	UITableDefineVO getTableById(String btmId,String id);
+	UITableDefineVO getTableById(String btmId,String id) throws PLException;
 
 	/**
 	 * 浣跨敤琛ㄦ牸鐨勮嫳鏂囧悕绉拌幏鍙栬〃鍗�
@@ -169,7 +170,7 @@
 	 * @param componentOid 缁勪欢鐨勪富閿�
 	 * @return 涓婚敭鐨勬樉绀哄璞�
 	 */
-	UIComponentVO getComponentByOid(String componentOid);
+	UIComponentVO getComponentByOid(String componentOid, Map<String, OsAttributeVO> attributeVOMap);
 
 	/**
 	 * 鑾峰彇鏌愪釜缁勪欢鐨勬寜閽�
@@ -190,7 +191,7 @@
 	 * @param button 鎸夐挳鐨勬暟鎹璞�
 	 * @return 鏄剧ず瀵硅薄
 	 */
-	UIButtonDefineVO buttonDO2VO(PLTabButton button) ;
+	UIButtonDefineVO buttonDO2VO(PLTabButton button,Map<String, UIActionVO> actionVOMap) ;
 
 	/**
 	 * 鏌ヨ鎵�鏈夌殑缁勪欢
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java
index 038360c..31b4c62 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java
@@ -517,6 +517,32 @@
 	}
 
 	/**
+	 * 浣跨敤灞炴�х紪鍙疯幏鍙栧璞�--鎵归噺
+	 *
+	 * @param attrCodes 灞炴�х殑鑻辨枃鍚嶇О
+	 * @param attributeVOMap 灞炴�у璞�
+	 * @return 灞炴�х殑鏄剧ず瀵硅薄
+	 */
+	@Override
+	public List<OsAttributeVO> listAttrByIds(Collection<String> attrCodes,Map<String, OsAttributeVO> attributeVOMap) {
+		if(CollectionUtils.isEmpty(attrCodes)){
+			return null;
+		}
+		if(attributeVOMap == null){
+			attributeVOMap = self.selectAllAttributeMap();
+		}
+		List<OsAttributeVO> attributeVOS = new ArrayList<>();
+		Map<String, OsAttributeVO> finalAttributeVOMap = attributeVOMap;
+		attrCodes.stream().forEach(attrCode->{
+			OsAttributeVO attributeVO = finalAttributeVOMap.getOrDefault(attrCode.toLowerCase(),null);
+			if(attributeVO!=null){
+				attributeVOS.add(attributeVO);
+			}
+		});
+		return attributeVOS;
+	}
+
+	/**
 	 * 鎵归噺娣诲姞灞炴��
 	 *
 	 * @param attribItemList 灞炴�х殑鍒楄〃
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 319777c..73a4fac 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
@@ -152,7 +152,22 @@
     @VciUnLog
     public List<OsBtmTypeVO> selectAllBtm() {
         try {
-            return btmDO2VOs(Arrays.stream(platformClientUtil.getBtmService().getBizTypes("")).collect(Collectors.toList()));
+            return btmDO2VOs(Arrays.stream(platformClientUtil.getBtmService().getBizTypes("")).collect(Collectors.toList()),null);
+        } catch (PLException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑涓氬姟绫诲瀷
+     *
+     * @return 涓氬姟绫诲瀷瀵硅薄
+     */
+    @Override
+    @VciUnLog
+    public List<OsBtmTypeVO> selectAllBtm(Map<String, OsAttributeVO> attributeVOMap) {
+        try {
+            return btmDO2VOs(Arrays.stream(platformClientUtil.getBtmService().getBizTypes("")).collect(Collectors.toList()),attributeVOMap);
         } catch (PLException e) {
             throw new RuntimeException(e);
         }
@@ -168,6 +183,16 @@
     public Map<String, OsBtmTypeVO> selectAllBtmMap() {
         return Optional.ofNullable(self.selectAllBtm()).orElseGet(() -> new ArrayList<OsBtmTypeVO>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(), t -> t, (o1, o2) -> o1));
     }
+    /**
+     * 鏌ヨ鎵�鏈夌殑涓氬姟绫诲瀷鏄犲皠
+     *
+     * @return key 鏄笟鍔$殑鑻辨枃鍚嶇О鐨勫皬鍐�
+     */
+    @Override
+    @VciUnLog
+    public Map<String, OsBtmTypeVO> selectAllBtmMap(Map<String, OsAttributeVO> attributeVOMap) {
+        return Optional.ofNullable(self.selectAllBtm(attributeVOMap)).orElseGet(() -> new ArrayList<OsBtmTypeVO>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(), t -> t, (o1, o2) -> o1));
+    }
 
     /**
      * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
@@ -176,10 +201,10 @@
      * @return 鏄剧ず瀵硅薄
      */
     @Override
-    public List<OsBtmTypeVO> btmDO2VOs(Collection<BizType> btmItems) {
+    public List<OsBtmTypeVO> btmDO2VOs(Collection<BizType> btmItems,Map<String, OsAttributeVO> attributeVOMap) {
         List<OsBtmTypeVO> VOS = new ArrayList<>();
         Optional.ofNullable(btmItems).orElseGet(() -> new ArrayList<>()).stream().forEach(btmItem -> {
-            OsBtmTypeVO vo = btmDO2VO(btmItem);
+            OsBtmTypeVO vo = btmDO2VO(btmItem,attributeVOMap);
             VOS.add(vo);
         });
         return VOS;
@@ -192,7 +217,7 @@
      * @return 鏄剧ず瀵硅薄
      */
     @Override
-    public OsBtmTypeVO btmDO2VO(BizType btmItem) {
+    public OsBtmTypeVO btmDO2VO(BizType btmItem, Map<String, OsAttributeVO> attributeVOMap) {
         OsBtmTypeVO vo = new OsBtmTypeVO();
         if (btmItem != null) {
             vo.setOid(btmItem.oid);
@@ -226,7 +251,7 @@
             }
             vo.setLifeCycleIds(Arrays.stream(btmItem.lifeCycles).collect(Collectors.joining(",")));
             vo.setApNameArray(btmItem.apNameArray);
-            List<OsAttributeVO> attributeVOS = attributeService.listAttrByIds(Arrays.stream(btmItem.apNameArray).collect(Collectors.toList()));
+            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 -> {
                 OsBtmTypeAttributeVO btmTypeAttributeVO = new OsBtmTypeAttributeVO();
@@ -287,6 +312,19 @@
             return null;
         }
         return self.selectAllBtmMap().getOrDefault(id.toLowerCase(), null);
+    }
+    /**
+     * 浣跨敤缂栧彿鑾峰彇涓氬姟绫诲瀷
+     *
+     * @param id 缂栧彿
+     * @return 涓氬姟绫诲瀷
+     */
+    @Override
+    public OsBtmTypeVO getBtmById(String id,Map<String, OsAttributeVO> attributeVOMap) {
+        if (StringUtils.isBlank(id)) {
+            return null;
+        }
+        return self.selectAllBtmMap(attributeVOMap).getOrDefault(id.toLowerCase(), null);
     }
 
     /**
@@ -366,7 +404,7 @@
             return new ArrayList<>();
         }
         BizType bizType = bizTypes[0];
-        OsBtmTypeVO btmTypeVO = btmDO2VO(bizType);
+        OsBtmTypeVO btmTypeVO = btmDO2VO(bizType,null);
         List<OsBtmTypeAttributeVO> attributes = btmTypeVO.getAttributes();
         if (attributes == null) {
             attributes = new ArrayList<>();
@@ -646,7 +684,7 @@
         List<Tree> rootTreeList = new ArrayList<>();
         BizType[] bizTypes = getBizTypes("");
         OsBtmTypeVO osBtmTypeVO = null;
-        List<OsBtmTypeVO> osBtmTypeVOS = btmDO2VOs(Arrays.asList(bizTypes));
+        List<OsBtmTypeVO> osBtmTypeVOS = btmDO2VOs(Arrays.asList(bizTypes),null);
         for (int i = 0; i < osBtmTypeVOS.size(); i++) {
             osBtmTypeVO = osBtmTypeVOS.get(i);
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java
index 5d53a0d..30f044b 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java
@@ -69,6 +69,11 @@
      */
     @Autowired
     private OsBtmServiceI btmService;
+    /**
+     * 灞炴�ф湇鍔�
+     */
+    @Autowired
+    private OsAttributeServiceI attrService;
 
     /**
      * 閾炬帴绫诲瀷
@@ -130,10 +135,10 @@
      * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
     @Override
-    public DataGrid getDataForGrid(UIDataGridQuery dataGridQuery) throws VciBaseException {
+    public DataGrid getDataForGrid(UIDataGridQuery dataGridQuery) throws VciBaseException, PLException {
         VciBaseUtil.alertNotNull(dataGridQuery,"鏌ヨ瀵硅薄",dataGridQuery.getBtmname(),"涓氬姟绫诲瀷",dataGridQuery.getTableDefineId());
         //鍏堝垽鏂煡璇㈡ā鏉�
-        UITableDefineVO tableDefineVO = uiEngineService.getComponentByOid(dataGridQuery.getComponentOid()).getTableDefineVO();
+        UITableDefineVO tableDefineVO = uiEngineService.getComponentByOid(dataGridQuery.getComponentOid(),null).getTableDefineVO();
         String queryTemplate = !CollectionUtils.isEmpty(dataGridQuery.getSourceData())?dataGridQuery.getSourceData().getOrDefault("querytemplate",tableDefineVO.getQueryTemplateName()):tableDefineVO.getQueryTemplateName();
         if(StringUtils.isBlank(queryTemplate)){
             //璇存槑娌℃湁璁剧疆鏌ヨ妯℃澘锛岄渶瑕佺湅鐪嬪湪杩欎釜琛ㄦ牸鎵�鍦ㄧ殑缁勪欢鏈夋病鏈夎缃�
@@ -339,7 +344,8 @@
     @Override
     public List<Tree> getDataForTree(UITreeQuery treeQuery) throws VciBaseException {
         VciBaseUtil.alertNotNull(treeQuery,"琛ㄥ崟鐨勬煡璇㈠璞�",treeQuery.getBtmname(),"涓氬姟绫诲瀷鐨勪俊鎭�",treeQuery.getComponentOid(),"鏍戞墍鍦ㄧ殑缁勪欢鐨勪富閿�");
-        UIComponentVO componentVO = uiEngineService.getComponentByOid(treeQuery.getComponentOid());
+        Map<String, OsAttributeVO> attributeVOMap = attrService.selectAllAttributeMap();
+        UIComponentVO componentVO = uiEngineService.getComponentByOid(treeQuery.getComponentOid(),attributeVOMap);
         if(componentVO == null || StringUtils.isBlank(componentVO.getOid())){
             throw new VciBaseException("鏍戠殑閰嶇疆淇℃伅娌℃湁鑾峰彇鍒�");
         }
@@ -382,7 +388,7 @@
         if(StringUtils.isBlank(treeDefineVO.getLinkType())){
             //杩欎釜鏄笟鍔$被鍨嬬殑鑷弬鐓�
             //浠ュ墠鐨勫钩鍙版病鏈夊鑷弬鐓ц繖绉嶆湁鍏ㄩ儴鏌ヨ鐨�
-            OsBtmTypeVO btmTypeVO = btmService.getBtmById(treeDefineVO.getBtmType());
+            OsBtmTypeVO btmTypeVO = btmService.getBtmById(treeDefineVO.getBtmType(),attributeVOMap);
             queryFieldList.addAll(btmTypeVO.getAttributes().stream().map(OsBtmTypeAttributeVO::getId).collect(Collectors.toList()));
             queryFieldList.addAll(WebBoServiceImpl.BO_BASE_FIELD_MAP.values());
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java
index 558679f..f2b6086 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java
@@ -82,6 +82,12 @@
 	private OsBtmServiceI btmService;
 
 	/**
+	 * 灞炴�х殑鏈嶅姟
+	 */
+	@Autowired
+	private OsAttributeServiceI attrService;
+
+	/**
 	 * 涓氬姟绫诲瀷鐨勬湇鍔�
 	 */
 	@Autowired
@@ -315,7 +321,13 @@
 					//璇存槑鏄摼鎺ョ被鍨�
 					field = field.substring("t_oid.".length());
 				}
-				OsAttributeVO attributeVO = attributeService.getAttr(field);
+//				OsAttributeVO attributeVO = attributeService.getAttr(field);
+				OsAttributeVO attributeVO = null;
+				try {
+					attributeVO = attributeService.attributeDO2VO(platformClientUtil.getAttributeService().getAttributeDefByName(field));
+				} catch (PLException e) {
+					throw new RuntimeException(e);
+				}
 				UIFormReferVO referVO = new UIFormReferVO();
 				if(attributeVO !=null && StringUtils.isNotBlank(attributeVO.getBtmTypeId())
 						&& StringUtils.isBlank(itemXO.getRefer())
@@ -473,7 +485,12 @@
 	public List<UITableDefineVO> tableDO2VOs(Collection<PortalVI> prms, boolean queryDetail) {
 		List<UITableDefineVO> tableDefineVOList = new ArrayList<>();
 		Optional.ofNullable(prms).orElseGet(()->new ArrayList<PortalVI>()).stream().forEach(portal->{
-			UITableDefineVO defineVO = tableDO2VO(portal,queryDetail);
+			UITableDefineVO defineVO = null;
+			try {
+				defineVO = tableDO2VO(portal,queryDetail,null);
+			} catch (PLException e) {
+				throw new RuntimeException(e);
+			}
 			tableDefineVOList.add(defineVO);
 		});
 		return tableDefineVOList;
@@ -488,7 +505,7 @@
 	 */
 	@Override
 	@VciUnLog
-	public UITableDefineVO tableDO2VO(PortalVI portal, boolean queryDetail) {
+	public UITableDefineVO tableDO2VO(PortalVI portal, boolean queryDetail, Map<String, OsAttributeVO> attributeVOMap) throws PLException {
 		UITableDefineVO tableDefineVO = new UITableDefineVO();
 		tableDefineVO.setOid(portal.id);
 		tableDefineVO.setId(portal.viName);
@@ -593,7 +610,7 @@
 							fieldVO.setSortField(fieldName);
 							fieldVO.setEdit("combox");
 							//鑲畾鏄笟鍔$被鍨嬶紝鍥犱负閾炬帴绫诲瀷娌℃湁杩欎釜瀛楁
-							OsBtmTypeVO btmTypeVO = btmService.getBtmById(tableDefineVO.getBtmType());
+							OsBtmTypeVO btmTypeVO = btmService.btmDO2VO(platformClientUtil.getBtmService().getBizTypeByName(tableDefineVO.getBtmType()),attributeVOMap);
 							if(btmTypeVO!=null && StringUtils.isNotBlank(btmTypeVO.getLifeCycleId())){
 								fieldVO.setComboxKey(btmTypeVO.getLifeCycleId() + LC_STATUS_SUBFIX);
 							}
@@ -712,7 +729,7 @@
 	 * @return 琛ㄥ崟鐨勫畾涔�
 	 */
 	@Override
-	public UITableDefineVO getTableById(String btmId, String id) {
+	public UITableDefineVO getTableById(String btmId, String id) throws PLException {
 		if(StringUtils.isBlank(btmId) || StringUtils.isBlank(id)){
 			return null;
 		}
@@ -723,7 +740,7 @@
 			} catch (PLException vciError) {
 				throw WebUtil.getVciBaseException(vciError);
 			}
-			return tableDO2VO(portalVI,true);
+			return tableDO2VO(portalVI,true,null);
 		}
 		return self.selectAllTableMap().getOrDefault(btmId.toLowerCase()+SEP+id.toLowerCase(),null);
 	}
@@ -1060,8 +1077,14 @@
 	 */
 	private List<UILayoutVO> UILayoutDO2VOs(Collection<PLTabPage> pages, boolean queryDetail){
 		List<UILayoutVO> contentVOS = new ArrayList<>();
+		Map<String, OsAttributeVO> attributeVOMap;
+		if(pages != null && pages.size() > 0){
+			attributeVOMap = attrService.selectAllAttributeMap();
+		}else{
+			attributeVOMap = null;
+		}
 		Optional.ofNullable(pages).orElseGet(()->new ArrayList<PLTabPage>()).stream().forEach(page->{
-			UILayoutVO layoutVO = UILayoutDO2VO(page, queryDetail);
+			UILayoutVO layoutVO = UILayoutDO2VO(page, queryDetail,attributeVOMap);
 			if(layoutVO.isEnableStatus()) {
 				contentVOS.add(layoutVO);
 			}
@@ -1084,7 +1107,7 @@
 	 * @return 鍖哄煙鐨勬樉绀哄璞�
 	 */
 	@VciUnLog
-	private UILayoutVO UILayoutDO2VO(PLTabPage page, boolean queryDetail){
+	private UILayoutVO UILayoutDO2VO(PLTabPage page, boolean queryDetail,Map<String, OsAttributeVO> attributeVOMap){
 		UILayoutVO layoutVO = new UILayoutVO();
 		if(page !=null ){
 			layoutVO.setOid(page.plOId);
@@ -1124,7 +1147,7 @@
 			if(queryDetail){
 				//鍗曚釜鐨勶紝鐩存帴鑾峰彇
 				try {
-					layoutVO.setComponentVOs(uiComponentDO2VOs(Arrays.stream(platformClientUtil.getUIService().getPLPageDefinationsByPageContextOId(layoutVO.getOid())).collect(Collectors.toList()),true));
+					layoutVO.setComponentVOs(uiComponentDO2VOs(Arrays.stream(platformClientUtil.getUIService().getPLPageDefinationsByPageContextOId(layoutVO.getOid())).collect(Collectors.toList()),true,attributeVOMap));
 				} catch (PLException vciError) {
 					throw WebUtil.getVciBaseException(vciError);
 				}
@@ -1164,13 +1187,13 @@
 	 * @return 涓婚敭鐨勬樉绀哄璞�
 	 */
 	@Override
-	public UIComponentVO getComponentByOid(String componentOid) {
+	public UIComponentVO getComponentByOid(String componentOid, Map<String, OsAttributeVO> attributeVOMap) {
 		if(StringUtils.isBlank(componentOid)){
 			return null;
 		}
 		if(!QUERY_BY_CACHE){
 			try {
-				return uiComponentDO2VO(platformClientUtil.getUIService().getPLPageDefinationById(componentOid),true);
+				return uiComponentDO2VO(platformClientUtil.getUIService().getPLPageDefinationById(componentOid),true,attributeVOMap);
 			} catch (PLException vciError) {
 				throw WebUtil.getVciBaseException(vciError);
 			}
@@ -1189,10 +1212,10 @@
 	 * @param pages 鏁版嵁瀵硅薄
 	 * @return 鏄剧ず瀵硅薄
 	 */
-	private List<UIComponentVO> uiComponentDO2VOs(Collection<com.vci.corba.portal.data.PLPageDefination> pages, boolean queryDetail){
+	private List<UIComponentVO> uiComponentDO2VOs(Collection<com.vci.corba.portal.data.PLPageDefination> pages, boolean queryDetail,Map<String, OsAttributeVO> attributeVOMap){
 		List<UIComponentVO> componentVOS = new ArrayList<>();
 		pages.stream().forEach(page->{
-			componentVOS.add(uiComponentDO2VO(page,queryDetail));
+			componentVOS.add(uiComponentDO2VO(page,queryDetail,attributeVOMap));
 		});
 		return componentVOS;
 	}
@@ -1203,7 +1226,7 @@
 	 * @return 鏄剧ず瀵硅薄
 	 */
 	@VciUnLog
-	private UIComponentVO uiComponentDO2VO(PLPageDefination page, boolean queryDetail){
+	private UIComponentVO uiComponentDO2VO(PLPageDefination page, boolean queryDetail, Map<String, OsAttributeVO> attributeVOMap){
 		UIComponentVO componentVO = new UIComponentVO();
 		if(page !=null){
 			componentVO.setOid(page.plOId);
@@ -1242,7 +1265,7 @@
 					componentVO.setTableDefineVO(tableDefineVOMap.get(key));
 				}else{
 					try {
-						componentVO.setTableDefineVO(tableDO2VO(platformClientUtil.getUIService().getPortalVIByTypeNameAndVIName(btmType,componentDefineXO.getTemplateId()),true));
+						componentVO.setTableDefineVO(tableDO2VO(platformClientUtil.getUIService().getPortalVIByTypeNameAndVIName(btmType,componentDefineXO.getTemplateId()),true,attributeVOMap));
 					} catch (PLException vciError) {
 						throw WebUtil.getVciBaseException(vciError);
 					}
@@ -1278,7 +1301,7 @@
 					tableDefineVO= tableDefineVOMap.get(key);
 				}else{
 					try {
-						tableDefineVO = tableDO2VO(platformClientUtil.getUIService().getPortalVIByTypeNameAndVIName(btmType,componentDefineXO.getTemplateId()),true);
+						tableDefineVO = tableDO2VO(platformClientUtil.getUIService().getPortalVIByTypeNameAndVIName(btmType,componentDefineXO.getTemplateId()),true,null);
 					} catch (PLException vciError) {
 						throw WebUtil.getVciBaseException(vciError);
 					}
@@ -1432,9 +1455,13 @@
 	@Override
 	public List<UIButtonDefineVO> buttonDO2VOs(Collection<com.vci.corba.portal.data.PLTabButton> buttons){
 		List<UIButtonDefineVO> buttonDefineVOS = new ArrayList<>();
-		Optional.ofNullable(buttons).orElseGet(()->new ArrayList<>()).stream().forEach(button->{
-			buttonDefineVOS.add(buttonDO2VO(button));
-		});
+		if(buttons != null && buttons.size() > 0){
+			Map<String, UIActionVO> actionVOMap = self.selectAllActionMap();
+			Optional.ofNullable(buttons).orElseGet(()->new ArrayList<>()).stream().forEach(button->{
+				buttonDefineVOS.add(buttonDO2VO(button, actionVOMap));
+			});
+		}
+
 		return buttonDefineVOS;
 	}
 
@@ -1444,9 +1471,8 @@
 	 * @return 鏄剧ず瀵硅薄
 	 */
 	@Override
-	public UIButtonDefineVO buttonDO2VO(com.vci.corba.portal.data.PLTabButton button)  {
+	public UIButtonDefineVO buttonDO2VO(com.vci.corba.portal.data.PLTabButton button, Map<String, UIActionVO> actionVOMap)  {
 		UIButtonDefineVO buttonVO = new UIButtonDefineVO();
-		Map<String, UIActionVO> actionVOMap = self.selectAllActionMap();
 //		Map<String, UIActionVO> actionVOMap = ServiceProvider.getUIService().getAllPLAction();
 		if(button !=null){
 			buttonVO.setOid(button.plOId);

--
Gitblit v1.9.3