1428594221
2023-06-14 931eb15f748f181fbf347508830f21830f09c863
默认参照数接口,默认参照列表接口
已修改5个文件
342 ■■■■ 文件已修改
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java 272 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
@@ -12,10 +12,9 @@
import com.vci.ubcs.code.vo.pagemodel.*;
import com.vci.ubcs.starter.annotation.VciBusinessLog;
import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.util.LocalFileUtil;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import com.vci.ubcs.starter.web.pagemodel.*;
import com.vci.ubcs.starter.web.util.ControllerUtil;
import com.vci.ubcs.starter.web.util.LangBaseUtil;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
@@ -531,4 +530,25 @@
//        return engineService.updateBatchByBaseModel("wupin", models);
//        return engineService.getUIInfoByClassifyOid(codeClassifyOid,functionId);
    }
    /**
     * 默认的参照列表
     * @param referConfigVO 参照的配置信息
     * @return 执行的结果
     */
    @GetMapping("/defaultReferDataGrid")
    public DataGrid defaultReferDataGrid(UIFormReferVO referConfigVO, PageHelper pageHelper){
        return engineService.referDataGrid(referConfigVO,pageHelper);
    }
    /**
     * 默认的树形参照列表
     * @param referConfigVO 参照的配置信息
     * @return 执行的结果
     */
    @GetMapping("/defaultReferTree")
    public List<Tree> defaultReferTree(UIFormReferVO referConfigVO, TreeQueryObject queryObject){
        return engineService.referTree(referConfigVO,queryObject);
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyService.java
@@ -32,6 +32,20 @@
     */
    List<CodeClassify> selectByWrapper(Wrapper wrapper);
    /**
     * 使用查询封装器来查询
     * @param wrapper 查询封装器
     * @return 数据对象
     */
    List<String> select1(Wrapper wrapper);
    /**
     * 自定义分页
     *
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java
@@ -12,6 +12,7 @@
import com.vci.ubcs.code.vo.pagemodel.UITableFieldVO;
import com.vci.ubcs.code.vo.pagemodel.*;
import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.web.pagemodel.*;
import org.springblade.core.tool.api.R;
@@ -395,4 +396,19 @@
     */
    R updateBatchByBaseModel(String btmType, List<BaseModel> baseModels);
    /**
     * 默认列表
     * @param referConfigVO
     * @param pageHelper
     * @return
     */
    DataGrid referDataGrid(UIFormReferVO referConfigVO, PageHelper pageHelper);
    /**
     * 获取树形的参照
     * @param referConfigVO 参照的配置
     * @return 树形的数据
     */
    List<Tree> referTree(UIFormReferVO referConfigVO, TreeQueryObject queryObject);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -106,6 +106,20 @@
        return codeClassifyMapper.selectList(wrapper);
    }
    /**
     * 查询
     * @param wrapper 查询封装器
     * @return
     */
    @Override
    public List<String> select1(Wrapper wrapper) {
        return codeClassifyMapper.selectObjs(wrapper);
    }
    @Override
    public IPage<CodeClassifyVO> selectPlCodeClassifyPage(IPage<CodeClassifyVO> page, CodeClassifyVO plCodeClassify) {
        return page.setRecords(codeClassifyMapper.selectPlCodeClassifyPage(page, plCodeClassify));
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.code.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
@@ -21,6 +22,8 @@
import com.vci.ubcs.code.vo.pagemodel.UITableFieldVO;
import com.vci.ubcs.code.vo.pagemodel.UITablePageVO;
import com.vci.ubcs.code.vo.pagemodel.*;
import com.vci.ubcs.omd.constant.BtmTypeLcStatusConstant;
import com.vci.ubcs.omd.entity.BtmTypeAttribute;
import com.vci.ubcs.omd.feign.IAttributeClient;
import com.vci.ubcs.omd.feign.IBtmTypeClient;
import com.vci.ubcs.omd.feign.IEnumClient;
@@ -31,6 +34,7 @@
import com.vci.ubcs.omd.vo.RevisionRuleVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
@@ -49,9 +53,12 @@
import com.vci.ubcs.system.user.feign.IUserClient;
import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
import oracle.sql.TIMESTAMP;
import org.apache.commons.collections4.MapUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.StringPool;
@@ -60,6 +67,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import plm.bs.bom.clientobject.ClientBusinessObject;
import javax.annotation.Resource;
import java.beans.BeanInfo;
@@ -266,7 +274,7 @@
    /**
     * 替换字符
     */
    public static final String SPECIAL_CHAR  = "VCI";
    public static final String SPECIAL_CHAR = "VCI";
//    @Autowired
//    private CodeOsbtmtypeMapper codeOsbtmtypeMapper;----
@@ -312,7 +320,7 @@
//             Dict dict = new Dict();
//            dict.setParentId(Long.valueOf(attrVO.getEnumid()));
            R<List<EnumVO>> list = enumClient.getList(attrVO.getEnumId());
            if(list.isSuccess()){
            if (list.isSuccess()) {
                for (EnumVO datum : list.getData()) {
                    KeyValue keyValue = new KeyValue();
                    keyValue.setKey(datum.getItemValue());
@@ -323,7 +331,6 @@
        }
        return comboboxKVs;
    }
    /**
     * 修改状态
     *
@@ -1184,7 +1191,7 @@
            //处理所有的列,这个模板没有合并的表头的情况
            List<UITableFieldVO> fieldVOList = new ArrayList<>();
            resembleAttrList.forEach(attrVO -> {
                UITableFieldVO tableFieldVO = templateAttr2TableField(attrVO,false);
                UITableFieldVO tableFieldVO = templateAttr2TableField(attrVO, false);
                tableFieldVO.setHidden(false);
                fieldVOList.add(tableFieldVO);
            });
@@ -1199,12 +1206,12 @@
    /**
     * 模板属性转换为表格显示的配置
     *
     * @param attrVO 模板属性
     * @param attrVO  模板属性
     * @param forEdit 是否是编辑所需
     * @return 表格的字段
     */
    @Override
    public UITableFieldVO templateAttr2TableField(CodeClassifyTemplateAttrVO attrVO,boolean forEdit) {
    public UITableFieldVO templateAttr2TableField(CodeClassifyTemplateAttrVO attrVO, boolean forEdit) {
        UITableFieldVO fieldVO = new UITableFieldVO();
        if (SECRET_FILED.equalsIgnoreCase(attrVO.getId())) {
            attrVO.setEnumId(MY_DATA_SECRET);
@@ -1215,9 +1222,9 @@
        fieldVO.setSort(true);
        fieldVO.setSortField(fieldVO.getField());
        fieldVO.setQueryField(fieldVO.getField());
        if (forEdit){
        if (forEdit) {
            fieldVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getFormDisplayFlag()));
        }else {
        } else {
            fieldVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getTableDisplayFlag()));
        }
        if (attrVO.getAttrTableWidth() != null && attrVO.getAttrTableWidth() > 0) {
@@ -1237,7 +1244,7 @@
                if (StringUtils.isBlank(attrVO.getEnumId())) {
                    fieldVO.setComboxKey(fieldVO.getField() + "_data");
                }
            }else {
            } else {
//                List<KeyValue> osEnumItemVOList= enumService.getEnum(attrVO.getEnumId());
//                fieldVO.setData(osEnumItemVOList);
            }
@@ -1407,8 +1414,8 @@
                }
            }
            queryValue = String.format(temp, (trim ? value.trim() : value));
            temp = temp.replace("to_single_byte('%s')","to_single_byte(%s)");
            queryKey = String.format(temp, "t."+attrId);
            temp = temp.replace("to_single_byte('%s')", "to_single_byte(%s)");
            queryKey = String.format(temp, "t." + attrId);
            conditionMap.put(queryKey, QueryOptionConstant.OR + queryValue);
        }
    }
@@ -1427,7 +1434,7 @@
    public DataGrid<Map<String, String>> queryGrid(String btmType, CodeClassifyTemplateVO templateVO, Map<String, String> conditionMap, PageHelper pageHelper) {
        CodeTemplateAttrSqlBO sqlBO = getSqlByTemplateVO(btmType, templateVO, conditionMap, pageHelper);
//        List<Map> maps = boService.queryByOnlySqlForMap(sqlBO.getSqlHasPage());
        List<Map<String,String>> maps = commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlHasPage());
        List<Map<String, String>> maps = commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlHasPage());
        DataGrid<Map<String, String>> dataGrid = new DataGrid<>();
        List<Map<String, String>> dataList = new ArrayList<>();
@@ -1480,7 +1487,7 @@
     * @param dataMap              数据的映射
     * @param templateVO           模板的属性
     * @param onlySelectAttrIdList 仅仅查询的属性字段
     * @param form 表单里使用
     * @param form                 表单里使用
     */
    @Override
    public void wrapperData(List<Map<String, String>> dataMap, CodeClassifyTemplateVO templateVO,
@@ -1511,15 +1518,15 @@
            //处理枚举
            wrapperEnum(enumAttrVOs, data);
            String lcstatus = data.get(VciQueryWrapperForDO.LC_STATUS_FIELD);
            String copyFromVersion = data.getOrDefault(COPY_FROM_VERSION,"");
            String copyFromVersion = data.getOrDefault(COPY_FROM_VERSION, "");
            if ((CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus) || CodeDefaultLC.AUDITING.getValue().equalsIgnoreCase(lcstatus))
                && StringUtils.isBlank(copyFromVersion)
            ) {
                data.put(VciQueryWrapperForDO.ID_FIELD, "******");
            }
            data.put(VciQueryWrapperForDO.LC_STATUS_FIELD_TEXT.toLowerCase(Locale.ROOT), CodeDefaultLC.getTextByValue(lcstatus));
            if(CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus)
                && StringUtils.isNotBlank(copyFromVersion)){
            if (CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus)
                && StringUtils.isNotBlank(copyFromVersion)) {
                data.put(VciQueryWrapperForDO.LC_STATUS_FIELD_TEXT.toLowerCase(Locale.ROOT), "修改中");
            }
            if (data.containsKey("creator")) {
@@ -1532,12 +1539,12 @@
        if (!CollectionUtils.isEmpty(userIds)) {
            Map<String, User> userVOMap = new HashMap<>();
            for (String userId : userIds) {
                if(!StringUtils.isNumeric(userId)){
                if (!StringUtils.isNumeric(userId)) {
                    continue;
                }
                User data = iUserClient.userInfoById(Long.valueOf(userId)).getData();
                if(data != null){
                    userVOMap.put(String.valueOf(data.getId()),data);
                if (data != null) {
                    userVOMap.put(String.valueOf(data.getId()), data);
                }
            }
//            Map<String, SmUserVO> userVOMap = Optional.ofNullable(userQueryService.listUserByUserIds(userIds)).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
@@ -1670,7 +1677,7 @@
//                selectFieldList.add(attrId.getOid());
//            }
//        });
        if(allAttributeByBtmId.getData() != null ){
        if (allAttributeByBtmId.getData() != null) {
            for (BtmTypeAttributeVO attribute : allAttributeByBtmId.getData().getAttributes()) {
                if (!selectFieldList.contains(attribute.getId()) && !"secretgrade".equalsIgnoreCase(attribute.getId())) {
                    selectFieldList.add(attribute.getId());
@@ -2060,8 +2067,6 @@
//        return codeList.size() > 0 ? codeList.get(0) : "";
        //修改的时候,编码是不变的
//        BatchCBO batchCBO = new BatchCBO();
//        batchCBO.getUpdateCbos().add(cbo);
@@ -2106,10 +2111,10 @@
        //只能删除自己创建的数据
        String userId = AuthUtil.getUser().getUserName();
        for (CodeWupin clientBusinessObject:cboList){
        for (CodeWupin clientBusinessObject : cboList) {
            String creator = clientBusinessObject.getCreator();
            if(!userId.equalsIgnoreCase(creator)){
                throw new VciBaseException("编码为"+clientBusinessObject.getId()+"的数据不是当前用户创建,不能删除!");
            if (!userId.equalsIgnoreCase(creator)) {
                throw new VciBaseException("编码为" + clientBusinessObject.getId() + "的数据不是当前用户创建,不能删除!");
            }
        }
@@ -2519,11 +2524,11 @@
        String btmId = topClassifyVO.getBtmtypeid();
        //查询数据
        Map<String, String> conditionMap = new HashMap<>();
        conditionMap.put("t.oid",oid);
        conditionMap.put("t.oid", oid);
        CodeTemplateAttrSqlBO sqlBO = getSqlByTemplateVO(btmId, templateVO, conditionMap, new PageHelper(-1));
        //我们使用和业务类型的来查询
        List<Map> cbosB = commonsMapper.selectBySql(sqlBO.getSqlUnPage());
        List<Map<String,String>> cbos = new ArrayList<>();
        List<Map<String, String>> cbos = new ArrayList<>();
        cbosB.stream().forEach(map -> {
            Map<String, String> data = new HashMap<>();
            for (Object o : map.keySet()) {
@@ -2537,7 +2542,7 @@
            throw new VciBaseException("数据在系统中不存在,是否因为修改过业务类型?");
        }
//        Map<String, String> data = new HashMap<>();
        Map<String,String> cbo = cbos.get(0);
        Map<String, String> cbo = cbos.get(0);
//        WebUtil.copyValueToMapFromCbos(cbo, data);
        List<Map<String, String>> dataList = new ArrayList<>();
        dataList.add(cbo);
@@ -2633,10 +2638,10 @@
        QueryWrapper<CodeWupin> wrapper = new QueryWrapper();
        if (conditionMap.get("oid").contains(",")) {
//            oidMap.put("oid", QueryOptionConstant.IN +"("+ VciBaseUtil.toInSql(oidList.toArray(new String[0])) + ")");
            wrapper.in("oid",oidList);
            wrapper.in("oid", oidList);
        } else {
//            oidMap.put("oid", conditionMap.get("oid"));
            wrapper.in("oid",conditionMap.get("oid"));
            wrapper.in("oid", conditionMap.get("oid"));
        }
        if (CollectionUtils.isEmpty(oidMap)) {
            throw new VciBaseException("业务数据主键不能为空");
@@ -2669,18 +2674,18 @@
        CodeClassifyTemplateVO templateVO = templateService.codeClassifyTemplateDO2VO(templateDOList.get(0));
        templateVO.setAttributes(codeClassifyTemplateAttrService.codeClassifyTemplateAttrDO2VOs(attrDOList));
        try {
            if (oidList.size() > 1){
                DataGrid<Map<String,String>> allDataGrid = new DataGrid<>();
                List<Map<String,String>> allData = new ArrayList<>();
            if (oidList.size() > 1) {
                DataGrid<Map<String, String>> allDataGrid = new DataGrid<>();
                List<Map<String, String>> allData = new ArrayList<>();
                oidList.forEach(oid -> {
                    Map<String,String> condition = new HashMap<>();
                    condition.put("oid",oid);
                    Map<String, String> condition = new HashMap<>();
                    condition.put("oid", oid);
                    DataGrid<Map<String, String>> dataGrid = queryGrid(btmType, templateVO, condition, pageHelper);
                    allData.addAll(dataGrid.getData());
                });
                allDataGrid.setData(allData);
                return allDataGrid;
            }else {
            } else {
                return queryGrid(btmType, templateVO, conditionMap, pageHelper);
            }
        } catch (Exception e) {
@@ -2700,20 +2705,20 @@
        MdmUIInfoVO uiInfoVO = new MdmUIInfoVO();
        CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid);
        uiInfoVO.setTemplateVO(templateVO);
        UITableDefineVO uiTableDefineVO = wrapperTableDefineByTemplate(templateVO,true);
        UITableDefineVO uiTableDefineVO = wrapperTableDefineByTemplate(templateVO, true);
        List<String> phaseAttrIdList = listPhaseAttrByClassifyOid(codeClassifyOid, phase);
        uiTableDefineVO.getCols().stream().forEach(list -> {
            List<UITableFieldVO> visiableTableField=new ArrayList<>();
            if(StringUtils.isNotBlank(phase)) {
            List<UITableFieldVO> visiableTableField = new ArrayList<>();
            if (StringUtils.isNotBlank(phase)) {
                visiableTableField = list.stream().filter(col ->
                    phaseAttrIdList.stream().anyMatch(s -> StringUtils.equalsIgnoreCase(col.getField(), s) ||
                        (StringUtils.equalsIgnoreCase(col.getFieldType(), "combox") && StringUtils.equalsIgnoreCase(col.getSortField(), s))
                        || (StringUtils.equalsIgnoreCase(col.getFieldType(), "refer") && StringUtils.equalsIgnoreCase(col.getQueryField(), s))
                    )).collect(Collectors.toList());
            }else{
                visiableTableField=  list.stream().filter(col ->
            } else {
                visiableTableField = list.stream().filter(col ->
                    templateVO.getAttributes().stream().anyMatch(s ->
                        (!s.getReadOnlyFlag().equalsIgnoreCase("true")&& StringUtils.equalsIgnoreCase(col.getField(), s.getId())) ||
                        (!s.getReadOnlyFlag().equalsIgnoreCase("true") && StringUtils.equalsIgnoreCase(col.getField(), s.getId())) ||
                            (StringUtils.equalsIgnoreCase(col.getFieldType(), "combox") && StringUtils.equalsIgnoreCase(col.getSortField(), s.getId()))
                            || (StringUtils.equalsIgnoreCase(col.getFieldType(), "refer") && StringUtils.equalsIgnoreCase(col.getQueryField(), s.getId()))
                    )).collect(Collectors.toList());
@@ -2725,9 +2730,9 @@
                    setReferConfig2EditConfig(vo);
                } else if ("combox".equalsIgnoreCase(vo.getFieldType())) {
                    setComboxConfig2EditConfig(vo);
                } else if (StringUtils.isNotBlank(vo.getDateFormate())){
                } else if (StringUtils.isNotBlank(vo.getDateFormate())) {
                    vo.setEdit("date");
                }else {
                } else {
                    vo.setEdit(vo.getFieldType());
                }
            });
@@ -2807,14 +2812,14 @@
     * @param vo 表格字段显示对象
     */
    private void setReferConfig2EditConfig(UITableFieldVO vo) {
        if (!CollectionUtils.isEmpty(vo.getReferConfig().getWhere())){
        if (!CollectionUtils.isEmpty(vo.getReferConfig().getWhere())) {
            vo.getReferConfig().getWhere().keySet().forEach(key -> {
                vo.getReferConfig().getWhere().put(key, "'" + vo.getReferConfig().getWhere().get(key) + "'");
            });
        }
        if (StringUtils.isNotBlank(vo.getReferConfig().getParentValue())){
        if (StringUtils.isNotBlank(vo.getReferConfig().getParentValue())) {
            String parentValue = vo.getReferConfig().getParentValue();
            parentValue ="\\" +  parentValue.replaceAll("'","{vci-quote}").replaceAll("=","{vci-equals}");
            parentValue = "\\" + parentValue.replaceAll("'", "{vci-quote}").replaceAll("=", "{vci-equals}");
            vo.getReferConfig().setParentValue(parentValue);
        }
        String referConfig = vo.getReferConfig().toString()
@@ -2838,16 +2843,16 @@
     */
    private void setComboxConfig2EditConfig(UITableFieldVO vo) {
        vo.setEditConfig("{editable:true,comboxKey:'" + vo.getComboxKey() + "'");
        if (!CollectionUtils.isEmpty(vo.getData())){
            vo.setEditConfig(vo.getEditConfig()+", comboxConfig:");
        if (!CollectionUtils.isEmpty(vo.getData())) {
            vo.setEditConfig(vo.getEditConfig() + ", comboxConfig:");
            for (int i = 0; i < vo.getData().size(); i++) {
                KeyValue data = vo.getData().get(i);
                if (i == vo.getData().size() -1){
                    vo.setEditConfig(vo.getEditConfig() + "{attributes:"+data.getAttributes()+",key:'"+data.getKey()+"',value:'"+data.getValue()+"'}]}");
                }else if (i == 0){
                    vo.setEditConfig(vo.getEditConfig() + "{data:[{attributes:"+data.getAttributes()+",key:'"+data.getKey()+"',value:'"+data.getValue()+"'},");
                }else{
                    vo.setEditConfig(vo.getEditConfig() + "{attributes:"+data.getAttributes()+",key:'"+data.getKey()+"',value:'"+data.getValue()+"'},");
                if (i == vo.getData().size() - 1) {
                    vo.setEditConfig(vo.getEditConfig() + "{attributes:" + data.getAttributes() + ",key:'" + data.getKey() + "',value:'" + data.getValue() + "'}]}");
                } else if (i == 0) {
                    vo.setEditConfig(vo.getEditConfig() + "{data:[{attributes:" + data.getAttributes() + ",key:'" + data.getKey() + "',value:'" + data.getValue() + "'},");
                } else {
                    vo.setEditConfig(vo.getEditConfig() + "{attributes:" + data.getAttributes() + ",key:'" + data.getKey() + "',value:'" + data.getValue() + "'},");
                }
            }
            vo.setEditConfig(vo.getEditConfig() + ",valueField:'" + vo.getQueryField() + "'");
@@ -2865,7 +2870,7 @@
    @Override
    public MdmUIInfoVO getFormDefineByClassifyIdPath(String idPath) {
        CodeClassifyVO classifyVO = classifyService.getObjectByIdPath(idPath);
        if(classifyVO !=null){
        if (classifyVO != null) {
            return getFormDefineByClassifyOid(classifyVO.getOid());
        }
        return null;
@@ -2910,7 +2915,7 @@
        MdmUIInfoVO uiInfoVO = new MdmUIInfoVO();
        uiInfoVO.setTemplateVO(templateVO);
        //我们需要将模板转换为表格相关的显示信息
        uiInfoVO.setTableDefineVO(wrapperTableDefineByTemplate(uiInfoVO.getTemplateVO(),false));
        uiInfoVO.setTableDefineVO(wrapperTableDefineByTemplate(uiInfoVO.getTemplateVO(), false));
        //需要去看扩展的按钮,只有列表里面本身才添加进去,工具栏上的单独获取
        List<CodeClassifyTemplateButtonVO> buttonVOS = templateButtonService.listButtonByTemplateOid(templateVO.getOid(), true);
        if (!CollectionUtils.isEmpty(buttonVOS)) {
@@ -2949,8 +2954,8 @@
    @Override
    public MdmUIInfoVO getUIInfoByClassifyIdPath(String codeClassifyIdPath, String functionId) {
        CodeClassifyVO classifyVO = classifyService.getObjectByIdPath(codeClassifyIdPath);
        if(classifyVO !=null){
            return getUIInfoByClassifyOid(classifyVO.getOid(),functionId);
        if (classifyVO != null) {
            return getUIInfoByClassifyOid(classifyVO.getOid(), functionId);
        }
        return null;
    }
@@ -3062,7 +3067,7 @@
     * 传入业务类型以及相oid集合查询数据进行返回
     *
     * @param btmType 业务类型
     * @param oids      需要查询的oid集合 逗号分开
     * @param oids    需要查询的oid集合 逗号分开
     * @return 查询出的数据
     */
    @Override
@@ -3070,7 +3075,7 @@
        //使用传入的业务类型查询表
        R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType));
        if(listR.getData().size() == 0){
        if (listR.getData().size() == 0) {
            throw new VciBaseException("传入业务类型未查询到相应表单,请检查!");
        }
        //查询数据
@@ -3215,4 +3220,149 @@
        return R.success("更新成功!");
    }
    /**
     * 获取参照的信息
     *
     * @param referConfigVO 参照的配置
     * @param pageHelper    分页的工具
     * @return 列表数据
     */
    @Override
    public DataGrid referDataGrid(UIFormReferVO referConfigVO, PageHelper pageHelper) {
//        checkReferConfig(referConfigVO);
        //使用业务类型查询
        R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getAllAttributeByBtmId(referConfigVO.getReferType());
        BtmTypeVO btmTypeVO = allAttributeByBtmId.getData();
        if (referConfigVO.getWhere() == null) {
            referConfigVO.setWhere(new HashMap<>());
        }
        /**
         * 加上查询最新版次
         */
        Map<String, String> conditionMap = new HashMap<>();
        conditionMap.put("lastr", "1");
        conditionMap.put("lastv", "1");
        referConfigVO.getWhere().putAll(conditionMap);
        if (VciBaseUtil.containsKeyUnCaseForMap(referConfigVO.getWhere(), VciQueryWrapperForDO.LC_STATUS_FIELD) &&
            BtmTypeLcStatusConstant.FRAME_WORK_LIFE_CYCLE_NAME.equalsIgnoreCase(btmTypeVO.getLifeCycleId())) {
            referConfigVO.getWhere().put(VciQueryWrapperForDO.LC_STATUS_FIELD, FrameworkDataLCStatus.ENABLED.getValue());
        }
        if (VciBaseUtil.containsKeyUnCaseForMap(referConfigVO.getWhere(), VciQueryWrapperForDO.LC_STATUS_FIELD) &&
            BtmTypeLcStatusConstant.RELEASE_LIFE_CYCLE.equalsIgnoreCase(btmTypeVO.getLifeCycleId())) {
            referConfigVO.getWhere().put(VciQueryWrapperForDO.LC_STATUS_FIELD, CodeDefaultLC.RELEASED.getValue());
        }
        BaseQueryObject baseQueryObject = new BaseQueryObject();
        Map<String, String> where = referConfigVO.getWhere();
        where.put("domain", AppConstant.APPLICATION_NAME_CODE);
        baseQueryObject.setConditionMap(where);
        baseQueryObject.setPage(pageHelper.getPage());
        baseQueryObject.setSort(pageHelper.getSort());
        baseQueryObject.setLimit(pageHelper.getLimit());
        baseQueryObject.setOrder(pageHelper.getOrder());
        R<List<BtmTypeVO>> ref = btmTypeClient.getRef(baseQueryObject);
        DataGrid<BtmTypeVO> btmTypeVODataGrid = new DataGrid<>();
        List<BtmTypeVO> data = ref.getData();
        btmTypeVODataGrid.setData(data);
        btmTypeVODataGrid.setCode(ref.getCode());
        btmTypeVODataGrid.setLimit(pageHelper.getLimit());
        btmTypeVODataGrid.setMsg(ref.getMsg());
        btmTypeVODataGrid.setSort(pageHelper.getSort());
        btmTypeVODataGrid.setOrder(pageHelper.getOrder());
        btmTypeVODataGrid.setPage(pageHelper.getPage());
        return btmTypeVODataGrid;
    }
    /**
     * 获取树形的参照
     *
     * @param referConfigVO 参照的配置
     * @return 树形的数据
     */
    @Override
    public List<Tree> referTree(UIFormReferVO referConfigVO, TreeQueryObject queryObject) {
        if (queryObject.getConditionMap() == null) {
            queryObject.setConditionMap(new HashMap<>());
        }
        if (queryObject.getParentOid()==null){
            LambdaQueryWrapper<CodeClassify> lqw = new LambdaQueryWrapper<>();
            String parentValue = referConfigVO.getParentValue().substring(3);
            lqw.inSql(CodeClassify::getOid,parentValue);
            List<String> codeClassifies = classifyService.select1(lqw);
            String oid = codeClassifies.get(0);
            queryObject.setParentOid(oid);
        }
        String oidFieldName = StringUtils.isNotBlank(referConfigVO.getParentUsedField()) ? referConfigVO.getParentUsedField() : referConfigVO.getValueField();
        if (queryObject.isQueryAllLevel()) {
            String parentOidSql = "";
            if (StringUtils.isNotBlank(referConfigVO.getParentValue())) {
                String temp = referConfigVO.getParentValue();
                if (temp.startsWith(QueryOptionConstant.IN)) {
                    temp = temp.substring((QueryOptionConstant.IN).length()).trim();
                    parentOidSql = " in " + ((temp.startsWith("(") && temp.endsWith(")")) ? temp : "(" + temp + ")");
                } else if (temp.startsWith(QueryOptionConstant.NOTIN)) {
                    parentOidSql = " not in " + ((temp.startsWith("(") && temp.endsWith(")")) ? temp : "(" + temp + ")");
                } else if (temp.startsWith(QueryOptionConstant.NOTEQUAL)) {
                    temp = temp.substring((QueryOptionConstant.NOTEQUAL).length()).trim();
                    parentOidSql = QueryOptionConstant.NOTEQUAL + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'");
                } else if (temp.startsWith(QueryOptionConstant.MORETHAN)) {
                    temp = temp.substring((QueryOptionConstant.MORETHAN).length()).trim();
                    parentOidSql = QueryOptionConstant.MORETHAN + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'");
                } else if (temp.startsWith(QueryOptionConstant.MORE)) {
                    temp = temp.substring((QueryOptionConstant.MORE).length()).trim();
                    parentOidSql = QueryOptionConstant.MORE + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'");
                } else if (temp.startsWith(QueryOptionConstant.LESSTHAN)) {
                    temp = temp.substring((QueryOptionConstant.LESSTHAN).length()).trim();
                    parentOidSql = QueryOptionConstant.LESSTHAN + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'");
                } else if (temp.startsWith(QueryOptionConstant.LESS)) {
                    temp = temp.substring((QueryOptionConstant.LESS).length()).trim();
                    parentOidSql = QueryOptionConstant.LESS + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'");
                } else if (temp.startsWith(QueryOptionConstant.ISNOTNULL)) {
                    parentOidSql = " is not null";
                } else if (temp.startsWith(QueryOptionConstant.ISNULL)) {
                    parentOidSql = " is  null";
                } else if (temp.contains("*")) {
                    parentOidSql = " like " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'").replace("*", "%");
                } else {
                    parentOidSql = " = " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'");
                }
            }
            //查询全部的信息
            queryObject.getConditionMap().put("oid", QueryOptionConstant.IN + "(select oid from " +
                    getTableName(referConfigVO.getReferType())+
                " START WITH " + referConfigVO.getParentFieldName() + " " +
                parentOidSql +
                " CONNECT BY PRIOR " + oidFieldName + " = " + referConfigVO.getParentFieldName() + ")");
        } else {
            if (StringUtils.isNotBlank(referConfigVO.getParentFieldName()) && StringUtils.isNotBlank(queryObject.getParentOid())) {
                queryObject.getConditionMap().put(referConfigVO.getParentFieldName(), queryObject.getParentOid());
            }
        }
        LambdaQueryWrapper<CodeClassify> lqw = new LambdaQueryWrapper<>();
        String sql = queryObject.getConditionMap().get("oid").substring(3);
        lqw.inSql(CodeClassify::getOid,sql);
        List<CodeClassify> codeClassifies = classifyService.selectByWrapper(lqw);
        TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(referConfigVO.getParentFieldName());
        treeWrapperOptions.setOidFieldName(oidFieldName);
        treeWrapperOptions.setTextFieldName(referConfigVO.getTextField());
        treeWrapperOptions.setMultipleSelect(referConfigVO.isMuti());
        treeWrapperOptions.setParentOid(queryObject.getParentOid());
        return revisionModelUtil.doList2Trees(codeClassifies, treeWrapperOptions, null);
    }
    private String getTableName(String refertype){
        if ("codeclassify".equals(refertype)){
            return "pl_code_classify";
        }
        if ("table".equals(refertype)){
            return "pl_code_test_table";
        }
        if ("testBtmType".equals(refertype)){
            return "PLBT_code_testBtmType";
        }
        return "pl_code_"+refertype.trim().toLowerCase();
    }
}