From a485f4494787001a2695863e239910c019a52246 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期四, 05 十二月 2024 20:47:40 +0800
Subject: [PATCH] 表单\表格定义保存对象转换逻辑修改。UI数据查询接口修改

---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/xmlmodel/UIComponentDefineXO.java                          |   14 +
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/UIDataBaseServiceI.java              |   40 ++++
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java        |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java                      |    3 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIFormQuery.java                                     |   13 +
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataTestQueryServiceImpl.java |   60 ++++++
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIDataGridQuery.java                                 |    4 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java                    |   21 +-
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UITableDefineVO.java                             |    9 +
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UITreeTableDefineVO.java                         |    1 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UIComponentVO.java                               |   13 +
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java    |  348 +++++++++++++++++++++-----------------
 12 files changed, 357 insertions(+), 171 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UIComponentVO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UIComponentVO.java
index 653208f..a29911a 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UIComponentVO.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UIComponentVO.java
@@ -27,6 +27,11 @@
     private String name;
 
     /**
+     * bs绔娇鐢ㄧ殑鑷畾涔夋煡璇㈢被鍚嶆垨URL
+     */
+    private String bsCustQueryCLsOrUrl;
+
+    /**
      * 鎵�灞炲尯鍩�
      */
     private String pkLayout;
@@ -86,6 +91,14 @@
      */
     private List<UIButtonDefineVO> buttons;
 
+    public void setBsCustQueryCLsOrUrl(String bsCustQueryCLsOrUrl) {
+        this.bsCustQueryCLsOrUrl = bsCustQueryCLsOrUrl;
+    }
+
+    public String getBsCustQueryCLsOrUrl() {
+        return bsCustQueryCLsOrUrl;
+    }
+
     @Override
     public String getId() {
         return id;
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UITableDefineVO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UITableDefineVO.java
index f26c66c..e932bf8 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UITableDefineVO.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UITableDefineVO.java
@@ -85,6 +85,7 @@
      * 鏌ヨ鐨勫垪
      */
     private List<UITableFieldVO> queryColumns;
+
     /**
      * freeMarker鐨勮〃杈惧紡鐨勫��
      */
@@ -154,6 +155,14 @@
         this.queryTemplateName = queryTemplateName;
     }
 
+    public void setFreeMarkerEls(List<String> freeMarkerEls) {
+        this.freeMarkerEls = freeMarkerEls;
+    }
+
+    public List<String> getFreeMarkerEls() {
+        return freeMarkerEls;
+    }
+
     public List<List<UITableFieldVO>> getCols() {
         return cols;
     }
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UITreeTableDefineVO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UITreeTableDefineVO.java
index 9ad671e..61e9065 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UITreeTableDefineVO.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UITreeTableDefineVO.java
@@ -11,6 +11,7 @@
      * 搴忓垪鍖�
      */
     private static final long serialVersionUID = -4334171123988489424L;
+
     /**
      * 鏍戝舰缁撴瀯灞曞紑鍒�
      */
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIDataGridQuery.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIDataGridQuery.java
index c719a91..dac71b0 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIDataGridQuery.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIDataGridQuery.java
@@ -1,8 +1,6 @@
 package com.vci.query;
 
-import com.alibaba.fastjson.JSON;
 import com.vci.starter.web.pagemodel.BaseQueryObject;
-import com.vci.starter.web.util.Lcm.Func;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -32,7 +30,7 @@
     private String uiDefineId;
 
     /**
-     * 缁勪欢鐨勪富閿�
+     * 缁勪欢鐨勪富閿�(椤甸潰瀹氫箟鐨勪富閿�)
      */
     private String componentOid;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIFormQuery.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIFormQuery.java
index cb54007..a698ce1 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIFormQuery.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIFormQuery.java
@@ -13,6 +13,11 @@
     private String btmName;
 
     /**
+     * 缁勪欢鐨勪富閿�(椤甸潰瀹氫箟鐨勪富閿�)
+     */
+    private String componentOid;
+
+    /**
      * 琛ㄥ崟瀹氫箟鐨勪富閿�
      */
     private String formDefineOid;
@@ -32,6 +37,14 @@
      */
     private String sourceOid;
 
+    public void setComponentOid(String componentOid) {
+        this.componentOid = componentOid;
+    }
+
+    public String getComponentOid() {
+        return componentOid;
+    }
+
     public void setSourceOid(String sourceOid) {
         this.sourceOid = sourceOid;
     }
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java
index 5cca29c..e51a69d 100644
--- a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java
@@ -1456,7 +1456,7 @@
 		userInfo.updateUser = user.getLastModifier() == null ? "" : user.getLastModifier();
 		userInfo.pwdUpdateTime = user.getPwdUpdateTime().getTime();
 		userInfo.grantor = user.getGrantor() == null ? "" : user.getGrantor();
-		userInfo.secretGrade = user.getSecretGrade() == null ? 2 : Integer.valueOf(user.getGrantor());
+		userInfo.secretGrade = user.getSecretGrade() == null ? 2 : Integer.valueOf(user.getSecretGrade());
 		userInfo.isDeptLeader = user.getIsDeptLeader() == null ? "0" : user.getIsDeptLeader();
 		return userInfo;
 	}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java
index 496d033..dcaa1bb 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java
@@ -1225,16 +1225,17 @@
      * @param prmItemDO
      */
     private void initTableConfigDTOO2DOData(PRMItemDO prmItemDO,PRMItemDTO prmItemDTO){
-
-        prmItemDO.setItemOutFields(VciBaseUtil.array2String(prmItemDTO.getItemOutFieldList().toArray(new String[]{})));//闇�瑕佷娇鐢ㄧ殑瀛楁
-        prmItemDO.setItemKeyFields(CollectionUtils.isEmpty(prmItemDTO.getItemKeyFieldList())?"":VciBaseUtil.array2String(prmItemDTO.getItemKeyFieldList().toArray(new String[]{})));//闇�瑕佹悳绱㈢殑瀛楁
-       List<String> newItemFieldWidthList = prmItemDTO.getItemFieldWidthList().stream().map(KeyValue::getValue).distinct().collect(Collectors.toList());
-       prmItemDO.setItemFieldWidth(VciBaseUtil.array2String(newItemFieldWidthList.toArray(new String[]{}),":"));//瀛楁瀹藉害
-       List<ItemSeniorQueryBO> itemSeniorQueryBOS = prmItemDTO.getItemSeniorQueryBOS();
-       List<String> itemSeniorQueryColsList = new ArrayList<>();
-       List<String> itemSeniorQueryColsCountsList=new ArrayList<>();
-       List<String> itemQuerySqlList = new ArrayList<>();
-       itemSeniorQueryBOS.stream().forEach(itemSeniorQueryBO -> {
+        prmItemDO.setItemOutFields(VciBaseUtil.array2String(prmItemDTO.getItemOutFieldList().toArray(new String[]{})));
+        //闇�瑕佷娇鐢ㄧ殑瀛楁prmItemDO.setItemKeyFields(CollectionUtils.isEmpty(prmItemDTO.getItemKeyFieldList())?"":VciBaseUtil.array2String(prmItemDTO.getItemKeyFieldList().toArray(new String[]{})));//闇�瑕佹悳绱㈢殑瀛楁
+        // TODO: 2024/12/5 Ludc 杩欏効鍘婚噸鐢ㄧ殑涓嶅锛孠eyValue::getValue鏄瀹藉害鍘婚噸浜�
+        List<String> newItemFieldWidthList = prmItemDTO.getItemFieldWidthList().stream().distinct().map(KeyValue::getValue).collect(Collectors.toList());
+        // TODO: 2024/12/5 Ludc 鍒嗛殧绗﹁鍜屽钩鍙扮粺涓�鐢�,鑰屼笉鏄敤:
+        prmItemDO.setItemFieldWidth(VciBaseUtil.array2String(newItemFieldWidthList.toArray(new String[]{}),","));//瀛楁瀹藉害
+        List<ItemSeniorQueryBO> itemSeniorQueryBOS = prmItemDTO.getItemSeniorQueryBOS();
+        List<String> itemSeniorQueryColsList = new ArrayList<>();
+        List<String> itemSeniorQueryColsCountsList=new ArrayList<>();
+        List<String> itemQuerySqlList = new ArrayList<>();
+        itemSeniorQueryBOS.stream().forEach(itemSeniorQueryBO -> {
            String itemSeniorQueryCols = itemSeniorQueryBO.getItemSeniorQueryCols();
            String itemSeniorQueryColsCounts = itemSeniorQueryBO.getItemSeniorQueryColsCounts();
            String itemQuerySql = itemSeniorQueryBO.getItemQuerySql();
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 af8bfa8..9d06303 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
@@ -1246,6 +1246,7 @@
 			componentVO.setName(page.name);
 			componentVO.setDescription(page.desc);
 			componentVO.setOrderNum((int) page.seq);
+
 			UIComponentDefineXO componentDefineXO = null;
 			try {
 				componentDefineXO = readInfoFromXML(page.plDefination, UIComponentDefineXO.class);
@@ -1253,6 +1254,8 @@
 				logger.error("璇诲彇xml鍑洪敊",e);
 				return  null;
 			}
+			//鑷畾涔夋煡璇㈡柟寮�
+			componentVO.setBsCustQueryCLsOrUrl(componentDefineXO.getBsCustQueryCLsOrUrl());
 			//涔嬪墠鐨勭被鍨嬬殑鍊兼槸1锛�2锛�3绛夌湅鐫�涓嶇洿瑙�
 			UIComponentTypeEnum componentTypeEnum = null;
 			if("1".equals(componentDefineXO.getTemplateType())){
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/UIDataBaseServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/UIDataBaseServiceI.java
index 87c06ef..03138e6 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/UIDataBaseServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/UIDataBaseServiceI.java
@@ -1,6 +1,7 @@
 package com.vci.web.service.uidataservice;
 
 import com.alibaba.fastjson.JSON;
+import com.vci.corba.query.data.KV;
 import com.vci.pagemodel.UIFormDataVO;
 import com.vci.query.UIDataGridQuery;
 import com.vci.query.UIFormQuery;
@@ -11,9 +12,7 @@
 import com.vci.starter.web.pagemodel.UIDataTree;
 import com.vci.starter.web.util.Lcm.Func;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * ui鏁版嵁鏌ヨ鍩虹鏈嶅姟锛堣鎺ュ彛瀹氫箟浜嗕竴浜涘叕鍏辩殑鏁版嵁鏌ヨ鏂规硶鍜屼竴浜涢粯璁ゆ柟娉曚互渚涚户鎵垮拰浣跨敤锛�
@@ -45,6 +44,41 @@
     }
 
     /**
+     * 鍒ゆ柇鏄惁浣跨敤鑷畾涔夌被鏂瑰紡鏌ヨ锛氾紙鍚庣画濡傛灉鍒ゆ柇鏄嚜瀹氫箟绫昏繕鏄嚜瀹氫箟URL鐨勯�昏緫鏈夋洿鏀癸紝涔熷敖閲忕粺涓�鍦ㄤ竴涓湴鏂硅繘琛屾洿鏀癸級
+     * @param
+     */
+    default boolean isCustomClass(String bsCustomClassOrUrl){
+        if(bsCustomClassOrUrl.indexOf("@") == 0){
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * 灏咾V杞垚Map
+     * @param kvs
+     * @return
+     */
+    default  List<Map<String, Object>> convertKV2ListMap(KV[][] kvs) {
+        // 灏� KV[][] 杞崲涓� Map
+        List<Map<String, Object>> resulListMap = new ArrayList<>();
+        if(Func.isEmpty(kvs)){
+            return resulListMap;
+        }
+        for (KV[] kvArray : kvs) {
+            Map<String, Object> map = new HashMap<>();
+            for (KV kv : kvArray) {
+                if (kv.key != null && kv.value != null) {
+                    //杩斿洖鍏ㄥ皬鍐欑殑
+                    map.put(kv.key.toLowerCase(Locale.ROOT), kv.value);
+                }
+            }
+            resulListMap.add(map);
+        }
+        return resulListMap;
+    }
+
+    /**
      * 鑾峰彇琛ㄦ牸鐨勬暟鎹�
      * @param dataGridQuery 琛ㄦ牸鏌ヨ锛屽繀椤绘湁涓氬姟绫诲瀷鍚嶇О鍜� 琛ㄦ牸鐨勭紪鍙�
      * @return DataGrid涓璬ata涓篗ap<String,String>鏍煎紡
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java
index e5fc42b..b2ccd03 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java
@@ -57,7 +57,6 @@
 
 import static com.vci.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
 
-
 /**
  * UI涓婄殑鏁版嵁鏌ヨ(閫氱敤鏌ヨ鏈嶅姟)
  * @author Ludc
@@ -155,73 +154,92 @@
         if(Func.isNotEmpty(dataGridQuery.getSourceData())){
             dataGridQuery.setSourceData(this.convertMapValueJson2Map(dataGridQuery.getSourceData()));
         }
-        //鍏堝垽鏂煡璇㈡ā鏉�
-        UITableDefineVO tableDefineVO = uiEngineService.getComponentByOid(dataGridQuery.getComponentOid(),null).getTableDefineVO();
-        String queryTemplate = Func.isNotEmpty(dataGridQuery.getSourceData())? (String) dataGridQuery.getSourceData().getOrDefault("querytemplate",tableDefineVO.getQueryTemplateName()) :tableDefineVO.getQueryTemplateName();
-        if(StringUtils.isBlank(queryTemplate)){
-            //璇存槑娌℃湁璁剧疆鏌ヨ妯℃澘锛岄渶瑕佺湅鐪嬪湪杩欎釜琛ㄦ牸鎵�鍦ㄧ殑缁勪欢鏈夋病鏈夎缃�
-            tableDefineVO = uiEngineService.getTableById(dataGridQuery.getBtmName(), dataGridQuery.getTableDefineId());
-            queryTemplate = tableDefineVO.getQueryTemplateName();
-        }
-        //鐪嬬湅鏈夋病鏈夎嚜瀹氫箟鐨凷QL
-        Set<String> queryFieldList = new HashSet<>();
-        tableDefineVO.getCols().forEach(cols->{
-            //鑾峰彇鍙傜収
-            List<UITableFieldVO> referFieldList = cols.stream().filter(s -> UIFieldTypeEnum.REFER.getValue().equalsIgnoreCase(s.getFieldType())).collect(Collectors.toList());
-            if(!CollectionUtils.isEmpty(referFieldList)){
-                referFieldList.stream().forEach(field->{
-                    queryFieldList.add(field.getField());
-                    if(StringUtils.isNotBlank(field.getShowField())) {
-                        queryFieldList.add(field.getShowField());
-                    }
-                });
+        //鍏堝垽鏂煡璇㈡ā鏉挎槸鍚﹂厤缃簡鑷畾涔夋煡璇㈢被
+        UIComponentVO componentVO = uiEngineService.getComponentByOid(dataGridQuery.getComponentOid(), null);
+        UITableDefineVO tableDefineVO = componentVO.getTableDefineVO();
+        String bsCustQueryCLsOrUrl = componentVO.getBsCustQueryCLsOrUrl();
+        // TODO: 2024/12/5 Ludc 鏍规嵁UI閰嶇疆鐨勮繘琛屽垽鏂槸鍚︿娇鐢ㄨ嚜瀹氫箟绫昏繘琛屾煡璇�(鑷畾涔夌被鏌ヨ鏂瑰紡浼樺厛绾ч珮浜庢煡璇㈡ā鏉�)
+        if(Func.isNotBlank(bsCustQueryCLsOrUrl) && isCustomClass(bsCustQueryCLsOrUrl)){
+            //閫氳繃鍙嶅皠璋冪敤bsCustQueryCLsOrUrl涓畾涔夌殑鏈嶅姟绫讳腑鐨勬煡璇㈡柟娉�
+            try {
+                // 鑾峰彇绫荤殑 Class 瀵硅薄
+                Class<?> clazz = Class.forName(bsCustQueryCLsOrUrl.replace("@",""));
+                // 鍒涘缓绫荤殑瀹炰緥
+                Object instance = clazz.getDeclaredConstructor().newInstance();
+                // 鑾峰彇鏂规硶getDataForGrid锛堣鏂规硶鏄帴鍙d腑缁熶竴瀹氫箟鐨勬柟娉曪級
+                Method method = clazz.getMethod("getDataForGrid", UIDataGridQuery.class);
+                // 璋冪敤鏂规硶
+                DataGrid dataGrid = (DataGrid) method.invoke(instance, dataGridQuery);
+                return dataGrid;
+            }catch (Exception e){
+                e.printStackTrace();
+                throw new VciBaseException("鑾峰彇琛ㄦ牸鏁版嵁鏃跺嚭鐜伴敊璇紝鍘熷洜锛�"+e.getMessage());
             }
-            Map<String, String> comboxMap = cols.stream().filter(s -> UIFieldTypeEnum.COMBOX.getValue().equalsIgnoreCase(s.getFieldType()) && StringUtils.isNotBlank(s.getComboxKey())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getField(), t -> t.getComboxKey()));
-            if(!CollectionUtils.isEmpty(comboxMap)) {
-                comboxMap.forEach((field,comboxKey)->{
-                    queryFieldList.add(comboxKey+"_" + field.substring(0,field.length()-4) + "#" + field);
-                });
-            }
-            queryFieldList.addAll(cols.stream().filter(s -> !UIFieldTypeEnum.REFER.getValue().equalsIgnoreCase(s.getFieldType()) && !UIFieldTypeEnum.COMBOX.getValue().equalsIgnoreCase(s.getFieldType())).map(s -> s.getField()).collect(Collectors.toList()));
-        });
-
-        //閽堝鍙傜収鐨勶紝鎴戜滑闇�瑕佹坊鍔犲搴旂殑
-        //杩欎釜涓氬姟绫诲瀷鍖呭惈鐨勫睘鎬�
-        OsBtmTypeVO btmTypeVO = null;
-        OsLinkTypeVO linkTypeVO = null;
-        if(dataGridQuery.isLinkTypeFlag()){
-            linkTypeVO = linkTypeService.getLinkTypeById(dataGridQuery.getBtmName());
-            queryFieldList.addAll(linkTypeVO.getAttributes().stream().map(OsLinkTypeAttributeVO::getId).collect(Collectors.toList()));
-            queryFieldList.addAll(WebLoServiceImpl.LO_BASE_FIELD_MAP.values());
         }else{
-            //btmTypeVO = btmService.getBtmById(dataGridQuery.getBtmname());
-            btmTypeVO = btmService.getBtmByName(dataGridQuery.getBtmName());
-            queryFieldList.addAll(btmTypeVO.getAttributes().stream().map(OsBtmTypeAttributeVO::getId).collect(Collectors.toList()));
-            queryFieldList.addAll(WebBoServiceImpl.BO_BASE_FIELD_MAP.values());
-        }
-        queryFieldList.add("creator_name");
-        queryFieldList.add("lastmodifier_name");
-        //鎴戜滑鍦ㄥ悗鍙版煡璇笟鍔℃暟鎹�
-        Map<String, Object> replaceMap = wrapperReplaceMap(dataGridQuery.getSourceData());
-
-        if(dataGridQuery.isLinkTypeFlag()){
-            UILinkTypeDataQuery linkTypeDataQuery = new UILinkTypeDataQuery();
-            linkTypeDataQuery.setQueryTemplateName(queryTemplate);
-            linkTypeDataQuery.setReplaceMap(replaceMap);
-            linkTypeDataQuery.setConditionMap(dataGridQuery.getConditionMap());
-            linkTypeDataQuery.setClauseList(queryFieldList);
-            linkTypeDataQuery.setLinkType(dataGridQuery.getBtmName());
-            if(dataGridQuery.isTreeTableFlag()){
-                linkTypeDataQuery.setLevel(-1);
+            String queryTemplate = Func.isNotEmpty(dataGridQuery.getSourceData())? (String) dataGridQuery.getSourceData().getOrDefault("querytemplate",tableDefineVO.getQueryTemplateName()) :tableDefineVO.getQueryTemplateName();
+            if(StringUtils.isBlank(queryTemplate)){
+                //璇存槑娌℃湁璁剧疆鏌ヨ妯℃澘锛岄渶瑕佺湅鐪嬪湪杩欎釜琛ㄦ牸鎵�鍦ㄧ殑缁勪欢鏈夋病鏈夎缃�
+                tableDefineVO = uiEngineService.getTableById(dataGridQuery.getBtmName(), dataGridQuery.getTableDefineId());
+                queryTemplate = tableDefineVO.getQueryTemplateName();
             }
-            return loService.queryGridByScheme(linkTypeDataQuery);
-        }else {
-            DataGrid dataGrid = boService.queryGridByScheme(queryTemplate,
-                    dataGridQuery.getConditionMap(), replaceMap, dataGridQuery.getPageHelper(), queryFieldList.stream().collect(Collectors.toList()));
-            return dataGrid;
+            //鐪嬬湅鏈夋病鏈夎嚜瀹氫箟鐨凷QL
+            Set<String> queryFieldList = new HashSet<>();
+            tableDefineVO.getCols().forEach(cols->{
+                //鑾峰彇鍙傜収
+                List<UITableFieldVO> referFieldList = cols.stream().filter(s -> UIFieldTypeEnum.REFER.getValue().equalsIgnoreCase(s.getFieldType())).collect(Collectors.toList());
+                if(!CollectionUtils.isEmpty(referFieldList)){
+                    referFieldList.stream().forEach(field->{
+                        queryFieldList.add(field.getField());
+                        if(StringUtils.isNotBlank(field.getShowField())) {
+                            queryFieldList.add(field.getShowField());
+                        }
+                    });
+                }
+                Map<String, String> comboxMap = cols.stream().filter(s -> UIFieldTypeEnum.COMBOX.getValue().equalsIgnoreCase(s.getFieldType()) && StringUtils.isNotBlank(s.getComboxKey())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getField(), t -> t.getComboxKey()));
+                if(!CollectionUtils.isEmpty(comboxMap)) {
+                    comboxMap.forEach((field,comboxKey)->{
+                        queryFieldList.add(comboxKey+"_" + field.substring(0,field.length()-4) + "#" + field);
+                    });
+                }
+                queryFieldList.addAll(cols.stream().filter(s -> !UIFieldTypeEnum.REFER.getValue().equalsIgnoreCase(s.getFieldType()) && !UIFieldTypeEnum.COMBOX.getValue().equalsIgnoreCase(s.getFieldType())).map(s -> s.getField()).collect(Collectors.toList()));
+            });
+
+            //閽堝鍙傜収鐨勶紝鎴戜滑闇�瑕佹坊鍔犲搴旂殑
+            //杩欎釜涓氬姟绫诲瀷鍖呭惈鐨勫睘鎬�
+            OsBtmTypeVO btmTypeVO = null;
+            OsLinkTypeVO linkTypeVO = null;
+            if(dataGridQuery.isLinkTypeFlag()){
+                linkTypeVO = linkTypeService.getLinkTypeById(dataGridQuery.getBtmName());
+                queryFieldList.addAll(linkTypeVO.getAttributes().stream().map(OsLinkTypeAttributeVO::getId).collect(Collectors.toList()));
+                queryFieldList.addAll(WebLoServiceImpl.LO_BASE_FIELD_MAP.values());
+            }else{
+                //btmTypeVO = btmService.getBtmById(dataGridQuery.getBtmname());
+                btmTypeVO = btmService.getBtmByName(dataGridQuery.getBtmName());
+                queryFieldList.addAll(btmTypeVO.getAttributes().stream().map(OsBtmTypeAttributeVO::getId).collect(Collectors.toList()));
+                queryFieldList.addAll(WebBoServiceImpl.BO_BASE_FIELD_MAP.values());
+            }
+            queryFieldList.add("creator_name");
+            queryFieldList.add("lastmodifier_name");
+            //鎴戜滑鍦ㄥ悗鍙版煡璇笟鍔℃暟鎹�
+            Map<String, Object> replaceMap = wrapperReplaceMap(dataGridQuery.getSourceData());
+
+            if(dataGridQuery.isLinkTypeFlag()){
+                UILinkTypeDataQuery linkTypeDataQuery = new UILinkTypeDataQuery();
+                linkTypeDataQuery.setQueryTemplateName(queryTemplate);
+                linkTypeDataQuery.setReplaceMap(replaceMap);
+                linkTypeDataQuery.setConditionMap(dataGridQuery.getConditionMap());
+                linkTypeDataQuery.setClauseList(queryFieldList);
+                linkTypeDataQuery.setLinkType(dataGridQuery.getBtmName());
+                if(dataGridQuery.isTreeTableFlag()){
+                    linkTypeDataQuery.setLevel(-1);
+                }
+                return loService.queryGridByScheme(linkTypeDataQuery);
+            }else {
+                DataGrid dataGrid = boService.queryGridByScheme(queryTemplate,
+                        dataGridQuery.getConditionMap(), replaceMap, dataGridQuery.getPageHelper(), queryFieldList.stream().collect(Collectors.toList()));
+                return dataGrid;
+            }
         }
-        //鐢熷懡鍛ㄦ湡鍦ㄥ叾涓煡璇㈠悗灏变細澶勭悊
-        //鏋氫妇涔熶細琚鐞嗕簡
     }
 
     /**
@@ -238,102 +256,124 @@
         if(Func.isNotEmpty(formQuery.getSourceData())){
             formQuery.setSourceData(this.convertMapValueJson2Map(formQuery.getSourceData()));
         }
-        UIFormDefineVO formDefineVO = uiEngineService.getFormById(formQuery.getBtmName(),formQuery.getFormDefineId());
-        String queryTemplate = !CollectionUtils.isEmpty(formQuery.getSourceData())? (String) formQuery.getSourceData().getOrDefault("querytemplate",formDefineVO.getQueryTemplateName()) :formDefineVO.getQueryTemplateName();
-        Set<String> queryFieldList = formDefineVO.getItems().stream().filter(s->!UIFieldTypeEnum.CUSTOM.getValue().equalsIgnoreCase(s.getType())).map(UIFormItemVO::getField).collect(Collectors.toSet());
-        //鑾峰彇鍙傜収
-        List<UIFormItemVO> referFieldList = formDefineVO.getItems().stream().filter(s -> UIFieldTypeEnum.REFER.getValue().equalsIgnoreCase(s.getType())).collect(Collectors.toList());
-        if(!CollectionUtils.isEmpty(referFieldList)){
-            referFieldList.stream().forEach(field->{
-                queryFieldList.add(field.getField());
-                if(StringUtils.isNotBlank(field.getShowField())) {
-                    queryFieldList.add(field.getShowField());
-                }
-            });
-        }
-        Map<String, String> comboxMap = formDefineVO.getItems().stream().filter(s -> UIFieldTypeEnum.COMBOX.getValue().equalsIgnoreCase(s.getType()) && StringUtils.isNotBlank(s.getComboxKey())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getField(), t -> t.getComboxKey()));
-        if(!CollectionUtils.isEmpty(comboxMap)) {
-            comboxMap.forEach((field,comboxKey)->{
-                //瑕佹妸鏋氫妇鐨勫睘鎬ф煡璇㈠嚭鏉ワ紝鍜岃〃鏍奸鍦版柟涓嶄竴鏍凤紝鍥犱负閭h竟浼氭妸field鐩存帴鍔犱簡text
-                queryFieldList.add(comboxKey+"_" + field + "#" + field +"text");
-            });
-        }
-        //杩欎釜涓氬姟绫诲瀷鍖呭惈鐨勫睘鎬�
-        OsBtmTypeVO btmTypeVO = null;
-        OsLinkTypeVO linkTypeVO = null;
-        if(formDefineVO.isLinkTypeFlag()){
-            linkTypeVO = linkTypeService.getLinkTypeById(formQuery.getBtmName());
-            queryFieldList.addAll(linkTypeVO.getAttributes().stream().map(OsLinkTypeAttributeVO::getId).collect(Collectors.toList()));
-            queryFieldList.addAll(WebLoServiceImpl.LO_BASE_FIELD_MAP.values());
-        }else{
-            btmTypeVO = btmService.getBtmByName(formQuery.getBtmName());
-            queryFieldList.addAll(btmTypeVO.getAttributes().stream().map(OsBtmTypeAttributeVO::getId).collect(Collectors.toList()));
-        }
-        queryFieldList.add("creator_name");
-        queryFieldList.add("lastmodifier_name");
-        Map<String,String> conditionMap = WebUtil.getOidQuery(formQuery.getSourceOid());
-        Map<String, Object> replaceMap = wrapperReplaceMap(formQuery.getSourceData());
-        UIFormDataVO formDataVO = new UIFormDataVO();
-        replaceMap.put("oid", formQuery.getSourceOid().trim());
-        if(!formDefineVO.isLinkTypeFlag()) {
-            List<BusinessObject> cbos = null;
-            if (StringUtils.isNotBlank(queryTemplate)) {
-                // replaceMap.put("oid", formQuery.getOid().trim());
-                cbos = boService.queryCBOByScheme(queryTemplate, conditionMap, replaceMap, null, queryFieldList.stream().collect(Collectors.toList()));
-            } else {
-                //娌℃湁鏌ヨ妯℃澘锛岄偅鎴戜滑灏辩洿鎺ヤ富閿拰涓氬姟绫诲瀷鍘绘煡璇�
-                cbos = boService.queryCBO(formQuery.getBtmName(), conditionMap, null, queryFieldList.stream().collect(Collectors.toList()));
-            }
-            if (!CollectionUtils.isEmpty(cbos)) {
-                BusinessObject cbo = cbos.get(0);
-                formDataVO.setData(boService.cbo2Map(cbo));
-            } else {
-                throw new VciBaseException(DATA_OID_NOT_EXIST);
+        //鍏堝垽鏂煡璇㈡ā鏉挎槸鍚﹂厤缃簡鑷畾涔夋煡璇㈢被
+        UIComponentVO componentVO = uiEngineService.getComponentByOid(formQuery.getComponentOid(), null);
+        UIFormDefineVO formDefineVO = componentVO.getFormDefineVO();
+        //UIFormDefineVO formDefineVO = uiEngineService.getFormById(formQuery.getBtmName(),formQuery.getFormDefineId());
+        String bsCustQueryCLsOrUrl = componentVO.getBsCustQueryCLsOrUrl();
+        if(Func.isNotBlank(bsCustQueryCLsOrUrl) && isCustomClass(bsCustQueryCLsOrUrl)){
+            //閫氳繃鍙嶅皠璋冪敤bsCustQueryCLsOrUrl涓畾涔夌殑鏈嶅姟绫讳腑鐨勬煡璇㈡柟娉�
+            try {
+                // 鑾峰彇绫荤殑 Class 瀵硅薄
+                Class<?> clazz = Class.forName(bsCustQueryCLsOrUrl.replace("@",""));
+                // 鍒涘缓绫荤殑瀹炰緥
+                Object instance = clazz.getDeclaredConstructor().newInstance();
+                // 鑾峰彇鏂规硶getDataForGrid锛堣鏂规硶鏄帴鍙d腑缁熶竴瀹氫箟鐨勬柟娉曪級
+                Method method = clazz.getMethod("getDataForForm", UIDataGridQuery.class);
+                // 璋冪敤鏂规硶
+                UIFormDataVO uiFormDataVO = (UIFormDataVO) method.invoke(instance, formQuery);
+                return uiFormDataVO;
+            }catch (Exception e){
+                e.printStackTrace();
+                throw new VciBaseException("鑾峰彇琛ㄦ牸鏁版嵁鏃跺嚭鐜伴敊璇紝鍘熷洜锛�"+e.getMessage());
             }
         }else{
-            UILinkTypeDataQuery linkTypeDataQuery = new UILinkTypeDataQuery();
-            linkTypeDataQuery.setQueryTemplateName(queryTemplate);
-            linkTypeDataQuery.setReplaceMap(replaceMap);
-            linkTypeDataQuery.setConditionMap(conditionMap);
-            linkTypeDataQuery.setClauseList(queryFieldList);
-            linkTypeDataQuery.setLinkType(formQuery.getBtmName());
-            //linkTypeDataQuery.setDirection(formQuery.isOrientation());
-            //linkTypeDataQuery.setToBtmType(treeDefineVO.getBtmType());
-            DataGrid dataGrid = loService.queryGridByScheme(linkTypeDataQuery);
-            if (dataGrid != null && !CollectionUtils.isEmpty(dataGrid.getData())) {
-                formDataVO.setData((Map<String, Object>) dataGrid.getData().get(0));
-            }
-        }
-        //鏌ヨ闄勪欢
-        formDataVO.setAttachmentFileVOs(fileObjectService.listFilesByOwnbiz(formQuery.getSourceOid(), formQuery.getBtmName(), "attachment"));
-        List<UIFormItemVO> fileItems = formDefineVO.getItems().stream().filter(s -> UIFieldTypeEnum.FILE.getValue().equalsIgnoreCase(s.getType())).collect(Collectors.toList());
-        if(!CollectionUtils.isEmpty(fileItems)){
-            //瀛楁鐨勫睘鎬ц偗瀹氫笉浼氳秴杩�1000涓�
-            //鏌ヨ杩欎簺鐨勫��
-            List<String> filePathList = new ArrayList<>();
-            fileItems.stream().forEach(field->{
-                Object value = formDataVO.getData().getOrDefault(field.getField(),null);
-                if(value!=null && StringUtils.isNotBlank(value.toString())){
-                    filePathList.add(value.toString());
-                }
-            });
-            List<VciFileObjectVO> fileObjectVOS = fileObjectService.listFileObjectByPath(filePathList, "filePathField");
-            if(!CollectionUtils.isEmpty(fileObjectVOS)){
-                Map<String,VciFileObjectVO> fileObjectVOMap = fileObjectVOS.stream().collect(Collectors.toMap(s->s.getFilePath(),t->t,(o1,o2)->o2));
-                Map<String,VciFileObjectVO> fieldFileVOMap = new HashMap<>();
-                fileItems.stream().forEach(field->{
-                    Object value = formDataVO.getData().getOrDefault(field.getField(),null);
-                    if(value!=null){
-                        VciFileObjectVO fileObjectVO = fileObjectVOMap.getOrDefault(value.toString(),null);
-                        if(fileObjectVO!=null){
-                            fieldFileVOMap.put(field.getField(),fileObjectVO);
-                        }
+            String queryTemplate = !CollectionUtils.isEmpty(formQuery.getSourceData())? (String) formQuery.getSourceData().getOrDefault("querytemplate",formDefineVO.getQueryTemplateName()) :formDefineVO.getQueryTemplateName();
+            Set<String> queryFieldList = formDefineVO.getItems().stream().filter(s->!UIFieldTypeEnum.CUSTOM.getValue().equalsIgnoreCase(s.getType())).map(UIFormItemVO::getField).collect(Collectors.toSet());
+            //鑾峰彇鍙傜収
+            List<UIFormItemVO> referFieldList = formDefineVO.getItems().stream().filter(s -> UIFieldTypeEnum.REFER.getValue().equalsIgnoreCase(s.getType())).collect(Collectors.toList());
+            if(!CollectionUtils.isEmpty(referFieldList)){
+                referFieldList.stream().forEach(field->{
+                    queryFieldList.add(field.getField());
+                    if(StringUtils.isNotBlank(field.getShowField())) {
+                        queryFieldList.add(field.getShowField());
                     }
                 });
-                formDataVO.setFilePathFieldMap(fieldFileVOMap);
             }
+            Map<String, String> comboxMap = formDefineVO.getItems().stream().filter(s -> UIFieldTypeEnum.COMBOX.getValue().equalsIgnoreCase(s.getType()) && StringUtils.isNotBlank(s.getComboxKey())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getField(), t -> t.getComboxKey()));
+            if(!CollectionUtils.isEmpty(comboxMap)) {
+                comboxMap.forEach((field,comboxKey)->{
+                    //瑕佹妸鏋氫妇鐨勫睘鎬ф煡璇㈠嚭鏉ワ紝鍜岃〃鏍奸鍦版柟涓嶄竴鏍凤紝鍥犱负閭h竟浼氭妸field鐩存帴鍔犱簡text
+                    queryFieldList.add(comboxKey+"_" + field + "#" + field +"text");
+                });
+            }
+            //杩欎釜涓氬姟绫诲瀷鍖呭惈鐨勫睘鎬�
+            OsBtmTypeVO btmTypeVO = null;
+            OsLinkTypeVO linkTypeVO = null;
+            if(formDefineVO.isLinkTypeFlag()){
+                linkTypeVO = linkTypeService.getLinkTypeById(formQuery.getBtmName());
+                queryFieldList.addAll(linkTypeVO.getAttributes().stream().map(OsLinkTypeAttributeVO::getId).collect(Collectors.toList()));
+                queryFieldList.addAll(WebLoServiceImpl.LO_BASE_FIELD_MAP.values());
+            }else{
+                btmTypeVO = btmService.getBtmByName(formQuery.getBtmName());
+                queryFieldList.addAll(btmTypeVO.getAttributes().stream().map(OsBtmTypeAttributeVO::getId).collect(Collectors.toList()));
+            }
+            queryFieldList.add("creator_name");
+            queryFieldList.add("lastmodifier_name");
+            Map<String,String> conditionMap = WebUtil.getOidQuery(formQuery.getSourceOid());
+            Map<String, Object> replaceMap = wrapperReplaceMap(formQuery.getSourceData());
+            UIFormDataVO formDataVO = new UIFormDataVO();
+            replaceMap.put("oid", formQuery.getSourceOid().trim());
+            if(!formDefineVO.isLinkTypeFlag()) {
+                List<BusinessObject> cbos = null;
+                if (StringUtils.isNotBlank(queryTemplate)) {
+                    // replaceMap.put("oid", formQuery.getOid().trim());
+                    cbos = boService.queryCBOByScheme(queryTemplate, conditionMap, replaceMap, null, queryFieldList.stream().collect(Collectors.toList()));
+                } else {
+                    //娌℃湁鏌ヨ妯℃澘锛岄偅鎴戜滑灏辩洿鎺ヤ富閿拰涓氬姟绫诲瀷鍘绘煡璇�
+                    cbos = boService.queryCBO(formQuery.getBtmName(), conditionMap, null, queryFieldList.stream().collect(Collectors.toList()));
+                }
+                if (!CollectionUtils.isEmpty(cbos)) {
+                    BusinessObject cbo = cbos.get(0);
+                    formDataVO.setData(boService.cbo2Map(cbo));
+                } else {
+                    throw new VciBaseException(DATA_OID_NOT_EXIST);
+                }
+            }else{
+                UILinkTypeDataQuery linkTypeDataQuery = new UILinkTypeDataQuery();
+                linkTypeDataQuery.setQueryTemplateName(queryTemplate);
+                linkTypeDataQuery.setReplaceMap(replaceMap);
+                linkTypeDataQuery.setConditionMap(conditionMap);
+                linkTypeDataQuery.setClauseList(queryFieldList);
+                linkTypeDataQuery.setLinkType(formQuery.getBtmName());
+                //linkTypeDataQuery.setDirection(formQuery.isOrientation());
+                //linkTypeDataQuery.setToBtmType(treeDefineVO.getBtmType());
+                DataGrid dataGrid = loService.queryGridByScheme(linkTypeDataQuery);
+                if (dataGrid != null && !CollectionUtils.isEmpty(dataGrid.getData())) {
+                    formDataVO.setData((Map<String, Object>) dataGrid.getData().get(0));
+                }
+            }
+            //鏌ヨ闄勪欢
+            formDataVO.setAttachmentFileVOs(fileObjectService.listFilesByOwnbiz(formQuery.getSourceOid(), formQuery.getBtmName(), "attachment"));
+            List<UIFormItemVO> fileItems = formDefineVO.getItems().stream().filter(s -> UIFieldTypeEnum.FILE.getValue().equalsIgnoreCase(s.getType())).collect(Collectors.toList());
+            if(!CollectionUtils.isEmpty(fileItems)){
+                //瀛楁鐨勫睘鎬ц偗瀹氫笉浼氳秴杩�1000涓�
+                //鏌ヨ杩欎簺鐨勫��
+                List<String> filePathList = new ArrayList<>();
+                fileItems.stream().forEach(field->{
+                    Object value = formDataVO.getData().getOrDefault(field.getField(),null);
+                    if(value!=null && StringUtils.isNotBlank(value.toString())){
+                        filePathList.add(value.toString());
+                    }
+                });
+                List<VciFileObjectVO> fileObjectVOS = fileObjectService.listFileObjectByPath(filePathList, "filePathField");
+                if(!CollectionUtils.isEmpty(fileObjectVOS)){
+                    Map<String,VciFileObjectVO> fileObjectVOMap = fileObjectVOS.stream().collect(Collectors.toMap(s->s.getFilePath(),t->t,(o1,o2)->o2));
+                    Map<String,VciFileObjectVO> fieldFileVOMap = new HashMap<>();
+                    fileItems.stream().forEach(field->{
+                        Object value = formDataVO.getData().getOrDefault(field.getField(),null);
+                        if(value!=null){
+                            VciFileObjectVO fileObjectVO = fileObjectVOMap.getOrDefault(value.toString(),null);
+                            if(fileObjectVO!=null){
+                                fieldFileVOMap.put(field.getField(),fileObjectVO);
+                            }
+                        }
+                    });
+                    formDataVO.setFilePathFieldMap(fieldFileVOMap);
+                }
+            }
+            return formDataVO;
         }
-        return formDataVO;
     }
 
     /**
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataTestQueryServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataTestQueryServiceImpl.java
new file mode 100644
index 0000000..e1c72a0
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataTestQueryServiceImpl.java
@@ -0,0 +1,60 @@
+package com.vci.web.service.uidataservice.impl;
+
+import com.vci.corba.query.data.KV;
+import com.vci.pagemodel.UIFormDataVO;
+import com.vci.query.UIDataGridQuery;
+import com.vci.query.UIFormQuery;
+import com.vci.query.UITreeQuery;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.UIDataTree;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.web.service.uidataservice.UIDataBaseServiceI;
+import com.vci.web.util.PlatformClientUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 杩欐槸涓�涓嚜瀹氫箟鏌ヨ绫荤殑绀轰緥鏈嶅姟
+ * @author ludc
+ * @date 2024/12/5 13:00
+ */
+@Service
+public class UIDataTestQueryServiceImpl implements UIDataBaseServiceI {
+
+    @Override
+    public DataGrid getDataForGrid(UIDataGridQuery dataGridQuery) throws Exception {
+        // TODO: 2024/12/5 Ludc 鍙嶅皠鏂瑰紡璋冪敤锛屾墍浠ュ彧鑳介�氳繃newPlatformClientUtil鐨勫舰寮忥紝娉ㄨВ褰㈠紡鏈嶅姟娉ㄥ叆
+        PlatformClientUtil platformClientUtil = new PlatformClientUtil();
+        String sql = "select * from " + VciBaseUtil.getTableName(dataGridQuery.getBtmName())
+                + " where oid in ('D5DFA9D3-D2AF-4D1D-850F-73B102532740','BCE5B0E3-A49C-2453-8E62-8F4C7F4BEDF2','257BB15B-12CF-68D2-FCFE-1FA3E29DBD1E')";
+        KV[][] kvs = platformClientUtil.getQueryService().queryBySql(sql);
+        List<Map<String, Object>> resultMap = convertKV2ListMap(kvs);
+        DataGrid dataGrid = new DataGrid();
+        dataGrid.setData(resultMap);
+        dataGrid.setTotal(resultMap.size());
+        // TODO: 2024/12/5 Ludc 杩欏効杩樺彲浠ユ寜鐓ataGridQuery.getTableDefineId()鏉ユ煡璇㈣〃鏍煎畾涔夌殑鍐呭锛�
+        //  鐒跺悗鏍规嵁閰嶇疆鐨勯〉闈俊鎭潵澶勭悊瑕佹煡璇㈡潯浠舵垨鍒椾互鍙婅繑鍥炵殑鍙傛暟
+        return dataGrid;
+    }
+
+    @Override
+    public UIFormDataVO getDataForForm(UIFormQuery formQuery) throws Exception {
+        return null;
+    }
+
+    @Override
+    public List<UIDataTree> getDataForTree(UITreeQuery treeQuery) throws Exception {
+        return null;
+    }
+
+    @Override
+    public BaseResult getDataByTemp(UITreeQuery treeQuery) throws Exception {
+        return null;
+    }
+
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/xmlmodel/UIComponentDefineXO.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/xmlmodel/UIComponentDefineXO.java
index 39f84f6..f20a22f 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/xmlmodel/UIComponentDefineXO.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/xmlmodel/UIComponentDefineXO.java
@@ -162,6 +162,11 @@
      */
     private String queryTemplateName;
 
+    /**
+     * bs绔娇鐢ㄧ殑鑷畾涔夋煡璇㈢被鍚嶆垨URL
+     */
+    private String bsCustQueryCLsOrUrl;
+
     public String getType() {
         return type;
     }
@@ -394,6 +399,14 @@
         this.queryTemplateName = queryTemplateName;
     }
 
+    public void setBsCustQueryCLsOrUrl(String bsCustQueryCLsOrUrl) {
+        this.bsCustQueryCLsOrUrl = bsCustQueryCLsOrUrl;
+    }
+
+    public String getBsCustQueryCLsOrUrl() {
+        return bsCustQueryCLsOrUrl;
+    }
+
     @Override
     public String toString() {
         return "UIComponentDefineXO{" +
@@ -426,6 +439,7 @@
                 ", UIParser='" + UIParser + '\'' +
                 ", extAttr='" + extAttr + '\'' +
                 ", queryTemplateName='" + queryTemplateName + '\'' +
+                ", bsCustQueryCLsOrUrl='" + bsCustQueryCLsOrUrl + '\'' +
                 '}';
     }
 }

--
Gitblit v1.9.3