From a471b20fe8075a663f32b3a2ee0cd70c1c63baf7 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期四, 21 十一月 2024 21:59:42 +0800
Subject: [PATCH] 业务类型查询:树查询修改,数据列表查询接口修改(处理模板套模板情况下freemarker表达式的替换处理)。

---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java |   77 +++++++++++++++++++++++++++++++++++---
 1 files changed, 70 insertions(+), 7 deletions(-)

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 b526924..084c5b0 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
@@ -185,7 +185,7 @@
         queryFieldList.add("creator_name");
         queryFieldList.add("lastmodifier_name");
         //鎴戜滑鍦ㄥ悗鍙版煡璇笟鍔℃暟鎹�
-        Map<String, String> replaceMap = wrapperReplaceMap( dataGridQuery.getSourceData());
+        Map<String, String> replaceMap = wrapperReplaceMap(dataGridQuery.getSourceData());
 
         if(dataGridQuery.isLinkTypeFlag()){
             UILinkTypeDataQuery linkTypeDataQuery = new UILinkTypeDataQuery();
@@ -345,7 +345,7 @@
      * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
     @Override
-    public List<Tree> getDataForTree(UITreeQuery treeQuery) throws VciBaseException {
+    public List<Tree> getDataForTree(UITreeQuery treeQuery) throws VciBaseException, PLException {
         VciBaseUtil.alertNotNull(treeQuery,"琛ㄥ崟鐨勬煡璇㈠璞�",treeQuery.getBtmname(),"涓氬姟绫诲瀷鐨勪俊鎭�",treeQuery.getComponentOid(),"鏍戞墍鍦ㄧ殑缁勪欢鐨勪富閿�");
         Map<String, OsAttributeVO> attributeVOMap = attrService.selectAllAttributeMap();
         UIComponentVO componentVO = uiEngineService.getComponentByOid(treeQuery.getComponentOid(),attributeVOMap);
@@ -367,10 +367,11 @@
         if(treeQuery.getExtandParamsMap() != null){
             treeQuery.getConditionMap().putAll(treeQuery.getExtandParamsMap());
         }
-        String parentFieldName = treeQuery.getParentFieldName();
+       String parentFieldName = treeQuery.getParentFieldName();
         if(parentFieldName.contains(",")){
             parentFieldName = parentFieldName.split(",")[0];
         }
+        //TODO: 杩欏効涓哄暐瑕佸皢鏍硅妭鐐规樉绀鸿〃杈惧紡鏀惧埌鏌ヨ鏉′欢涓幓锛岃繖鏍峰氨浼氬鑷磋繖涓妭鐐硅褰撴垚鏌ヨ鏉′欢鍘绘煡璇�
         if(StringUtils.isNotBlank(parentFieldName)){
             if(StringUtils.isNotBlank(treeQuery.getParentOid())){
                 treeQuery.getConditionMap().put(parentFieldName,treeQuery.getParentOid());
@@ -391,7 +392,7 @@
         if(StringUtils.isBlank(treeDefineVO.getLinkType())){
             //杩欎釜鏄笟鍔$被鍨嬬殑鑷弬鐓�
             //浠ュ墠鐨勫钩鍙版病鏈夊鑷弬鐓ц繖绉嶆湁鍏ㄩ儴鏌ヨ鐨�
-            OsBtmTypeVO btmTypeVO = btmService.getBtmById(treeDefineVO.getBtmType(),attributeVOMap);
+            OsBtmTypeVO btmTypeVO = btmService.getBtmByName(treeDefineVO.getBtmType());
             queryFieldList.addAll(btmTypeVO.getAttributes().stream().map(OsBtmTypeAttributeVO::getId).collect(Collectors.toList()));
             queryFieldList.addAll(WebBoServiceImpl.BO_BASE_FIELD_MAP.values());
 
@@ -410,7 +411,7 @@
                     if(StringUtils.isBlank(parentFieldNameAndValue) || !parentFieldNameAndValue.contains(",")){
                         throw new VciBaseException("閰嶇疆鐨勪俊鎭湁璇�傚湪娌℃湁鍦ㄨ彍鍗曟垨鑰呮潵婧愭暟鎹缃牴鑺傜偣鐨勬煡璇㈡ā鏉挎椂锛岃鍦ㄦ爲鐨勩�愬弬鐓ф爲銆戜笂璁剧疆涓婄骇瀛楁鐨勫悕绉板拰鏍硅妭鐐圭殑鏌ヨ鐨勫�笺�傛瘮濡倄xxx,yyy銆傚叾涓瓁xxx鏄笂绾у瓧娈佃嫳鏂囧悕绉�");
                     }
-                    parentFieldName= parentFieldNameAndValue.split(",")[0];
+                    parentFieldName = parentFieldNameAndValue.split(",")[0];
                     String rootQueryValue = parentFieldNameAndValue.split(",")[1];
                     treeQuery.getConditionMap().put(parentFieldName,rootQueryValue);
                     replaceMap.put(parentFieldName,rootQueryValue);
@@ -543,6 +544,62 @@
     }
 
     /**
+     * 鑾峰彇鏁版嵁(鏍规嵁鏌ヨ妯℃澘鏌ヨ瀵硅薄锛岃繑鍥炵殑缁撴瀯鎸夌収ui瀹氫箟锛屽畾涔夌殑妯℃澘绫诲瀷杩斿洖)
+     * @param treeQuery 鏍戝舰鏌ヨ鏉′欢
+     * @return 鏍戝舰鏁版嵁
+     * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+     */
+    @Override
+    public BaseResult getDataByTemp(UITreeQuery treeQuery) throws VciBaseException, PLException {
+        VciBaseUtil.alertNotNull(treeQuery,"琛ㄥ崟鐨勬煡璇㈠璞�",treeQuery.getComponentOid(),"褰撳墠缁勪欢鐨勪富閿�");
+        //1銆佸厛鏌ヨ椤甸潰瀹氫箟缁勪欢
+        Map<String, OsAttributeVO> attributeVOMap = attrService.selectAllAttributeMap();
+        UIComponentVO componentVO = uiEngineService.getComponentByOid(treeQuery.getComponentOid(),attributeVOMap);
+        if(componentVO == null || StringUtils.isBlank(componentVO.getOid())){
+            throw new VciBaseException("鏈幏鍙栧埌鐣岄潰閰嶇疆淇℃伅锛�");
+        }
+        // 2銆佹牴鎹厤缃殑鏌ヨ妯℃澘鏌ヨ鏁版嵁(闇�瑕佽�冭檻鍏ㄩ潰涓�鐐�),
+        // 杩欏効鏍规嵁褰撳墠绫诲瀷鏉ヨ幏鍙栨槸浠�涔堢被鍨嬬殑鏌ヨ妯℃澘锛岀劧鍚庡仛瀵瑰簲鐨勬煡璇㈠鐞�
+
+        UITreeDefineVO treeDefineVO = componentVO.getTreeDefineVO();
+        String queryTemplate = StringUtils.isNotBlank(treeQuery.getQueryTemplate())?treeQuery.getQueryTemplate():(!CollectionUtils.isEmpty(treeQuery.getSourceData())?treeQuery.getSourceData().getOrDefault("querytemplate",treeDefineVO.getQueryTemplateName()):treeDefineVO.getQueryTemplateName());
+        Map<String, String> replaceMap = wrapperReplaceMap(treeQuery.getSourceData());
+        List<String> queryFieldList = new ArrayList<>();
+        String valueField = treeQuery.isLinkTypeFlag()?(!treeDefineVO.isOrientation()?"${oid}" + TREE_NODE_ID_SEP + "${t_oid}":"${oid}" + TREE_NODE_ID_SEP + "${f_oid}"):(StringUtils.isNotBlank(treeQuery.getValueField())?treeQuery.getValueField():"oid");
+        String textField = StringUtils.isNotBlank(treeDefineVO.getTreeNodeExpression())?treeDefineVO.getTreeNodeExpression():(StringUtils.isNotBlank(treeQuery.getTextField())?treeQuery.getTextField():"name");
+        String rootExpress = StringUtils.isNotBlank(treeQuery.getRootExpress())?treeQuery.getRootExpress():treeDefineVO.getRootContent();
+        String parentFieldName = treeQuery.getParentFieldName();
+        if(parentFieldName.contains(",")){
+            parentFieldName = parentFieldName.split(",")[0];
+        }
+        queryFieldList.add("creator_name");
+        queryFieldList.add("lastmodifier_name");
+        OsBtmTypeVO btmTypeVO = btmService.getBtmByName(treeDefineVO.getBtmType());
+        queryFieldList.addAll(btmTypeVO.getAttributes().stream().map(OsBtmTypeAttributeVO::getId).collect(Collectors.toList()));
+        queryFieldList.addAll(WebBoServiceImpl.BO_BASE_FIELD_MAP.values());
+
+        addQueryField(queryFieldList,valueField);
+        addQueryField(queryFieldList,textField);
+        List<BusinessObject> rootCbos = boService.queryCBOByScheme(queryTemplate, null, replaceMap);
+
+        //3銆佹牴鎹笉鍚岀殑缁勪欢杩斿洖涓嶅悓鐨勬暟鎹被鍨嬶紙鏍戙�佸垪琛ㄣ�佹爲琛ㄣ�佽嚜瀹氫箟妯℃澘銆佽〃鍗曠瓑锛�
+        List<Tree> rootTreeList = null;
+        if(!CollectionUtils.isEmpty(rootCbos)){
+            rootTreeList = cbo2Trees(rootCbos,valueField,StringUtils.isBlank(rootExpress)?textField:rootExpress,parentFieldName,treeQuery.isShowCheckBox(),null);
+            TreeQueryObject treeQueryObject = new TreeQueryObject();
+            treeQueryObject.setValueField(valueField);
+            treeQueryObject.setTextField(textField);
+            treeQueryObject.setParentFieldName(parentFieldName);
+            treeQueryObject.setShowCheckBox(treeQuery.isShowCheckBox());
+            if(UITreeLoadTypeEnum.ALL.getValue().equalsIgnoreCase(treeDefineVO.getLoadType())){
+                treeQueryObject.setQueryAllLevel(false);
+            }
+            //queryTreeForBO(rootTreeList,treeDefineVO.getQueryTemplateName(),queryFieldList,treeQueryObject);
+        }
+        return BaseResult.tree(rootTreeList);
+    }
+
+    /**
      * 涓氬姟绫诲瀷鐨勫睘鎬ф煡璇�
      * @param rootTreeList 鏍硅妭鐐圭殑鍐呭
      * @param queryTemplate 鏌ヨ妯℃澘
@@ -650,7 +707,8 @@
             Map<String,String> cbo2Map = boService.cbo2Map(cbo);
             if(!CollectionUtils.isEmpty(cbo2Map)){
                 cbo2Map.forEach((key,value)->{
-                    cloMap.put(parentFieldName + "." + key,value);
+                    //TODO: 杩欏効涓哄暐瑕佹嫾鎺ヤ笂parentFieldName锛屽鑷村悗闈reemarker琛ㄨ揪寮忔棤娉曟纭浛鎹�
+                    cloMap.put(/*parentFieldName + "." +*/ key,value);
                 });
             }
             tree.setOid(getValueByExpressForBOAndLO(cloMap,cbo2Map,valueField));
@@ -1594,7 +1652,12 @@
                         conditionMap.put(usedAttributeVO.getId(),QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oids.toArray(new String[0])) + ")");
                         if(StringUtils.isNotBlank(usedAttributeVO.getPkBtmType())) {
                             if (boService.queryCount(usedAttributeVO.getPkBtmType(), conditionMap) > 0) {
-                                OsBtmTypeVO btmTypeVO = btmService.getBtmById(usedAttributeVO.getPkBtmType());
+                                OsBtmTypeVO btmTypeVO = null;
+                                try {
+                                    btmTypeVO = btmService.getBtmById(usedAttributeVO.getPkBtmType());
+                                } catch (PLException e) {
+                                    e.printStackTrace();
+                                }
                                 throw new VciBaseException("鏁版嵁鍦ㄣ��" + btmTypeVO.getName() + "銆戜腑鐨勫瓧娈礫" + usedAttributeVO.getName() + "]閲岃寮曠敤.涓嶈兘鍒犻櫎");
                             }
                         }else{

--
Gitblit v1.9.3