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/service/uidataservice/impl/UIDataCommonServiceImpl.java |  348 ++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 194 insertions(+), 154 deletions(-)

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;
     }
 
     /**

--
Gitblit v1.9.3