ludc
2024-08-15 118211ba511524e94952c896bd508ff9baec46c8
业务类型接口联调调整,菜单查询调整
已修改7个文件
256 ■■■■■ 文件已修改
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/OsBtmTypeDTO.java 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/OsBtmTypeVO.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java 162 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebBtmIOServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/OsScanAnnotationTool.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/RightControlUtil.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/OsBtmTypeDTO.java
@@ -46,16 +46,6 @@
    private String revisionRuleId;
    /**
     * 版本规则的名称
     */
    private String revisionRuleName;
    /**
     * 分隔符
     */
    private String revisionSep;
    /**
     * 是否手动输入版本
     */
    private boolean inputRevisionFlag;
@@ -148,7 +138,7 @@
    /**
     * 添加或者移除的属性信息
     */
    private List<OsBtmTypeLinkAttributesDTO> attributesDTOList;
    private List<OsBtmTypeLinkAttributesDTO> attributes;
    /**
     * 添加或移除的属性
@@ -284,22 +274,6 @@
        this.revisionRuleId = revisionRuleId;
    }
    public String getRevisionRuleName() {
        return revisionRuleName;
    }
    public void setRevisionRuleName(String revisionRuleName) {
        this.revisionRuleName = revisionRuleName;
    }
    public String getRevisionSep() {
        return revisionSep;
    }
    public void setRevisionSep(String revisionSep) {
        this.revisionSep = revisionSep;
    }
    public boolean isInputRevisionFlag() {
        return inputRevisionFlag;
    }
@@ -364,12 +338,12 @@
        this.versionRule = versionRule;
    }
    public List<OsBtmTypeLinkAttributesDTO> getAttributesDTOList() {
        return attributesDTOList;
    public List<OsBtmTypeLinkAttributesDTO> getAttributes() {
        return attributes;
    }
    public void setAttributesDTOList(List<OsBtmTypeLinkAttributesDTO> attributesDTOList) {
        this.attributesDTOList = attributesDTOList;
    public void setAttributes(List<OsBtmTypeLinkAttributesDTO> attributes) {
        this.attributes = attributes;
    }
    public Date getTs() {
@@ -453,8 +427,7 @@
                ", tableName='" + tableName + '\'' +
                ", description='" + description + '\'' +
                ", revisionRuleId='" + revisionRuleId + '\'' +
                ", revisionRuleName='" + revisionRuleName + '\'' +
                ", revisionSep='" + revisionSep + '\'' +
                ", delimiter='" + delimiter + '\'' +
                ", inputRevisionFlag=" + inputRevisionFlag +
                ", abstractFlag=" + abstractFlag +
                ", revisionFlag=" + revisionFlag +
@@ -470,7 +443,7 @@
                ", viewFlag=" + viewFlag +
                ", viewCreateSql='" + viewCreateSql + '\'' +
                ", classFullName='" + classFullName + '\'' +
                ", attributesDTOList=" + attributesDTOList +
                ", attributes=" + attributes +
                ", ts=" + ts +
                '}';
    }
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/OsBtmTypeVO.java
@@ -56,11 +56,6 @@
    private String revisionRuleName;
    /**
     * 分隔符
     */
    private String revisionSep;
    /**
     * 是否手动输入版本
     */
    private boolean inputRevisionFlag;
@@ -123,7 +118,7 @@
    /**
     * 备用生命周期英文名称
     */
    private String subLifeCycleId;
    private String lifeCycleIds;
    /**
     * 备用生命周期中文名称
@@ -268,14 +263,6 @@
    public void setRevisionRuleName(String revisionRuleName) {
        this.revisionRuleName = revisionRuleName;
    }
    public String getRevisionSep() {
        return revisionSep;
    }
    public void setRevisionSep(String revisionSep) {
        this.revisionSep = revisionSep;
    }
    public boolean isInputRevisionFlag() {
@@ -423,12 +410,12 @@
        this.lifeCycleName = lifeCycleName;
    }
    public String getSubLifeCycleId() {
        return subLifeCycleId;
    public String getLifeCycleIds() {
        return lifeCycleIds;
    }
    public void setSubLifeCycleId(String subLifeCycleId) {
        this.subLifeCycleId = subLifeCycleId;
    public void setLifeCycleIds(String lifeCycleIds) {
        this.lifeCycleIds = lifeCycleIds;
    }
    public String getSubLifeCycleName() {
@@ -481,7 +468,7 @@
                ", description='" + description + '\'' +
                ", revisionRuleId='" + revisionRuleId + '\'' +
                ", revisionRuleName='" + revisionRuleName + '\'' +
                ", revisionSep='" + revisionSep + '\'' +
                ", delimiter='" + delimiter + '\'' +
                ", inputRevisionFlag=" + inputRevisionFlag +
                ", revisionRuleVO=" + revisionRuleVO +
                ", abstractFlag=" + abstractFlag +
@@ -493,7 +480,7 @@
                ", lifeCycleId='" + lifeCycleId + '\'' +
                ", lifeCycleName='" + lifeCycleName + '\'' +
                ", versionRule='" + versionRule + '\'' +
                ", subLifeCycleId='" + subLifeCycleId + '\'' +
                ", lifeCycleIds='" + lifeCycleIds + '\'' +
                ", subLifeCycleName='" + subLifeCycleName + '\'' +
                ", viewFlag=" + viewFlag +
                ", viewCreateSql='" + viewCreateSql + '\'' +
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java
@@ -1,5 +1,6 @@
package com.vci.frameworkcore.compatibility.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.vci.corba.common.PLException;
import com.vci.corba.framework.data.FunctionInfo;
@@ -17,10 +18,12 @@
import com.vci.starter.web.constant.QueryOptionConstant;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.pagemodel.*;
import com.vci.starter.web.util.VciBaseUtil;
import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
import com.vci.pagemodel.UIContentVO;
import com.vci.web.service.UIEngineServiceI;
import com.vci.web.service.WebBoServiceI;
import com.vci.web.util.Func;
import com.vci.web.util.PlatformClientUtil;
import com.vci.web.util.RightControlUtil;
import com.vci.web.util.WebUtil;
@@ -51,9 +54,17 @@
    /**
     * 菜单的根节点主键,这个是平台定义的
     */
    private final String ROOT_MENU_Id  = "modelManagmentNode";
    private final String ROOT_MENU_ID  = "modelManagmentNode";
    /**
     * 管理功能模块菜单根节点
     */
    private final String SYSTEMMANAGMENTNODE = "systemManagmentNode";
    /**
     * 操作类型管理菜单根节点
     */
    private final String OPERATENODE = "operateNode";
    /**
     * 使用用户查询
@@ -81,6 +92,7 @@
    @Autowired
    RightControlUtil rightControlUtil;
    /**
     * 查询所有的功能
     *
@@ -199,7 +211,7 @@
                functionVO.setDescription(functionForPlatform1.getPldesc());
            }
        }
        functionVO.setBtmname("function");
        //老的数据里创建人,最后修改人等都没有
        return functionVO;
@@ -216,20 +228,23 @@
    public List<MenuVO> treeCurrentUserMenu(TreeQueryObject treeQueryObject, ResourceControlTypeEnum resourceControlTypeEnum) throws PLException {
        SessionInfo sessionInfo = WebUtil.getCurrentUserSessionInfoNotException();
        String parentId;
        if (rightControlUtil.isAdminOrDeveloperOrRoot(sessionInfo.getUserId())) {
            // 系统菜单
            parentId = "systemManagmentNode" ;
        boolean adminOrDeveloperOrRoot = rightControlUtil.isAdminOrDeveloperOrRoot(sessionInfo.getUserId());
        if (adminOrDeveloperOrRoot) {
            //系统菜单
            parentId = SYSTEMMANAGMENTNODE;
        } else if (rightControlUtil.isThreeAdminCurUser()) {
            parentId = "systemManagmentNode" ;
            //三员返回管理功能模块相关的菜单
            parentId = SYSTEMMANAGMENTNODE;
        } else {
            parentId = "modelManagmentNode" ;
            //普通用户只返回业务功能模块相关的菜单
            parentId = ROOT_MENU_ID;
        }
        RoleRightInfo[] userRoleRights = rightControlUtil.getRoleRightByUserName(sessionInfo.getUserId());
        Map<String, List<FunctionInfo>> map = rightControlUtil.getAllChildrenFunctionsByUserName(
                parentId, sessionInfo.getUserId(), userRoleRights);
        List<MenuVO> functionVOList = new ArrayList<>();
        if(CollectionUtils.isEmpty(map.get(parentId))){
        if(Func.isEmpty(map.get(parentId))) {
            return functionVOList;
        }
        for (FunctionInfo menu : map.get(parentId)) {
@@ -239,9 +254,9 @@
            MenuVO functionVO = new MenuVO();
            functionVO.setId(menu.id);
            functionVO.setSource(menu.image);
//            if(StringUtils.isBlank(menu.resourceB)){
//                continue;
//            }
            //if(StringUtils.isBlank(menu.resourceB)){
            //    continue;
            //}
            functionVO.setPath(menu.resourceB);
            functionVO.setParentId(menu.parentId);
            functionVO.setCode(menu.aliasName);
@@ -249,7 +264,14 @@
            functionVO.setName(menu.name);
            functionVO.getMeta().put("keepAlive",false);
            functionVO.setSort((int) menu.seq);
            functionVO.setChildren(findChildFunctionVO(menu.id, map));
            try {
                functionVO.setChildren(findChildFunctionVO(menu.id, map));
            } catch (PLException e) {
                e.printStackTrace();
                String errorMsg = "菜单查询时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
                logger.error(errorMsg);
                throw new VciBaseException(errorMsg);
            }
            if(functionVO.getChildren().size() > 0){
                functionVO.setHasChildren(true);
            }else {
@@ -257,7 +279,107 @@
            }
            functionVOList.add(functionVO);
        }
        if(adminOrDeveloperOrRoot){
            functionVOList.addAll(this.getSystemMenu());
        }
        return functionVOList.stream().sorted(Comparator.comparing(s -> s.getSort())).collect(Collectors.toList());
    }
    /**
     * 获取首页系统模块配置菜单
     * @return
     */
    private List<MenuVO> getSystemMenu(){
        /*如果是测试账号或者开发账号,处理返回systemManagmentNode和modelManagmentNode以外,
         还需要返回操作类型管理菜单节点(operateNode)和系统配置、系统运行监控节点*/
        List<MenuVO> functionVOList = new ArrayList<>();
        String menuJson = "{\n" +
                "    \"hasChildren\": true,\n" +
                "    \"children\": [\n" +
                "        {\n" +
                "            \"hasChildren\": true,\n" +
                "            \"children\": [],\n" +
                "            \"id\": \"systemManagmentNode\",\n" +
                "            \"name\": \"管理功能模块\",\n" +
                "            \"parentId\": \"VCIBaseTreeNode\",\n" +
                "            \"code\": \"systemManagmentNode\",\n" +
                "            \"alias\": \"system\",\n" +
                "            \"meta\": {\n" +
                "                \"keepAlive\": false\n" +
                "            },\n" +
                "            \"sort\": 2,\n" +
                "            \"soruce\": \"\"\n" +
                "        },\n" +
                "        {\n" +
                "            \"hasChildren\": true,\n" +
                "            \"children\": [],\n" +
                "            \"id\": \"modelManagmentNode\",\n" +
                "            \"name\": \"业务功能模块\",\n" +
                "            \"parentId\": \"VCIBaseTreeNode\",\n" +
                "            \"code\": \"modelManagmentNode\",\n" +
                "            \"alias\": \"model\",\n" +
                "            \"meta\": {\n" +
                "                \"keepAlive\": false\n" +
                "            },\n" +
                "            \"sort\": 3,\n" +
                "            \"soruce\": \"\"\n" +
                "        },\n" +
                "        {\n" +
                "            \"hasChildren\": true,\n" +
                "            \"children\": [],\n" +
                "            \"id\": \"operateNode\",\n" +
                "            \"name\": \"操作类型管理\",\n" +
                "            \"parentId\": \"VCIBaseTreeNode\",\n" +
                "            \"code\": \"operateNode\",\n" +
                "            \"alias\": \"operate\",\n" +
                "            \"meta\": {\n" +
                "                \"keepAlive\": false\n" +
                "            },\n" +
                "            \"sort\": 4,\n" +
                "            \"soruce\": \"\"\n" +
                "        },\n" +
                "        {\n" +
                "            \"hasChildren\": false,\n" +
                "            \"children\": [],\n" +
                "            \"id\": \"sysOptionNode\",\n" +
                "            \"name\": \"系统配置\",\n" +
                "            \"parentId\": \"VCIBaseTreeNode\",\n" +
                "            \"code\": \"sysOptionNode\",\n" +
                "            \"alias\": \"sysOption\",\n" +
                "            \"meta\": {\n" +
                "                \"keepAlive\": false\n" +
                "            },\n" +
                "            \"sort\": 5,\n" +
                "            \"soruce\": \"\"\n" +
                "        },\n" +
                "        {\n" +
                "            \"hasChildren\": false,\n" +
                "            \"children\": [],\n" +
                "            \"id\": \"sysMonitorNode\",\n" +
                "            \"name\": \"系统运行监控\",\n" +
                "            \"parentId\": \"VCIBaseTreeNode\",\n" +
                "            \"code\": \"sysMonitorNode\",\n" +
                "            \"alias\": \"sysMonitor\",\n" +
                "            \"meta\": {\n" +
                "                \"keepAlive\": false\n" +
                "            },\n" +
                "            \"sort\": 5,\n" +
                "            \"soruce\": \"\"\n" +
                "        }\n" +
                "    ],\n" +
                "    \"id\": \"VCIBaseTreeNode\",\n" +
                "    \"name\": \"系统模块配置\",\n" +
                "    \"parentId\": \"\",\n" +
                "    \"code\": \"rootNode\",\n" +
                "    \"alias\": \"root\",\n" +
                "    \"meta\": {\n" +
                "        \"keepAlive\": false\n" +
                "    },\n" +
                "    \"sort\": 1,\n" +
                "    \"soruce\": \"\"\n" +
                "}";
        functionVOList.add(JSON.parseObject(menuJson, MenuVO.class));
        return functionVOList;
    }
    public List<MenuVO> findChildFunctionVO(String parentOid,Map<String, List<FunctionInfo>> map) throws PLException {
@@ -294,7 +416,6 @@
        return functionVOList.stream().sorted(Comparator.comparing(s -> s.getSort())).collect(Collectors.toList());
    }
    @Override
    public UIContentVO getUIContentByBtmTypeAndId(TreeQueryObject treeQueryObject, ResourceControlTypeEnum resourceControlTypeEnum) throws PLException {
        SessionInfo sessionInfo = WebUtil.getCurrentUserSessionInfoNotException();
@@ -310,9 +431,6 @@
        return null;
    }
    /**
     * 获取所有的功能菜单
     *
@@ -324,7 +442,7 @@
    public List<Tree> treeAllMenu(TreeQueryObject treeQueryObject, ResourceControlTypeEnum resourceControlTypeEnum) {
        List<SmFunctionVO> functionVOList = self.selectAllFunction().stream().filter(s -> s.isDisplayFlag() && resourceControlTypeEnum.getValue().equalsIgnoreCase(s.getResourceControlType())).collect(Collectors.toList());
        if(!treeQueryObject.isQueryAllLevel() && StringUtils.isNotBlank(treeQueryObject.getParentOid())){
            functionVOList = functionVOList.stream().filter(s->treeQueryObject.getParentOid().equalsIgnoreCase(s.getParentFunctionId())).collect(Collectors.toList());
            functionVOList = functionVOList.stream().filter(s->treeQueryObject.getParentOid().equalsIgnoreCase(s.getParentFunctionId())).collect(Collectors.toList());
        }
        return dos2Trees(functionVOList.stream().sorted(Comparator.comparing(s -> s.getOrderNum())).collect(Collectors.toList()),treeQueryObject == null?null:treeQueryObject.getParentOid());
    }
@@ -341,7 +459,7 @@
            List<Tree> childList = new ArrayList<>();
            functionVOList.stream().forEach(s -> {
                Tree tree = DO2Tree(s);
                if (tree.getParentId() == null || tree.getParentId().equals(rootId) || ROOT_MENU_Id.equalsIgnoreCase(tree.getParentId())) {
                if (tree.getParentId() == null || tree.getParentId().equals(rootId) || ROOT_MENU_ID.equalsIgnoreCase(tree.getParentId())) {
                    rootList.add(tree);
                } else {
                    childList.add(tree);
@@ -385,7 +503,7 @@
    public List<Tree> treeFunctionByParent(TreeQueryObject treeQueryObject, ResourceControlTypeEnum resourceControlTypeEnum) {
         List<SmFunctionVO> functionVOList = self.selectAllFunction().stream().filter(s -> s.isDisplayFlag() && resourceControlTypeEnum.getValue().equalsIgnoreCase(s.getResourceControlType())).collect(Collectors.toList());
         if(!treeQueryObject.isQueryAllLevel() && StringUtils.isNotBlank(treeQueryObject.getParentOid())){
             functionVOList = functionVOList.stream().filter(s->treeQueryObject.getParentOid().equalsIgnoreCase(s.getParentFunctionId())).collect(Collectors.toList());
             functionVOList = functionVOList.stream().filter(s->treeQueryObject.getParentOid().equalsIgnoreCase(s.getParentFunctionId())).collect(Collectors.toList());
         }
         return dos2Trees(functionVOList,treeQueryObject == null?null:treeQueryObject.getParentOid());
    }
@@ -401,12 +519,12 @@
    public List<Tree> treeCurrentFunctionByParent(TreeQueryObject treeQueryObject, ResourceControlTypeEnum resourceControlTypeEnum) {
        SessionInfo sessionInfo = WebUtil.getCurrentUserSessionInfo();
         List<SmFunctionVO> functionVOList =self.selectAllFunction().stream().filter(s -> s.isDisplayFlag()
                 && resourceControlTypeEnum.getValue().equalsIgnoreCase(s.getResourceControlType())
                 && resourceControlTypeEnum.getValue().equalsIgnoreCase(s.getResourceControlType())
                 && !CollectionUtils.isEmpty(sessionInfo.getFunctionOids())
                 && sessionInfo.getFunctionOids().contains(s.getOid())
                 ).collect(Collectors.toList());
         if(!treeQueryObject.isQueryAllLevel() && StringUtils.isNotBlank(treeQueryObject.getParentOid())){
             functionVOList = functionVOList.stream().filter(s->treeQueryObject.getParentOid().equalsIgnoreCase(s.getParentFunctionId())).collect(Collectors.toList());
             functionVOList = functionVOList.stream().filter(s->treeQueryObject.getParentOid().equalsIgnoreCase(s.getParentFunctionId())).collect(Collectors.toList());
         }
         return dos2Trees(functionVOList,treeQueryObject == null?null:treeQueryObject.getParentOid());
    }
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java
@@ -202,7 +202,7 @@
                //vo.setCreateTime(VciDateUtil.str2Date(String.valueOf(btmItem.createTime),VciDateUtil.DateTimeFormat));
                vo.setCreateTime(Func.parse(btmItem.createTime, ConcurrentDateFormat.of(VciDateUtil.DateTimeFormat)));
                vo.setLastModifyTime( Func.parse(btmItem.modifyTime, ConcurrentDateFormat.of(VciDateUtil.DateTimeFormat)));
                vo.setTs(Func.parse(btmItem.ts, ConcurrentDateFormat.of(VciDateUtil.DateTimeFormat)));
                vo.setTs(Func.parse(btmItem.ts, ConcurrentDateFormat.of(VciDateUtil.DateTimeMillFormat)));
            } catch (Exception e) {
                e.printStackTrace();
            }
@@ -219,11 +219,11 @@
            vo.setInputRevisionFlag(btmItem.revInput);
            vo.setDelimiter(btmItem.delimiter);
            vo.setfName(btmItem.fName);
            if(StringUtils.isNotBlank(vo.getRevisionRuleId()) || vo.isInputRevisionFlag()){
            vo.setVersionRule(String.valueOf(btmItem.verRuleName));
            if(StringUtils.isNotBlank(vo.getRevisionRuleName()) || vo.isInputRevisionFlag()){
                vo.setRevisionFlag(true);
            }
            vo.setVersionRule(String.valueOf(btmItem.verRuleName));
            vo.setSubLifeCycleId(Arrays.stream(btmItem.lifeCycles).collect(Collectors.joining(",")));
            vo.setLifeCycleIds(Arrays.stream(btmItem.lifeCycles).collect(Collectors.joining(",")));
            vo.setApNameArray(btmItem.apNameArray);
            List<OsAttributeVO> attributeVOS = attributeService.listAttrByIds(Arrays.stream(btmItem.apNameArray).collect(Collectors.toList()));
            List<OsBtmTypeAttributeVO> btmTypeAttributeVOS = new ArrayList<>();
@@ -711,12 +711,12 @@
        bizType.description = dto.getDescription();
        bizType.revLevel = dto.getRevLevel();
        bizType.revRuleName = dto.getRevisionRuleName();
        bizType.revRuleName = dto.getRevisionRuleId();
        bizType.revInput = dto.isInputRevisionFlag();
        bizType.delimiter = (dto.getDelimiter() == null ? "" : dto.getDelimiter());
        bizType.verRuleName = Short.parseShort(dto.getRevisionRuleName());
        bizType.verRuleName = Short.parseShort(dto.getVersionRule());
        //bizType.imageName = dto.get;
        //List<String> attrIdList = dto.getAttributesDTOList().stream().map(OsBtmTypeLinkAttributesDTO::getId).collect(Collectors.toList());
@@ -811,9 +811,11 @@
     * @return
     */
    private void checkVersionInfo(OsBtmTypeDTO dto) throws PLException {
        //需要手动输入版本时revisionRuleName不能为空
        if (dto.isInputRevisionFlag() && Func.isBlank(dto.getRevisionRuleName())) {
            throw new PLException("500",new String[]{"版本号规则不能为空"});
        //需要手动输入版本时revisionRuleId不能为空
        if (dto.getRevLevel() == 1 || dto.getRevLevel() == 2) {
            if (Func.isBlank(dto.getRevisionRuleId()) && !dto.isInputRevisionFlag()) {
                throw new PLException("500",new String[]{"版本号规则不能为空"});
            }
        }
    }
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebBtmIOServiceImpl.java
@@ -1195,7 +1195,7 @@
            btmItem.verRuleName = 0;
        }
        //包含的属性的数组
        List<OsBtmTypeLinkAttributesDTO> attributesDTOList = btmTypeDTO.getAttributesDTOList();
        List<OsBtmTypeLinkAttributesDTO> attributesDTOList = btmTypeDTO.getAttributes();
        List<String> attrIdList = new ArrayList<String>();
        if (!CollectionUtils.isEmpty(attributesDTOList)) {
            for (OsBtmTypeLinkAttributesDTO attr : attributesDTOList) {
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/OsScanAnnotationTool.java
@@ -465,7 +465,7 @@
        Collections.addAll(fields,btmTypeClass.getDeclaredFields());
        List<OsBtmTypeLinkAttributesDTO> btmTypeLinkAttributesDTOList = new ArrayList<OsBtmTypeLinkAttributesDTO>();
        scanAttributes(fields,attributeDTOMap,btmTypeLinkAttributesDTOList,processAttributeInfo);
        btmTypeDTO.setAttributesDTOList(btmTypeLinkAttributesDTOList);
        btmTypeDTO.setAttributes(btmTypeLinkAttributesDTOList);
        btmTypeDTOMap.put(btmTypeDTO.getId().toLowerCase().trim(),btmTypeDTO);
    }
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/RightControlUtil.java
@@ -153,7 +153,6 @@
        return roleRightByUserName;
    }
    /**
     * 获取当前用户具有权限的所有模块
     * @param parentId, 父模块id
@@ -231,7 +230,6 @@
    public FunctionInfo[] getFunctionsByParentId(String parentId, String userName) {
        FunctionInfo[] funcObjs =  null;
        try {
            if(isDeveloper(userName)){