ludc
2024-12-05 63be0b44421faee8b3a8aae65db79ab30ca6ed69
表单查询接受参数和处理参数修改
已修改4个文件
98 ■■■■■ 文件已修改
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIDataGridQuery.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIFormQuery.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UITreeQuery.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIDataGridQuery.java
@@ -19,7 +19,7 @@
    /**
     * 业务类型编号,必输
     */
    private String btmname;
    private String btmName;
    /**
     * 表格定义的英文名称,必输
@@ -72,12 +72,12 @@
        this.selectData = selectData;
    }
    public String getBtmname() {
        return btmname;
    public String getBtmName() {
        return btmName;
    }
    public void setBtmname(String btmname) {
        this.btmname = btmname;
    public void setBtmName(String btmName) {
        this.btmName = btmName;
    }
    public String getTableDefineId() {
@@ -124,7 +124,7 @@
    @Override
    public String toString() {
        return "UIDataGridQuery{" +
                "btmname='" + btmname + '\'' +
                "btmName='" + btmName + '\'' +
                ", tableDefineId='" + tableDefineId + '\'' +
                ", uiDefineId='" + uiDefineId + '\'' +
                ", componentOid='" + componentOid + '\'' +
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIFormQuery.java
@@ -10,12 +10,12 @@
    /**
     * 业务类型编号,必输
     */
    private String btmname;
    private String btmName;
    /**
     * 主键
     * 表单定义的主键
     */
    private String oid;
    private String formDefineOid;
    /**
     * 表单定义的英文名称,必输
@@ -27,22 +27,33 @@
     */
    private boolean linkTypeFlag;
    /**
     * 主键
     */
    private String sourceOid;
    public String getBtmname() {
        return btmname;
    public void setSourceOid(String sourceOid) {
        this.sourceOid = sourceOid;
    }
    public void setBtmname(String btmname) {
        this.btmname = btmname;
    public String getSourceOid() {
        return sourceOid;
    }
    public String getOid() {
        return oid;
    public String getBtmName() {
        return btmName;
    }
    public void setOid(String oid) {
        this.oid = oid;
    public void setBtmName(String btmname) {
        this.btmName = btmname;
    }
    public String getFormDefineOid() {
        return formDefineOid;
    }
    public void setFormDefineOid(String formDefineOid) {
        this.formDefineOid = formDefineOid;
    }
    public String getFormDefineId() {
@@ -64,9 +75,10 @@
    @Override
    public String toString() {
        return "UIFormQuery{" +
                "btmname='" + btmname + '\'' +
                ", oid='" + oid + '\'' +
                "btmName='" + btmName + '\'' +
                ", formDefineOid='" + formDefineOid + '\'' +
                ", formDefineId='" + formDefineId + '\'' +
                ", sourceOid='" + sourceOid + '\'' +
                ", linkTypeFlag=" + linkTypeFlag +
                "} " + super.toString();
    }
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UITreeQuery.java
@@ -17,7 +17,7 @@
    /**
     * 业务类型编号,必输
     */
    private String btmname;
    private String btmName;
    /**
     * UI上下文的主键
@@ -81,12 +81,12 @@
    }
    public String getBtmname() {
        return btmname;
    public String getBtmName() {
        return btmName;
    }
    public void setBtmname(String btmname) {
        this.btmname = btmname;
    public void setBtmName(String btmName) {
        this.btmName = btmName;
    }
    public String getUiDefineId() {
@@ -148,7 +148,7 @@
    @Override
    public String toString() {
        return "UITreeQuery{" +
                "btmname='" + btmname + '\'' +
                "btmName='" + btmName + '\'' +
                ", uiDefineId='" + uiDefineId + '\'' +
                ", componentOid='" + componentOid + '\'' +
                ", rootExpress='" + rootExpress + '\'' +
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java
@@ -150,7 +150,7 @@
     */
    @Override
    public DataGrid getDataForGrid(UIDataGridQuery dataGridQuery) throws VciBaseException, PLException {
        VciBaseUtil.alertNotNull(dataGridQuery,"查询对象",dataGridQuery.getBtmname(),"业务类型",dataGridQuery.getTableDefineId());
        VciBaseUtil.alertNotNull(dataGridQuery,"查询对象",dataGridQuery.getBtmName(),"业务类型",dataGridQuery.getTableDefineId());
        // TODO: 2024/12/4 Ludc 前端传过来的sourceData参数的vlaue可能是json这儿做一下处理
        if(Func.isNotEmpty(dataGridQuery.getSourceData())){
            dataGridQuery.setSourceData(this.convertMapValueJson2Map(dataGridQuery.getSourceData()));
@@ -160,7 +160,7 @@
        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());
            tableDefineVO = uiEngineService.getTableById(dataGridQuery.getBtmName(), dataGridQuery.getTableDefineId());
            queryTemplate = tableDefineVO.getQueryTemplateName();
        }
        //看看有没有自定义的SQL
@@ -190,12 +190,12 @@
        OsBtmTypeVO btmTypeVO = null;
        OsLinkTypeVO linkTypeVO = null;
        if(dataGridQuery.isLinkTypeFlag()){
            linkTypeVO = linkTypeService.getLinkTypeById(dataGridQuery.getBtmname());
            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());
            btmTypeVO = btmService.getBtmByName(dataGridQuery.getBtmName());
            queryFieldList.addAll(btmTypeVO.getAttributes().stream().map(OsBtmTypeAttributeVO::getId).collect(Collectors.toList()));
            queryFieldList.addAll(WebBoServiceImpl.BO_BASE_FIELD_MAP.values());
        }
@@ -210,7 +210,7 @@
            linkTypeDataQuery.setReplaceMap(replaceMap);
            linkTypeDataQuery.setConditionMap(dataGridQuery.getConditionMap());
            linkTypeDataQuery.setClauseList(queryFieldList);
            linkTypeDataQuery.setLinkType(dataGridQuery.getBtmname());
            linkTypeDataQuery.setLinkType(dataGridQuery.getBtmName());
            if(dataGridQuery.isTreeTableFlag()){
                linkTypeDataQuery.setLevel(-1);
            }
@@ -233,12 +233,12 @@
     */
    @Override
    public UIFormDataVO getDataForForm(UIFormQuery formQuery) throws VciBaseException, PLException {
        VciBaseUtil.alertNotNull(formQuery,"表单的查询对象",formQuery.getBtmname(),"业务类型的信息",formQuery.getOid(),"业务数据的主键",formQuery.getFormDefineId(),"表单的定义编号");
        VciBaseUtil.alertNotNull(formQuery,"表单的查询对象",formQuery.getBtmName(),"业务类型的信息",formQuery.getSourceOid(),"业务数据的主键",formQuery.getFormDefineId(),"表单的定义编号");
        // TODO: 2024/12/4 Ludc 前端传过来的sourceData参数的vlaue可能是json这儿做一下处理
        if(Func.isNotEmpty(formQuery.getSourceData())){
            formQuery.setSourceData(this.convertMapValueJson2Map(formQuery.getSourceData()));
        }
        UIFormDefineVO formDefineVO = uiEngineService.getFormById(formQuery.getBtmname(),formQuery.getFormDefineId());
        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());
        //获取参照
@@ -262,27 +262,27 @@
        OsBtmTypeVO btmTypeVO = null;
        OsLinkTypeVO linkTypeVO = null;
        if(formDefineVO.isLinkTypeFlag()){
            linkTypeVO = linkTypeService.getLinkTypeById(formQuery.getBtmname());
            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());
            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.getOid());
        Map<String,String> conditionMap = WebUtil.getOidQuery(formQuery.getSourceOid());
        Map<String, Object> replaceMap = wrapperReplaceMap(formQuery.getSourceData());
        UIFormDataVO formDataVO = new UIFormDataVO();
        replaceMap.put("oid", formQuery.getOid().trim());
        replaceMap.put("oid", formQuery.getSourceOid().trim());
        if(!formDefineVO.isLinkTypeFlag()) {
            List<BusinessObject> cbos = null;
            if (StringUtils.isNotBlank(queryTemplate)) {
                replaceMap.put("oid", formQuery.getOid().trim());
                // 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()));
                cbos = boService.queryCBO(formQuery.getBtmName(), conditionMap, null, queryFieldList.stream().collect(Collectors.toList()));
            }
            if (!CollectionUtils.isEmpty(cbos)) {
                BusinessObject cbo = cbos.get(0);
@@ -296,7 +296,7 @@
            linkTypeDataQuery.setReplaceMap(replaceMap);
            linkTypeDataQuery.setConditionMap(conditionMap);
            linkTypeDataQuery.setClauseList(queryFieldList);
            linkTypeDataQuery.setLinkType(formQuery.getBtmname());
            linkTypeDataQuery.setLinkType(formQuery.getBtmName());
            //linkTypeDataQuery.setDirection(formQuery.isOrientation());
            //linkTypeDataQuery.setToBtmType(treeDefineVO.getBtmType());
            DataGrid dataGrid = loService.queryGridByScheme(linkTypeDataQuery);
@@ -305,7 +305,7 @@
            }
        }
        //查询附件
        formDataVO.setAttachmentFileVOs(fileObjectService.listFilesByOwnbiz(formQuery.getOid(), formQuery.getBtmname(), "attachment"));
        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个
@@ -367,7 +367,7 @@
     */
    @Override
    public List<UIDataTree> getDataForTree(UITreeQuery treeQuery) throws Exception {
        VciBaseUtil.alertNotNull(treeQuery,"表单的查询对象",treeQuery.getBtmname(),"业务类型的信息",treeQuery.getComponentOid(),"树所在的组件的主键");
        VciBaseUtil.alertNotNull(treeQuery,"表单的查询对象",treeQuery.getBtmName(),"业务类型的信息",treeQuery.getComponentOid(),"树所在的组件的主键");
        // TODO: 2024/12/4 Ludc 前端传过来的sourceData参数的vlaue可能是json这儿做一下处理
        if(Func.isNotEmpty(treeQuery.getSourceData())){
            treeQuery.setSourceData(this.convertMapValueJson2Map(treeQuery.getSourceData()));
@@ -383,7 +383,7 @@
            throw new VciBaseException("这个组件不是树");
        }
        if(!treeQuery.isLinkTypeFlag() && StringUtils.isBlank(treeQuery.getParentBtmName())){
            treeQuery.setParentBtmName(treeQuery.getBtmname());
            treeQuery.setParentBtmName(treeQuery.getBtmName());
        }
        //TODO: 替换树定义上的正反向查询属性,因为正反向查询是由链接类型查询模板上控制的
        boolean isOrientation = false; //是否反向,使用模板上配置的