ludc
2024-10-15 aecacfb404d19749260189ab1d4ee90efc92ae24
UI授权树查询接口优化。添加按角色查询已授权UI接口。
已修改4个文件
已添加1个文件
517 ■■■■ 文件已修改
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java 298 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/utility/UIDataFetcher.java 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java
@@ -357,6 +357,7 @@
        }else {
            smRoleVOList = smRoleQueryService.listRoleByUserOid(userInfo.id,null);
        }
        smUserVO.setPkPerson(
                Func.isEmpty(smRoleVOList) ?
                        null:smRoleVOList.stream().map(SmRoleVO::getOid).collect(Collectors.joining(","))
@@ -541,7 +542,11 @@
            smRoleVOMap = smRoleQueryService.batchListRoleByUserOids(idList,null);
            smPwdStrategyVOMap = smPwdStrategyQueryService.batchSmPwdStrategyByUserOids(idList);
            dataGrid.setData(userInfoArr2VO(userInfos));
            //TODO: è¿™ä¸ªç»Ÿè®¡æ€»æ•°æœ‰é—®é¢˜ï¼Œå¸¦è¿‡åŽ»çš„å‚æ•°ä¸èƒ½åƒä¸Šé¢é‚£ä¸ªfetchUserInfoByCondition查询一样统计增却的总数
            //用完了清空
            orgDepartmentVOMap = null;
            smRoleVOMap = null;
            smPwdStrategyVOMap = null;
            //TODO: è¿™ä¸ªç»Ÿè®¡æ€»æ•°æœ‰é—®é¢˜ï¼Œå¸¦è¿‡åŽ»çš„å‚æ•°ä¸èƒ½åƒä¸Šé¢é‚£ä¸ªfetchUserInfoByCondition查询一样统计的却的总数
            dataGrid.setTotal(
                    platformClientUtil.getFrameworkService().getUserTotalByCondition(
                        conditionMap.get("name"),
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java
@@ -607,7 +607,7 @@
    @VciBusinessLog(operateName = "UI授权(树形结构)")
    public BaseResult getUIAuthor(BaseQueryObject baseQueryObject){
        try {
            return BaseResult.dataList( uiManagerService.getUIAuthor(baseQueryObject));
            return BaseResult.dataList(uiManagerService.getUIAuthor(baseQueryObject));
        }catch (Throwable e) {
            e.printStackTrace();
            String exceptionMessage = "UI授权加载出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
@@ -616,6 +616,25 @@
        }
    }
    /**
     * æ ¹æ®è§’色主键获取已授权的信息
     * @param roleId
     * @return
     * @throws PLException
     */
    @GetMapping( "/getRightListByRoleId")
    @VciBusinessLog(operateName = "根据角色主键获取已授权的UI主键集合")
    public BaseResult getRightListByRoleId(String roleId){
        try {
            return BaseResult.dataList(uiManagerService.getRightListByRoleId(roleId));
        }catch (Throwable e) {
            e.printStackTrace();
            String exceptionMessage = "获取已授权信息时错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
    /***
     * @param uiAuthorDTO å‹¾é€‰çš„需要保存的数据对象
     * @return
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java
@@ -7,16 +7,13 @@
import com.vci.corba.portal.data.PLUILayout;
import com.vci.corba.portal.data.PLTabPage;
import com.vci.corba.portal.data.PortalVI;
import com.vci.pagemodel.PLTabButtonVO;
import com.vci.pagemodel.PLUILayoutCloneVO;
import com.vci.pagemodel.UICloneVO;
import com.vci.pagemodel.*;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.pagemodel.BaseQueryObject;
import com.vci.starter.web.pagemodel.BaseResult;
import com.vci.starter.web.pagemodel.DataGrid;
import com.vci.dto.UIAuthorDTO;
import com.vci.starter.web.pagemodel.Tree;
import com.vci.pagemodel.PLDefinationVO;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
@@ -210,6 +207,14 @@
    List<Tree> getUIAuthor(BaseQueryObject baseQueryObject)throws Exception;
    /**
     * æ ¹æ®è§’色主键获取已授权的信息
     * @param roleId
     * @return
     * @throws PLException
     */
    List<RoleRightVO> getRightListByRoleId(String roleId) throws PLException;
    /**
     * UI授权
     * @param uiAuthorDTO
     * @return
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java
@@ -27,6 +27,7 @@
import com.vci.web.service.UIManagerServiceI;
import com.vci.web.util.*;
import com.vci.web.util.BeanUtil;
import com.vci.web.utility.UIDataFetcher;
import org.apache.commons.lang3.StringUtils;
import com.vci.web.util.Func;
import com.vci.web.util.PlatformClientUtil;
@@ -89,9 +90,9 @@
    private final String IMPORTUIKEY = "importUIKey:";
    /**
     * å½“前登录用户的信息
     * ui定义数据引擎
     */
    private SessionInfo sessionInfo = null;
    private UIDataFetcher uiDataFetcher = null;
    /**
     * æŽ’序比较器
@@ -100,16 +101,6 @@
        @Override
        public int compare(PLUILayout o1, PLUILayout o2) {
            return o1.plCode.compareTo(o2.plCode);
        }
    };
    /**
     * æŽ’序比较器
     */
    private Comparator<PLDefinationVO> pageDefinationComparator = new Comparator<PLDefinationVO>() {
        @Override
        public int compare(PLDefinationVO o1, PLDefinationVO o2) {
            return new Integer(o1.getSeq()).compareTo(new Integer(o2.getSeq()));
        }
    };
@@ -162,7 +153,7 @@
            contextList.add("");
        }
        contextList.stream().forEach(code->{
            PLUILayout[]  pluiLayouts= new PLUILayout[0];
            PLUILayout[] pluiLayouts= new PLUILayout[0];
            try {
                pluiLayouts = platformClientUtil.getUIService().getPLUILayoutEntityByTypeAndCode(btemName,code);
            } catch (PLException e) {
@@ -1453,6 +1444,7 @@
     */
    private void saveButtonParams(LinkedHashMap<String, String> buttonParams,String tabButtonOid) throws VciBaseException{
        if(Func.isNotEmpty(buttonParams)) {
            SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
            Iterator<Map.Entry<String, String>> iterator = buttonParams.entrySet().iterator();
            while(iterator.hasNext()){
                Map.Entry<String, String> next = iterator.next();
@@ -1701,17 +1693,17 @@
        if (conditionMap == null) {
            conditionMap = new HashMap<>();
        }
        String roleId = StringUtils.isBlank(conditionMap.get("roleId")) ? "" : conditionMap.get("roleId");
        //String roleId = StringUtils.isBlank(conditionMap.get("roleId")) ? "" : conditionMap.get("roleId");
        String type = StringUtils.isBlank(conditionMap.get("type")) ? "" : conditionMap.get("type");
        String context = StringUtils.isBlank(conditionMap.get("context")) ? "" : conditionMap.get("context");
        //String context = StringUtils.isBlank(conditionMap.get("context")) ? "" : conditionMap.get("context");
        boolean showCheckBox = Boolean.parseBoolean(conditionMap.get("showCheckBox"));
       Map<String,RoleRightVO> roleRightVOMap=new HashMap<>();
        /*Map<String,RoleRightVO> roleRightVOMap=new HashMap<>();
        if(StringUtils.isNotBlank(roleId)){
          String userName= WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
            String userName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
            RoleRightInfo[] rightInfos= platformClientUtil.getFrameworkService().getRoleRightList(roleId,userName);
            List<RoleRightVO>  roleRightVOList=roleRightDOO2VOS(Arrays.asList(rightInfos));
            roleRightVOMap=roleRightVOList.stream().collect(Collectors.toMap(RoleRightVO::getFuncId,roleRightVO ->roleRightVO,(oldValue,newOldValue)->oldValue));
        }
            List<RoleRightVO> roleRightVOList = roleRightDOO2VOS(Arrays.asList(rightInfos));
            roleRightVOMap = roleRightVOList.stream().collect(Collectors.toMap(RoleRightVO::getFuncId,roleRightVO ->roleRightVO,(oldValue,newOldValue)->oldValue));
        }*/
        BizType[] bizTypes=osBtmServiceI.getBizTypes(type);
        List<Tree> treeList=new ArrayList<>();
        Tree rootNode =new Tree("root","功能模块","root");
@@ -1719,23 +1711,47 @@
        rootNode.setShowCheckbox(true);
        rootNode.setExpanded(true);
        List<Tree> childList=new ArrayList<>();
        //long startTime = System.currentTimeMillis();
        uiDataFetcher = new UIDataFetcher();
        for (int i = 0; i < bizTypes.length; i++) {
            Tree bizTypeTree = new Tree(bizTypes[i].oid,bizTypes[i].name,bizTypes[i]);//(btmItems[i].label+" ["+ btmItems[i].name+"]", btmItems[i]);
            bizTypeTree.setLevel(1);
            bizTypeTree.setShowCheckbox(true);
            bizTypeTree.setParentId(rootNode.getOid());
            bizTypeTree.setParentName(rootNode.getText());
            bizTypeTree.setShowCheckbox(true);
            bizTypeTree.setParentBtmName(bizTypes[i].name);
            childList.add(bizTypeTree);
            List<PLUILayout>contextList=getUIContextDataByBtName(bizTypes[i].name,context);
            List<Tree> btmChildList=new ArrayList<>();
            //long startTime1 = System.currentTimeMillis();
            List<PLUILayout> contextList = uiDataFetcher.getContext(bizTypes[i].name);
            //long endTime1 = System.currentTimeMillis();
            //System.out.println("============================================获取UI定义数据引擎耗时:"+((endTime1-startTime1)/1000)+"s");
            List<Tree> btmChildList = new ArrayList<>();
            btmChildList.add(bizTypeTree);
            setChildNode(btmChildList,contextList,roleRightVOMap,showCheckBox);
            setChildNode(btmChildList,contextList/*,roleRightVOMap*/,showCheckBox);
            childList.add(bizTypeTree);
        }
        //long endTime = System.currentTimeMillis();
        //System.out.println("============================================UI定义树计算完毕耗时:"+((endTime-startTime)/1000)+"s");
        rootNode.setChildren(childList);
        treeList.add(rootNode);
        return treeList;
    }
    /**
     * æ ¹æ®è§’色主键获取已授权的信息
     * @param roleId
     * @return
     * @throws PLException
     */
    @Override
    public List<RoleRightVO> getRightListByRoleId(String roleId) throws PLException {
        VciBaseUtil.alertNotNull(roleId,"查询条件角色主键");
        String userName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
        RoleRightInfo[] rightInfos= platformClientUtil.getFrameworkService().getRoleRightList(roleId,userName);
        List<RoleRightVO> roleRightVOList = roleRightDOO2VOS(Arrays.asList(rightInfos));
        return roleRightVOList;
    }
    /***
@@ -2001,22 +2017,21 @@
        });
    }
    /***
    /**
     * éåŽ†å­èŠ‚ç‚¹
     * @param parentTree
     * @param contextList
     * @param roleRightVOMap
     * @param isShowCheckBox
     */
    private void setChildNode(List<Tree> parentTree, List<PLUILayout>contextList,Map<String,RoleRightVO> roleRightVOMap,boolean isShowCheckBox){
        Optional.ofNullable(parentTree).orElseGet(()->new ArrayList<Tree>()).stream().forEach(pTree -> {
            Object funcObj=  pTree.getData();
            List<Tree> chiledTreeList=new ArrayList<>();
    private void setChildNode_old(List<Tree> parentTree, List<PLUILayout>contextList,Map<String,RoleRightVO> roleRightVOMap,boolean isShowCheckBox){
        Optional.ofNullable(parentTree).orElseGet(()->new ArrayList<>()).stream().forEach(pTree -> {
            Object funcObj = pTree.getData();
            List<Tree> chiledTreeList = new ArrayList<>();
            if (funcObj instanceof BizType) {//业务类型
                BizType bizType = (BizType) funcObj;
                if(!CollectionUtil.isEmpty(contextList)) {
                    contextList.stream().forEach(context->{
                        Tree childTree=new Tree(context.plOId,context.plName+"("+context.plCode+")",context);
                        Tree childTree = new Tree(context.plOId,context.plName+"("+context.plCode+")",context);
                        childTree.setParentName(pTree.getText());
                        childTree.setParentBtmName(pTree.getParentBtmName());
                        childTree.setParentId(pTree.getOid());
@@ -2027,19 +2042,13 @@
                    pTree.setChildren(chiledTreeList);
                }
                if(!CollectionUtil.isEmpty(chiledTreeList)) {
                    setChildNode(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox);
                    setChildNode_old(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox);
                }
            }else  if (funcObj instanceof PLUILayout){//UI
                PLUILayout context = (PLUILayout) funcObj;
                PLTabPage[] pages = new PLTabPage[0];
                try {
                    pages = platformClientUtil.getUIService().getPLTabPagesByPageDefinationOId(context.plOId);
                } catch (PLException e) {
                    e.printStackTrace();
                }
                if(pages!=null&&pages.length>0){
                    List<PLTabPage> plTabPageList= Arrays.stream(pages).collect(Collectors.toList());
                    plTabPageList.stream().forEach(plTabPage -> {
                List<PLTabPage> pageList = uiDataFetcher.getTabs(context.plOId);
                if(Func.isNotEmpty(pageList)){
                    pageList.stream().forEach(plTabPage -> {
                        Tree childTree=new Tree(plTabPage.plOId,plTabPage.plName,plTabPage);
                        childTree.setParentName(pTree.getText());
                        childTree.setParentId(pTree.getOid());
@@ -2048,66 +2057,51 @@
                        childTree.setShowCheckbox(isShowCheckBox);
                        chiledTreeList.add(childTree);
                    });
                }
                if(!CollectionUtil.isEmpty(chiledTreeList)) {
                    setChildNode_old(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox);
                }
                pTree.setChildren(chiledTreeList);
            }else if (funcObj instanceof PLTabPage) {//上下文
                PLTabPage plTabPage = (PLTabPage) funcObj;
                List<PLPageDefination> pageDefinationList = uiDataFetcher.getComopnent(plTabPage.plOId);
                if(Func.isNotEmpty(pageDefinationList)){
                    pageDefinationList.stream().forEach(plPageDefination -> {
                        Tree childTree=new Tree(plPageDefination.plOId,plPageDefination.name,plPageDefination);
                        childTree.setParentName(pTree.getText());
                        childTree.setParentId(pTree.getOid());
                        childTree.setParentBtmName(pTree.getParentBtmName());
                        childTree.setLevel(pTree.getLevel()+1);
                        childTree.setShowCheckbox(isShowCheckBox);
                        chiledTreeList.add(childTree);
                    });
                    pTree.setChildren(chiledTreeList);
                }
                if(!CollectionUtil.isEmpty(chiledTreeList)) {
                    setChildNode(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox);
                    setChildNode_old(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox);
                }
            }else if (funcObj instanceof PLTabPage) {//上下文
                PLTabPage plTabPage = (PLTabPage) funcObj;
                List<PLPageDefination>plPageDefinationList=new ArrayList<>();
                try {
                    PLPageDefination[] pLPageDefinations = platformClientUtil.getUIService().getPLPageDefinationsByPageContextOId(plTabPage.plOId);
                    if(pLPageDefinations!=null&&pLPageDefinations.length>0){
                        plPageDefinationList= Arrays.stream(pLPageDefinations).collect(Collectors.toList());
                        plPageDefinationList.stream().forEach(plPageDefination -> {
                            Tree childTree=new Tree(plPageDefination.plOId,plPageDefination.name,plPageDefination);
                            childTree.setParentName(pTree.getText());
                            childTree.setParentId(pTree.getOid());
                            childTree.setParentBtmName(pTree.getParentBtmName());
                            childTree.setLevel(pTree.getLevel()+1);
                            childTree.setShowCheckbox(isShowCheckBox);
                            chiledTreeList.add(childTree);
                        });
                        pTree.setChildren(chiledTreeList);
                    }
                    if(!CollectionUtil.isEmpty(chiledTreeList)) {
                        setChildNode(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox);
                    }
                } catch (PLException e) {
                    e.printStackTrace();
                }
            }else if (funcObj instanceof PLPageDefination) {//
            }else if (funcObj instanceof PLPageDefination) {
                PLPageDefination plPageDefination = (PLPageDefination) funcObj;
                try {
                    List<PLTabButton>plTabButtonList=new ArrayList<>();
                    PLTabButton[] pLTabButtons = platformClientUtil.getUIService().getPLTabButtonsByTableOId(plPageDefination.plOId);
                    if(pLTabButtons!=null&&pLTabButtons.length>0){
                        plTabButtonList= Arrays.stream(pLTabButtons).collect(Collectors.toList());
                        plTabButtonList.stream().forEach(plTabButton -> {
                            Tree childTree=new Tree(plTabButton.plOId,plTabButton.plLabel,plTabButton);
                            childTree.setParentName(pTree.getText());
                            childTree.setParentId(pTree.getOid());
                            childTree.setParentBtmName(pTree.getParentBtmName());
                            childTree.setLevel(pTree.getLevel()+1);
                            childTree.setShowCheckbox(isShowCheckBox);
                            childTree.setLeaf(true);
                            chiledTreeList.add(childTree);
                        });
                        pTree.setChildren(chiledTreeList);
                    }
                    if(!CollectionUtil.isEmpty(chiledTreeList)) {
                        setChildNode(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox);
                    }
                } catch (PLException e) {
                    e.printStackTrace();
                List<PLTabButton> pLTabButtonList = uiDataFetcher.getButtons(plPageDefination.plOId);
                if(Func.isNotEmpty(pLTabButtonList)){
                    pLTabButtonList.stream().forEach(plTabButton -> {
                        Tree childTree=new Tree(plTabButton.plOId,plTabButton.plLabel,plTabButton);
                        childTree.setParentName(pTree.getText());
                        childTree.setParentId(pTree.getOid());
                        childTree.setParentBtmName(pTree.getParentBtmName());
                        childTree.setLevel(pTree.getLevel()+1);
                        childTree.setShowCheckbox(isShowCheckBox);
                        childTree.setLeaf(true);
                        chiledTreeList.add(childTree);
                    });
                    pTree.setChildren(chiledTreeList);
                }
                if(!CollectionUtil.isEmpty(chiledTreeList)) {
                    setChildNode_old(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox);
                }
            }else if (funcObj instanceof PLTabButton) {//按钮
                PLTabButton plTabButton= (PLTabButton) funcObj;
                String id =plTabButton.plTableOId;
                PLTabButton plTabButton = (PLTabButton) funcObj;
                String id = plTabButton.plTableOId;
                if(roleRightVOMap.containsKey(id)){
                    RoleRightVO roleRightVO = roleRightVOMap.get(id);
                    Long rightValue =  roleRightVO.getRightValue();
@@ -2122,6 +2116,107 @@
                    pTree.setChecked(false);
                }
            }
        });
    }
    /**
     * éåŽ†å­èŠ‚ç‚¹
     * @param parentTree
     * @param contextList
     * @param isShowCheckBox
     */
    private void setChildNode(List<Tree> parentTree, List<PLUILayout>contextList, boolean isShowCheckBox){
        Optional.ofNullable(parentTree).orElseGet(()->new ArrayList<>()).stream().forEach(pTree -> {
            Object funcObj = pTree.getData();
            List<Tree> chiledTreeList = new ArrayList<>();
            if (funcObj instanceof BizType) {//业务类型
                if(!CollectionUtil.isEmpty(contextList)) {
                    contextList.stream().forEach(context->{
                        Tree childTree = new Tree(context.plOId,context.plName+"("+context.plCode+")",context);
                        childTree.setParentName(pTree.getText());
                        childTree.setParentBtmName(pTree.getParentBtmName());
                        childTree.setParentId(pTree.getOid());
                        childTree.setLevel(pTree.getLevel()+1);
                        childTree.setShowCheckbox(isShowCheckBox);
                        chiledTreeList.add(childTree);
                    });
                    pTree.setChildren(chiledTreeList);
                }
                if(!CollectionUtil.isEmpty(chiledTreeList)) {
                    setChildNode(chiledTreeList, contextList, isShowCheckBox);
                }
            }else  if (funcObj instanceof PLUILayout){//UI
                PLUILayout context = (PLUILayout) funcObj;
                List<PLTabPage> pageList = uiDataFetcher.getTabs(context.plOId);
                if(Func.isNotEmpty(pageList)){
                    pageList.stream().forEach(plTabPage -> {
                        Tree childTree=new Tree(plTabPage.plOId,plTabPage.plName,plTabPage);
                        childTree.setParentName(pTree.getText());
                        childTree.setParentId(pTree.getOid());
                        childTree.setParentBtmName(pTree.getParentBtmName());
                        childTree.setLevel(pTree.getLevel()+1);
                        childTree.setShowCheckbox(isShowCheckBox);
                        chiledTreeList.add(childTree);
                    });
                }
                if(!CollectionUtil.isEmpty(chiledTreeList)) {
                    setChildNode(chiledTreeList, contextList, isShowCheckBox);
                }
                pTree.setChildren(chiledTreeList);
            }else if (funcObj instanceof PLTabPage) {//上下文
                PLTabPage plTabPage = (PLTabPage) funcObj;
                List<PLPageDefination> pageDefinationList = uiDataFetcher.getComopnent(plTabPage.plOId);
                if(Func.isNotEmpty(pageDefinationList)){
                    pageDefinationList.stream().forEach(plPageDefination -> {
                        Tree childTree=new Tree(plPageDefination.plOId,plPageDefination.name,plPageDefination);
                        childTree.setParentName(pTree.getText());
                        childTree.setParentId(pTree.getOid());
                        childTree.setParentBtmName(pTree.getParentBtmName());
                        childTree.setLevel(pTree.getLevel()+1);
                        childTree.setShowCheckbox(isShowCheckBox);
                        chiledTreeList.add(childTree);
                    });
                    pTree.setChildren(chiledTreeList);
                }
                if(!CollectionUtil.isEmpty(chiledTreeList)) {
                    setChildNode(chiledTreeList, contextList, isShowCheckBox);
                }
            }else if (funcObj instanceof PLPageDefination) {
                PLPageDefination plPageDefination = (PLPageDefination) funcObj;
                List<PLTabButton> pLTabButtonList = uiDataFetcher.getButtons(plPageDefination.plOId);
                if(Func.isNotEmpty(pLTabButtonList)){
                    pLTabButtonList.stream().forEach(plTabButton -> {
                        Tree childTree=new Tree(plTabButton.plOId,plTabButton.plLabel,plTabButton);
                        childTree.setParentName(pTree.getText());
                        childTree.setParentId(pTree.getOid());
                        childTree.setParentBtmName(pTree.getParentBtmName());
                        childTree.setLevel(pTree.getLevel()+1);
                        childTree.setShowCheckbox(isShowCheckBox);
                        childTree.setLeaf(true);
                        chiledTreeList.add(childTree);
                    });
                    pTree.setChildren(chiledTreeList);
                }
                if(!CollectionUtil.isEmpty(chiledTreeList)) {
                    setChildNode(chiledTreeList, contextList, isShowCheckBox);
                }
            }/*else if (funcObj instanceof PLTabButton) {//按钮
                PLTabButton plTabButton = (PLTabButton) funcObj;
                String id = plTabButton.plTableOId;
                if(roleRightVOMap.containsKey(id)){
                    RoleRightVO roleRightVO = roleRightVOMap.get(id);
                    Long rightValue =  roleRightVO.getRightValue();
                    int nodeValue = plTabButton.plSeq;
                    if (nodeValue >= 0 && nodeValue <= 63) {
                        long preValue = (rightValue >> nodeValue) & 1;
                        if (preValue == 1) {
                            pTree.setChecked(true);
                        }
                    }
                }else{
                    pTree.setChecked(false);
                }
            }*/
        });
    }
@@ -2759,9 +2854,7 @@
        tabPage.plName = copyObjName;
        tabPage.plCode = copyObjCode;
        tabPage.plSeq = Short.parseShort(copyObjSeq);
        if(Func.isEmpty(sessionInfo)){
            sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
        }
        SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
        tabPage.plCreateUser = sessionInfo.getUserId();
        tabPage.plModifyUser = sessionInfo.getUserId();
        long currentTimeMillis = System.currentTimeMillis();
@@ -2888,9 +2981,7 @@
            return BaseResult.success("页面定义克隆成功!!");
        }
        //初始化sessionInfo属性
        if(Func.isEmpty(sessionInfo)){
            sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
        }
        SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
        //循环克隆按钮(同时会对按钮的父子级关系和按钮下的参数进行保存)
        tabButtonVOS.stream().forEach(buttonVO->{
            try {
@@ -2934,9 +3025,7 @@
        if(Func.isEmpty(filterTabButton)){
            return BaseResult.fail("根据源对象主键未查询到源对象,请刷新后重试!!");
        }
        if(Func.isEmpty(sessionInfo)){
            sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
        }
        SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
        //改变button对象的oid和parentOId
        this.modifyButtonOIdsAndCopy(filterTabButton,toOId,ObjectUtility.getNewObjectID36());
@@ -2958,6 +3047,7 @@
        // ä¿®æ”¹å½“前节点的oId
        button.setOId(newOId);
        SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
        //开始保存按钮和参数
        button.setCreateUser(sessionInfo.getUserId());
        button.setModifyUser(sessionInfo.getUserId());
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/utility/UIDataFetcher.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,178 @@
package com.vci.web.utility;
import com.vci.corba.common.PLException;
import com.vci.corba.portal.data.PLPageDefination;
import com.vci.corba.portal.data.PLTabButton;
import com.vci.corba.portal.data.PLTabPage;
import com.vci.corba.portal.data.PLUILayout;
import com.vci.web.util.UITools;
import java.util.*;
import java.util.stream.Collectors;
/**
 * @author ludc
 * @date 2024/10/15 10:32
 */
public class UIDataFetcher {
    //上下文map
    private Map<String, List<PLUILayout>> contextMap = new HashMap<String, List<PLUILayout>>();
    //tab页签map
    private Map<String, List<PLTabPage>> tabMap = new HashMap<String, List<PLTabPage>>();
    //组件map
    private Map<String, List<PLPageDefination>> defMap = new HashMap<String, List<PLPageDefination>>();
    //按钮map
    private Map<String, List<PLTabButton>> buttonMap = new HashMap<String, List<PLTabButton>>();
    public UIDataFetcher() {
        initUIDefination();
    }
    public static void main(String[] args) {
        new UIDataFetcher();
    }
    /**
     * åˆå§‹åŒ–所有UI定义信息
     */
    private void initUIDefination() {
        try {
            //初始化所有的上下文
            //long s = System.currentTimeMillis();
            PLUILayout[] allContext = UITools.getService().getAllPLUILayouts();
            //long e = System.currentTimeMillis();
            //System.out.println(allContext.length + " 1: " + (e - s));
            //s = System.currentTimeMillis();
            List<PLUILayout> contextList = null;
            for (PLUILayout context : allContext) {
                if (contextMap.get(context.plRelatedType) == null) {
                    contextList = new ArrayList<PLUILayout>();
                    contextMap.put(context.plRelatedType, contextList);
                } else {
                    contextList = contextMap.get(context.plRelatedType);
                }
                contextList.add(context);
            }
            //e = System.currentTimeMillis();
            //System.out.println("2: " + (e - s));
            //初始化所有的页签
            //s = System.currentTimeMillis();
            PLTabPage[] allTabs = UITools.getService().getAllPLTabPages();
            //e = System.currentTimeMillis();
            //System.out.println(allTabs.length + " 3: " + (e - s));
            //s = System.currentTimeMillis();
            List<PLTabPage> tabList = null;
            for (PLTabPage tab : allTabs) {
                if (tabMap.get(tab.plContextOId) == null) {
                    tabList = new ArrayList<PLTabPage>();
                    tabMap.put(tab.plContextOId, tabList);
                } else {
                    tabList = tabMap.get(tab.plContextOId);
                }
                tabList.add(tab);
            }
            //e = System.currentTimeMillis();
            //System.out.println("4: " + (e - s));
            //s = System.currentTimeMillis();
            //初始化组建定义
            PLPageDefination[] allDefinations = UITools.getService().getAllPLPageDefinationsWithNoConf();
            //e = System.currentTimeMillis();
            //System.out.println(allDefinations.length + " 5: " + (e - s));
            //s = System.currentTimeMillis();
            List<PLPageDefination> defList = null;
            for (PLPageDefination def : allDefinations) {
                if (defMap.get(def.plTabPageOId) == null) {
                    defList = new ArrayList<PLPageDefination>();
                    defMap.put(def.plTabPageOId, defList);
                } else {
                    defList = defMap.get(def.plTabPageOId);
                }
                defList.add(def);
            }
            //e = System.currentTimeMillis();
            //System.out.println("6: " + (e - s));
            //初始化button
            //s = System.currentTimeMillis();
            PLTabButton[] allButtons = UITools.getService().getAllPLTabButtons();
            //e = System.currentTimeMillis();
            //System.out.println(allButtons.length + " 7: " + (e - s));
            //s = System.currentTimeMillis();
            List<PLTabButton> allButtonList = Arrays.stream(allButtons).filter(item -> item.show.equals("0")).collect(Collectors.toList());
            List<PLTabButton> buttonList = null;
            for (PLTabButton button : allButtonList) {
                if (buttonMap.get(button.plTableOId) == null) {
                    buttonList = new ArrayList<PLTabButton>();
                    buttonMap.put(button.plTableOId, buttonList);
                } else {
                    buttonList = buttonMap.get(button.plTableOId);
                }
                buttonList.add(button);
            }
            //e = System.currentTimeMillis();
            //System.out.println("8: " + (e - s));
        } catch (PLException e) {
            e.printStackTrace();
        }
    }
    /**
     * èŽ·å–ä¸šåŠ¡ç±»åž‹ä¸‹çš„ä¸Šä¸‹æ–‡ä¿¡æ¯
     * @param btmType
     * @return
     */
    public List<PLUILayout> getContext(String btmType) {
        return contextMap.get(btmType);
    }
    /**
     * èŽ·å–ä¸Šä¸‹æ–‡ä»¶ä¸‹çš„tab页签信息
     * @param contextId
     * @return
     */
    public List<PLTabPage> getTabs(String contextId) {
        return tabMap.get(contextId);
    }
    /**
     * èŽ·å–tab页签下的组件信息
     * @param tabId
     * @return
     */
    public List<PLPageDefination> getComopnent(String tabId) {
        return defMap.get(tabId);
    }
    /**
     * èŽ·å–ç»„ä»¶ä¸‹çš„æŒ‰é’®ä¿¡æ¯
     * @param componentId
     * @return
     */
    public List<PLTabButton> getButtons(String componentId) {
        List<PLTabButton> buttons = this.buttonMap.get(componentId);
        if (buttons != null) {
            sort(buttons);
        }
        return buttons;
    }
    /**
     * æŒ‰é’®é¡ºåºå¥½æŽ’序button
     * @param buttons
     */
    private void sort(List<PLTabButton> buttons) {
        Collections.sort(buttons, new Comparator<PLTabButton>(){
            @Override
            public int compare(PLTabButton o1, PLTabButton o2) {
                return new Integer(o1.plSeq).compareTo(new Integer(o2.plSeq));
            }
        });
    }
}