ludc
2024-12-05 63be0b44421faee8b3a8aae65db79ab30ca6ed69
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; //是否反向,使用模板上配置的