ludc
2024-12-06 e51b66b8a4a502e31f3f0056012e4eb4863f3d8e
UI数据查询接口添加支持自定义类查询方式查询的代码逻辑
已修改1个文件
26 ■■■■ 文件已修改
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java
@@ -258,7 +258,6 @@
        }
        //先判断查询模板是否配置了自定义查询类
        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)){
@@ -269,7 +268,7 @@
                // 创建类的实例
                Object instance = clazz.getDeclaredConstructor().newInstance();
                // 获取方法getDataForGrid(该方法是接口中统一定义的方法)
                Method method = clazz.getMethod("getDataForForm", UIDataGridQuery.class);
                Method method = clazz.getMethod("getDataForForm", UIFormQuery.class);
                // 调用方法
                UIFormDataVO uiFormDataVO = (UIFormDataVO) method.invoke(instance, formQuery);
                return uiFormDataVO;
@@ -278,6 +277,7 @@
                throw new VciBaseException("获取表格数据时出现错误,原因:"+e.getMessage());
            }
        }else{
            UIFormDefineVO formDefineVO = componentVO.getFormDefineVO();
            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());
            //获取参照
@@ -417,6 +417,24 @@
        if(componentVO == null || StringUtils.isBlank(componentVO.getOid())){
            throw new VciBaseException("树的配置信息没有获取到");
        }
        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(该方法是接口中统一定义的方法)
                Method method = clazz.getMethod("getDataForForm", UITreeQuery.class);
                // 调用方法
                List<UIDataTree> uiDataTreeList = (List<UIDataTree>) method.invoke(instance, treeQuery);
                return uiDataTreeList;
            }catch (Exception e){
                e.printStackTrace();
                throw new VciBaseException("获取表格数据时出现错误,原因:"+e.getMessage());
            }
        }else{
        //树形有两种,一种是业务类型里自参照,一种是链接类型
        UITreeDefineVO treeDefineVO = componentVO.getTreeDefineVO();
        if(treeDefineVO == null){
@@ -612,6 +630,7 @@
                    linkTypeDataQuery.getReplaceMap().put(isOrientation?"t_oid":"f_oid",treeQuery.getParentOid());
                }
                return cloAndCbo2Trees(loService.queryCLOAndBoByLinkType(linkTypeDataQuery),valueField,textField,parentFieldName,treeQuery.isShowCheckBox(),treeQuery.getParentOid());
                }
            }
        }
    }
@@ -1275,7 +1294,6 @@
        return result;
    }
    /**
     * 封装cbo对象
     * @param formDataDTO 表单数据
@@ -1391,7 +1409,6 @@
        }
        return data;
    }
    /**
     * 链接数据表单对象转换为基础的属性
@@ -1984,7 +2001,6 @@
        });
        return BaseResult.success(clo);
    }
    /**
     * 封装to端的数据