yuxc
2023-06-09 20562eb45974a5546ddd1e270055eb452fdbd394
1、MDM服务代码漏传
已修改2个文件
233 ■■■■ 文件已修改
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java 199 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -47,7 +47,7 @@
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 com.vci.ubcs.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
@@ -438,13 +438,34 @@
    }
    /**
     * 主键查询数据对象,关联查询
     * @param oid 主键
     * @return  数据对象
     */
    private CodeClassify selectByOidRel(String oid){
        List<CodeClassify> codeClassifyList = codeClassifyMapper.selectClassifyByKeyAndReseRel("'"+oid.trim()+"'");
//        CodeClassify codeClassifyEntity = (CodeClassify) codeClassifyList;
        if(codeClassifyList.size() == 0 ){
            throw new ServiceException("dataNotExist");//根据主键id未查到相关数据
        }
//        if(codeClassifyEntity == null || StringUtils.isBlank(codeClassifyEntity.getOid())){
//            throw new ServiceException("dataOidNotExist");//根据主键id未查到相关数据
//        }
        return codeClassifyList.get(0);
    }
    /**
     * 查询主题库分类 树
     * @param treeQueryObject 树查询对象
     * @return 主题库分类 显示树
     */
    @Override
    public List<Tree> treeCodeClassify(TreeQueryObject treeQueryObject) {
        List<CodeClassify> doList =codeClassifyMapper.selectCodeClassifyVOByTree(treeQueryObject.getParentOid());
        List<CodeClassify> doList =codeClassifyMapper
            .selectCodeClassifyDOByTree(treeQueryObject.getConditionMap().get("id"),treeQueryObject.getConditionMap().get("lcStatus"),treeQueryObject.getParentOid());
//        List<CodeClassify> doList =codeClassifyMapper.selectCodeClassifyVOByTree(treeQueryObject.getParentOid());
        List<CodeClassifyVO> voList = codeClassifyDO2VOs(doList);
        TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(PARENT_FIELD_NAME.toLowerCase(Locale.ROOT));
        treeWrapperOptions.copyFromTreeQuery(treeQueryObject);
@@ -993,10 +1014,15 @@
        }
        //使用主键查询一下
        List<CodeClassify> classifyDOS = codeClassifyMapper.selectBatchIds(oidLevelMap.keySet());
        String oids = "";
        for (String s : oidLevelMap.keySet()) {
            oids += "'"+s+"',";
        }
        List<CodeClassify> classifyDOS = codeClassifyMapper.selectClassifyByKeyAndReseRel(oids.substring(0,oids.length()-1));
        if(!CollectionUtils.isEmpty(classifyDOS)){
            classifyDOS.stream().forEach(classifyDO->{
                classifyDO.setDataLevel(VciBaseUtil.getInt(oidLevelMap.getOrDefault(classifyDO.getOid(),"0")));
                classifyDO.setLcStatusText(EnumCache.getValue("codeLcstatus",classifyDO.getLcStatus()));
            });
        }
        return classifyDOS;
@@ -1123,7 +1149,7 @@
    public CodeClassifyFullInfoBO getClassifyFullInfo(String codeClassifyOid) {
        VciBaseUtil.alertNotNull(codeClassifyOid,"分类的主键");
        CodeClassifyFullInfoBO fullInfo = new CodeClassifyFullInfoBO();
        CodeClassify classifyDO = selectByOid(codeClassifyOid);
        CodeClassify classifyDO = selectByOidRel(codeClassifyOid);
        //查询上级
        fullInfo.setCurrentClassifyVO(codeClassifyDO2VO(classifyDO));
//        List<Map<String, Object>> maps = codeClassifyMapper.selectAllLevelParentByOid(codeClassifyOid);
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -24,6 +24,7 @@
import com.vci.ubcs.omd.feign.IBtmTypeClient;
import com.vci.ubcs.omd.feign.IEnumClient;
import com.vci.ubcs.omd.feign.IRevisionRuleClient;
import com.vci.ubcs.omd.vo.BtmTypeAttributeVO;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.omd.vo.EnumVO;
import com.vci.ubcs.omd.vo.RevisionRuleVO;
@@ -40,7 +41,11 @@
import com.vci.ubcs.starter.web.toolmodel.DateConverter;
import com.vci.ubcs.starter.web.util.*;
import com.vci.ubcs.system.entity.DictBiz;
import com.vci.ubcs.system.entity.Menu;
import com.vci.ubcs.system.feign.IDictBizClient;
import com.vci.ubcs.system.feign.ISysClient;
import com.vci.ubcs.system.user.entity.User;
import com.vci.ubcs.system.user.feign.IUserClient;
import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
import oracle.sql.TIMESTAMP;
import org.slf4j.Logger;
@@ -50,6 +55,7 @@
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.StringPool;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.Cache;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -69,6 +75,7 @@
import java.time.ZonedDateTime;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.DATA_OID_NOT_EXIST;
@@ -105,7 +112,16 @@
     */
    @Resource
    IDictBizClient iDictBizClient;
    /**
     * 系统的服务
     */
    @Resource
    ISysClient iSysClient;
    /**
     * 用户服务
     */
    @Resource
    IUserClient iUserClient;
    /**
     * 字典的服务
     */
@@ -780,6 +796,11 @@
            data.put(CODE_TEMPLATE_OID_FIELD,templateVO.getOid());
            data.put(CODE_FULL_PATH_FILED,fullPath);
            cbo.setData(data);
            cbo.setOid(VciBaseUtil.getPk());
            cbo.setCreateTime(new Date());
            cbo.setLastModifyTime(new Date());
            cbo.setCreator(AuthUtil.getUser().getUserName());
            cbo.setLastModifier(AuthUtil.getUser().getUserName());
//            cbo.setCodeclsfid(classifyFullInfo.getCurrentClassifyVO().getOid());
//            cbo.setTemplateOid(templateVO.getOid());
//            cbo.setCodeclsfpath(fullPath);
@@ -792,7 +813,7 @@
//                        cbo.setLcStatus("Editing");
////                        cbo.setLcStatus(lifeCycleVO.getStartStatus());
//                    } else {
                        cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
                    cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
//                    }
                } else {
                    cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
@@ -801,7 +822,7 @@
            }
            int secret = VciBaseUtil.getInt(String.valueOf(cbo.getSecretGrade()));
            //插个点,后续看密级服务是否可用
            //后续看密级服务是否可用
//            if (secret == 0 || !secretService.checkDataSecret(secret)) {
            if (secret == 0 ) {
                Integer userSecret = VciBaseUtil.getCurrentUserSecret();
@@ -828,12 +849,14 @@
            btmName = btmName.trim().toLowerCase();
        }
        try {
            String keyPrefix = BTM_NAME.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
            String finalBtmName = btmName;
            return CacheUtil.get(BTM_INIT_CACHE, keyPrefix, btmName, () -> {
                BaseModel baseModel = createBaseModel(finalBtmName);
                return baseModel;
            });
            String keyPrefix = BTM_INIT_CACHE.concat(StringPool.COLON).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
//            String finalBtmName = btmName;
            Cache.ValueWrapper valueWrapper = CacheUtil.getCache(keyPrefix).get(keyPrefix.concat(String.valueOf(btmName)));
            if(valueWrapper == null){
                CacheUtil.getCache(keyPrefix).put(keyPrefix.concat(String.valueOf(btmName)), createBaseModel(btmName));
                valueWrapper = CacheUtil.getCache(keyPrefix).get(keyPrefix.concat(String.valueOf(btmName)));
            }
            return (BaseModel) valueWrapper.get();
        } catch (Exception e) {
            logger.error("创建业务类型对象",e);
            throw new VciBaseException("initBtmError",new String[]{btmName});
@@ -940,15 +963,15 @@
        }
    }
    @Override
    public MdmUIInfoVO getFormDefineByTemplateOid(String templateOid, String codeClassifyOid) {
    @Override
    public MdmUIInfoVO getFormDefineByTemplateOid(String templateOid, String codeClassifyOid) {
        CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(templateOid);
        MdmUIInfoVO uiInfoVO = new MdmUIInfoVO();
        uiInfoVO.setTemplateVO(templateVO);
        uiInfoVO.setFormDefineVO(wrapperFormDefineByTemplate(templateVO, codeClassifyOid));
        wrapperResemble(templateVO, uiInfoVO);
        return uiInfoVO;
    }
    }
    /**
@@ -1270,10 +1293,10 @@
        //没有限制分类,但是一个模板只可能在一个业务类型里面,所以直接查询这个业务类型即可
        if (!CollectionUtils.isEmpty(conditionMap)) {
            Map<String, String> andConditionMap = new HashMap<>();
            andConditionMap.put("lastr", "1");
            andConditionMap.put("lastv", "1");
            andConditionMap.put("t.lastr", "1");
            andConditionMap.put("t.lastv", "1");
            if (StringUtils.isNotBlank(orderDTO.getOid())) {
                andConditionMap.put("oid", QueryOptionConstant.NOTEQUAL + orderDTO.getOid());
                andConditionMap.put("t.oid", QueryOptionConstant.NOTEQUAL + orderDTO.getOid());
            }
            conditionMap.putAll(andConditionMap);
            PageHelper pageHelper = new PageHelper(-1);
@@ -1380,21 +1403,33 @@
    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> maps = commonsMapper.selectBySql(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<>();
//        if (!CollectionUtils.isEmpty(maps)) {
//            maps.stream().forEach(map -> {
//                Map<String, String> data = new HashMap<>();
//                map.forEach((key, value) -> {
//                    data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value));
//                });
//                dataList.add(data);
//            });
//        }
//        dataGrid.setData(dataList);
        if (!CollectionUtils.isEmpty(maps)) {
            wrapperData(maps, templateVO, sqlBO.getSelectFieldList(), false);
            maps.stream().forEach(map -> {
                Map<String, String> data = new HashMap<>();
                map.forEach((key, value) -> {
                    data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value));
                });
//                map.forEach((key, value) -> {
//                    data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value));
//                });
                for (String s : map.keySet()) {
                    data.put(((String) s).toLowerCase(Locale.ROOT), String.valueOf(map.get(s)));
                }
                dataList.add(data);
            });
        }
        dataGrid.setData(dataList);
        if (!CollectionUtils.isEmpty(dataList)) {
            wrapperData(dataGrid.getData(), templateVO, sqlBO.getSelectFieldList(), false);
            dataGrid.setData(dataList);
            dataGrid.setTotal(Long.parseLong(commonsMapper.selectBySql(sqlBO.getSqlCount()).get(0).values().toArray()[0].toString()));
        }
        return dataGrid;
@@ -1457,17 +1492,27 @@
            }
        });
        if (!CollectionUtils.isEmpty(userIds)) {
            Map<String, User> userVOMap = new HashMap<>();
            for (String userId : userIds) {
                if(!StringUtils.isNumeric(userId)){
                    continue;
                }
                User data = iUserClient.userInfoById(Long.valueOf(userId)).getData();
                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));
//            dataMap.stream().forEach(data -> {
//                String creator = data.getOrDefault("creator", null);
//                if (StringUtils.isNotBlank(creator) && userVOMap.containsKey(creator.toLowerCase(Locale.ROOT))) {
//                    data.put("creator", creator + "(" + userVOMap.get(creator.toLowerCase(Locale.ROOT)).getName() + ")");
//                }
//                String lastmodifier = data.getOrDefault("lastmodifier", null);
//                if (StringUtils.isNotBlank(lastmodifier) && userVOMap.containsKey(lastmodifier.toLowerCase(Locale.ROOT))) {
//                    data.put("lastmodifier", lastmodifier + "(" + userVOMap.get(lastmodifier.toLowerCase(Locale.ROOT)).getName() + ")");
//                }
//            });
            dataMap.stream().forEach(data -> {
                String creator = data.getOrDefault("creator", null);
                if (StringUtils.isNotBlank(creator) && userVOMap.containsKey(creator.toLowerCase(Locale.ROOT))) {
                    data.put("creator", creator + "(" + userVOMap.get(creator.toLowerCase(Locale.ROOT)).getRealName() + ")");
                }
                String lastmodifier = data.getOrDefault("lastmodifier", null);
                if (StringUtils.isNotBlank(lastmodifier) && userVOMap.containsKey(lastmodifier.toLowerCase(Locale.ROOT))) {
                    data.put("lastmodifier", lastmodifier + "(" + userVOMap.get(lastmodifier.toLowerCase(Locale.ROOT)).getRealName() + ")");
                }
            });
        }
    }
@@ -1510,8 +1555,9 @@
        //处理枚举的内容,为了兼容以前的数据,如果数据不能使用枚举转换的话,那还是显示以前的值
        if (!CollectionUtils.isEmpty(enumAttrVOs)) {
            enumAttrVOs.stream().forEach(enumAttrVO -> {
//                String attrId = enumAttrVO.getId().toUpperCase(Locale.ROOT);
                String attrId = enumAttrVO.getId().toLowerCase(Locale.ROOT);
                String oldValue = data.getOrDefault(attrId, null);
                String oldValue = String.valueOf(data.getOrDefault(attrId, null));
                if (StringUtils.isNotBlank(oldValue)) {
                    List<KeyValue> comboxKVs = listComboboxItems(enumAttrVO);
                    String newValue = oldValue;
@@ -1560,9 +1606,11 @@
                    referVO.setValueField(VciQueryWrapperForDO.OID_FIELD);
                    referVO.setTextField("name");
                }
                //表需要改
                //使用传入的业务类型查询表
                R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(referVO.getReferType()));
//                String referTable = VciBaseUtil.getTableName(referVO.getReferType());
                String referTable = "pl_code_wupin";
                String referTable = listR.getData().get(0).getTableName();
//                String referTable = "pl_code_classify";
                String referTableNick = attrVO.getId() + "0";
                String left = " left join " + referTable + " " + referTableNick + " on " + referTableNick + "." + referVO.getValueField() + " =  t." + attrVO.getId();
                joinTableList.put(attrVO.getId(), left);
@@ -1578,12 +1626,20 @@
                selectFieldList.add(referTableNick + "." + showFieldInSource + " as " + referShowField);
            });
        }
        // 待完善
//        Optional.ofNullable(attributeService.getDefaultAttributeVOMap()).orElseGet(() -> new HashMap<>()).keySet().stream().forEach(attrId -> {
//            if (!selectFieldList.contains(attrId) && !"secretgrade".equalsIgnoreCase(attrId)) {
//                selectFieldList.add(attrId);
        R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getDefaultAttrByBtmId(btmType);
//        Optional.ofNullable(allAttributeByBtmId.getData()).orElseGet(allAttributeByBtmId.getData().getAttributes()).stream().forEach(attrId -> {
//            if (!selectFieldList.contains(attrId.getOid()) && !"secretgrade".equalsIgnoreCase(attrId.getOid())) {
//                selectFieldList.add(attrId.getOid());
//            }
//        });
        if(allAttributeByBtmId.getData() != null ){
            for (BtmTypeAttributeVO attribute : allAttributeByBtmId.getData().getAttributes()) {
                if (!selectFieldList.contains(attribute.getId()) && !"secretgrade".equalsIgnoreCase(attribute.getId())) {
                    selectFieldList.add(attribute.getId());
                }
            }
        }
        if (!selectFieldList.contains(CODE_FIELD)) {
            selectFieldList.add(CODE_FIELD);
        }
@@ -1653,7 +1709,10 @@
        }
        //要改,表明获取有问题
//        String tableName = VciBaseUtil.getTableName(btmType);
        String tableName = "pl_code_wupin";
//        String tableName = "pl_code_wupin";
        R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType));
//                String referTable = VciBaseUtil.getTableName(referVO.getReferType());
        String tableName = listR.getData().get(0).getTableName();
        String sql = "select " + selectFieldList.stream().map(s -> (s.contains(".") ? s : ("t." + s))).collect(Collectors.joining(","))
            + " from " + tableName + SPACE + "t" + SPACE
            + joinTableList.values().stream().collect(Collectors.joining(SPACE))
@@ -1786,7 +1845,7 @@
     */
    private String getSqlByValue(String selectKey, String value, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) {
        StringBuilder sql = new StringBuilder();
        // 待完善
        //待完善
//        if (!selectKey.contains(".") && (attrVOMap.containsKey(selectKey.toLowerCase(Locale.ROOT)) || attributeService.isDefaultAttr(selectKey) || selectKey.matches(RegExpConstant.LETTER))) {
//            sql.append("t.");
//        }
@@ -2420,10 +2479,20 @@
        CodeClassifyVO topClassifyVO = classifyService.getTopClassifyVO(templateVO.getCodeclassifyoid());
        String btmId = topClassifyVO.getBtmtypeid();
        //查询数据
        Map<String, String> conditionMap = WebUtil.getOidQuery(oid);
        Map<String, String> conditionMap = new HashMap<>();
        conditionMap.put("t.oid",oid);
        CodeTemplateAttrSqlBO sqlBO = getSqlByTemplateVO(btmId, templateVO, conditionMap, new PageHelper(-1));
        //我们使用和业务类型的来查询
        List<Map> cbos = commonsMapper.selectBySql(sqlBO.getSqlUnPage());
        List<Map> cbosB = commonsMapper.selectBySql(sqlBO.getSqlUnPage());
        List<Map<String,String>> cbos = new ArrayList<>();
        cbosB.stream().forEach(map -> {
            Map<String, String> data = new HashMap<>();
            for (Object o : map.keySet()) {
                data.put(((String) o).toLowerCase(Locale.ROOT), String.valueOf(map.get(o)));
            }
            cbos.add(data);
        });
//        List<ClientBusinessObject> cbos = boService.queryByOnlySql(sqlBO.getSqlUnPage());
        if (CollectionUtils.isEmpty(cbos)) {
            throw new VciBaseException("数据在系统中不存在,是否因为修改过业务类型?");
@@ -2436,7 +2505,7 @@
        wrapperData(dataList, templateVO, sqlBO.getSelectFieldList(), true);
        R<List<Map<String, String>>> result = R.data(Collections.singletonList(cbo));
        //我们要看是否不是升版的,升版的话,需要对比不相等的属性
        String copy = String.valueOf(cbo.get("COPYFROMVERSION"));
        String copy = cbo.get("copyfromversion");
//        if (StringUtils.isBlank(copy)) {
//            copy = cbo.getAttributeValue("copyfromversion");
//        }
@@ -2860,27 +2929,31 @@
        MdmUIInfoVO uiInfoVO = getTableDefineByTemplateVO(getUsedTemplateByClassifyOid(codeClassifyOid));
        uiInfoVO.setLeaf(classifyService.countChildrenByClassifyOid(codeClassifyOid) == 0);
        if (StringUtils.isNotBlank(functionId) && !"~".equalsIgnoreCase(functionId)) {
            List<Menu> buttonVOS = iSysClient.getMenuButtonByType(uiInfoVO.getTemplateVO().getBtmTypeId()).getData();
            //功能按钮服务还未实现,等实现了,在进行调用
            //List<SmOperationVO> operationVOS = operationService.listButtonByFunctionId(functionId);
//            List<SmOperationVO> operationVOS = operationService.listButtonByFunctionId(functionId);
//            if (operationVOS == null) {
//                operationVOS = new ArrayList<>();
//            }
            //查询扩展按钮
//            //查询扩展按钮
//            List<CodeButtonVO> buttonVOS = listButtonInToolbarByClassifyOid(codeClassifyOid);
//            if (!CollectionUtils.isEmpty(buttonVOS)) {
//                for (int i = 0; i < buttonVOS.size(); i++) {
//                    CodeButtonVO buttonVO = buttonVOS.get(i);
//                    SmOperationVO operationVO = new SmOperationVO();
//                    operationVO.setModuleNo(functionId);
//                    operationVO.setUniqueFlag(buttonVO.getId());
//                    operationVO.setName(buttonVO.getName());
//                    operationVO.setAlias(operationVO.getName());
//                    operationVO.setExecuteJs(buttonVO.getExecutejs());
//                    operationVO.setIconCls(buttonVO.getIconcls());
//                    operationVOS.add(operationVO);
//                }
//            }
//            uiInfoVO.setButtons(operationVOS);
            List<SmOperationVO> operationVOS = new ArrayList<>();
            if (!CollectionUtils.isEmpty(buttonVOS)) {
                for (int i = 0; i < buttonVOS.size(); i++) {
                    Menu buttonVO = buttonVOS.get(i);
                    SmOperationVO operationVO = new SmOperationVO();
                    operationVO.setModuleNo(functionId);
                    operationVO.setUniqueFlag(buttonVO.getCode());
                    operationVO.setName(buttonVO.getName());
                    operationVO.setAlias(buttonVO.getAlias());
                    operationVO.setOrderNo(String.valueOf(buttonVO.getSort()));
//                    operationVO.setExecuteJs(buttonVO.getExecuteJs());
//                    operationVO.setIconCls(buttonVO.getIconCls());
                    operationVOS.add(operationVO);
                }
            }
            uiInfoVO.setButtons(operationVOS);
        }
        return uiInfoVO;
    }
@@ -3013,7 +3086,7 @@
        R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(boName));
        String userName = AuthUtil.getUser().getUserName();
        BaseModel bo = new BaseModel();
        bo.setOid(VciBaseUtil.getPk());
//        bo.setOid(VciBaseUtil.getPk());
//        bo.setRevisionid(VciBaseUtil.getPk());
//        bo.setNameoid(VciBaseUtil.getPk());
        bo.setBtmname(boName);
@@ -3038,7 +3111,7 @@
        bo.setLctid(listR.getData().get(0).getLifeCycleId());
//        if(StringUtils.isNotBlank(listR.getData().get(0).getLifeCycleId())){
//            OsLifeCycleVO lifeCycleVO = lifeService.getLifeCycleById(listR.getData().get(0).getLifeCycleId());
            bo.setLcStatus("Editing");
        bo.setLcStatus("Editing");
//        }
        bo.setId("");
        bo.setName("");