From aecacfb404d19749260189ab1d4ee90efc92ae24 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期二, 15 十月 2024 14:46:52 +0800 Subject: [PATCH] UI授权树查询接口优化。添加按角色查询已授权UI接口。 --- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/utility/UIDataFetcher.java | 178 +++++++++++++++++++ Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java | 21 ++ Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java | 7 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java | 13 + Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java | 298 +++++++++++++++++++++----------- 5 files changed, 407 insertions(+), 110 deletions(-) diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java index 3357a53..8aae3cd 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java +++ b/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: 杩欎釜缁熻鎬绘暟鏈夐棶棰橈紝甯﹁繃鍘荤殑鍙傛暟涓嶈兘鍍忎笂闈㈤偅涓猣etchUserInfoByCondition鏌ヨ涓�鏍风粺璁″鍗寸殑鎬绘暟 + //鐢ㄥ畬浜嗘竻绌� + orgDepartmentVOMap = null; + smRoleVOMap = null; + smPwdStrategyVOMap = null; + //TODO: 杩欎釜缁熻鎬绘暟鏈夐棶棰橈紝甯﹁繃鍘荤殑鍙傛暟涓嶈兘鍍忎笂闈㈤偅涓猣etchUserInfoByCondition鏌ヨ涓�鏍风粺璁$殑鍗寸殑鎬绘暟 dataGrid.setTotal( platformClientUtil.getFrameworkService().getUserTotalByCondition( conditionMap.get("name"), diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java index ce4cb2d..9e8b201 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java +++ b/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 diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java index 88b5f2c..e08db6d 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java +++ b/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 diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java index dd92d2d..bbca258 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java +++ b/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("椤甸潰瀹氫箟鍏嬮殕鎴愬姛锛侊紒"); } //鍒濆鍖杝essionInfo灞炴�� - 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瀵硅薄鐨刼id鍜宲arentOId this.modifyButtonOIdsAndCopy(filterTabButton,toOId,ObjectUtility.getNewObjectID36()); @@ -2958,6 +3047,7 @@ // 淇敼褰撳墠鑺傜偣鐨刼Id button.setOId(newOId); + SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); //寮�濮嬩繚瀛樻寜閽拰鍙傛暟 button.setCreateUser(sessionInfo.getUserId()); button.setModifyUser(sessionInfo.getUserId()); diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/utility/UIDataFetcher.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/utility/UIDataFetcher.java new file mode 100644 index 0000000..a3c0088 --- /dev/null +++ b/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 { + + //涓婁笅鏂噈ap + 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(); + } + + /** + * 鍒濆鍖栨墍鏈塙I瀹氫箟淇℃伅 + */ + 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)); + //鍒濆鍖朾utton + //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; + } + + /** + * 鎸夐挳椤哄簭濂芥帓搴廱utton + * @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)); + } + }); + } + +} -- Gitblit v1.9.3