From 7b3d5fb08fdbd2ce574c3b9ab666c8c7082be728 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期五, 06 九月 2024 15:38:35 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java | 587 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 551 insertions(+), 36 deletions(-) diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java index 4fad0ab..daa7f5c 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java @@ -1,29 +1,38 @@ package com.vci.frameworkcore.compatibility.impl; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.JSONReader; +import com.vci.client.ClientSession; +import com.vci.client.common.objects.RoleObject; +import com.vci.common.exception.VciException; +import com.vci.common.locale.LocaleDisplay; import com.vci.corba.common.PLException; -import com.vci.corba.framework.data.FunctionInfo; -import com.vci.corba.framework.data.RoleRightInfo; +import com.vci.corba.framework.data.*; import com.vci.corba.omd.data.BusinessObject; import com.vci.corba.portal.data.PLUILayout; import com.vci.frameworkcore.compatibility.ISmFunctionQueryService; import com.vci.frameworkcore.enumpck.ResourceControlTypeEnum; -import com.vci.frameworkcore.model.SmFunctionForPlatform1; -import com.vci.frameworkcore.model.SmRoleForPlatform1; -import com.vci.frameworkcore.pagemodel.MenuVO; -import com.vci.frameworkcore.pagemodel.SmFunctionVO; +import com.vci.model.SmFunctionForPlatform1; +import com.vci.model.SmRoleForPlatform1; +import com.vci.pagemodel.MenuVO; +import com.vci.pagemodel.SmFunctionVO; import com.vci.omd.utils.ObjectTool; 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.web.pageModel.UIContentVO; +import com.vci.pagemodel.UIContentVO; +import com.vci.web.properties.JsonConfigReader; 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; import org.apache.commons.lang3.StringUtils; +import org.apache.el.stream.Stream; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -50,9 +59,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"; /** * 浣跨敤鐢ㄦ埛鏌ヨ @@ -80,6 +97,7 @@ @Autowired RightControlUtil rightControlUtil; + /** * 鏌ヨ鎵�鏈夌殑鍔熻兘 * @@ -158,7 +176,7 @@ private SmFunctionVO functionForPlatform1ToFunctionVO(SmFunctionForPlatform1 functionForPlatform1){ SmFunctionVO functionVO = new SmFunctionVO(); functionVO.setOid(functionForPlatform1.getPloid()); - functionVO.setId(String.valueOf(functionForPlatform1.getPlmoduleno())); + //functionVO.setId(String.valueOf(functionForPlatform1.getPlmoduleno())); functionVO.setName(functionForPlatform1.getPlname()); functionVO.setLogName(functionForPlatform1.getPlaliasname()); if(StringUtils.isNotBlank(functionForPlatform1.getPlresourceb())){ @@ -198,7 +216,7 @@ functionVO.setDescription(functionForPlatform1.getPldesc()); } } - + functionVO.setBtmname("function"); //鑰佺殑鏁版嵁閲屽垱寤轰汉锛屾渶鍚庝慨鏀逛汉绛夐兘娌℃湁 return functionVO; @@ -215,19 +233,25 @@ 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(Func.isEmpty(map.get(parentId))) { + return functionVOList; + } for (FunctionInfo menu : map.get(parentId)) { if(!menu.isValid){ continue; @@ -235,9 +259,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); @@ -245,7 +269,14 @@ functionVO.setName(menu.name); functionVO.getMeta().put("keepAlive",false); functionVO.setSort((int) menu.seq); - functionVO.setChildren(findChildFunctionVO(menu.id)); + 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 { @@ -253,12 +284,202 @@ } functionVOList.add(functionVO); } + //濡傛灉鏄紑鍙戞垨鑰呮祴璇曠敤鎴凤紝闇�鍝熻幏鍙栫郴缁熸ā鍧楅厤缃彍鍗� + if(adminOrDeveloperOrRoot){ + //鑾峰彇棣栭〉绯荤粺妯″潡閰嶇疆鑿滃崟 + MenuVO menuVO = JsonConfigReader.getSysModuleConf().getSysModuleNode(); + if(Func.isNotEmpty(menuVO)){ + functionVOList.add(menuVO); + } + } return functionVOList.stream().sorted(Comparator.comparing(s -> s.getSort())).collect(Collectors.toList()); } - public List<MenuVO> findChildFunctionVO(String parentOid) throws PLException { - FunctionInfo[] menus = platformClientUtil.getFrameworkService().getModuleListByParentId(parentOid, true); + /** + * 閫氳繃妯″潡ID鑾峰彇瀛愮骇鍒楄〃 + * @param parentId + * @param modeType 妯″潡绫诲瀷 + * @param isAll 鏄惁鍖呮嫭鏃犳晥鐨勬ā鍧楋紝true鍒欏寘鎷� + * @return + * @throws VciBaseException + */ + @Override + public List<MenuVO> getSysModelTreeMenuByPID(String parentId,String modeType,boolean isAll) throws VciBaseException{ + List<MenuVO> menuVOList = new ArrayList<>(); + if(Func.isBlank(parentId)){ + return menuVOList; + } + boolean isFunctionObject = Func.isNotBlank(modeType) && modeType.equalsIgnoreCase("FunctionObject"); + if(parentId.equals("systemManagmentNode") || parentId.equals("modelManagmentNode") || isFunctionObject){ + int childType = this.checkChildObject(parentId); + if(isFunctionObject){ + try { + /**鍒ゆ柇璇ユā鍧椾笅瀛愬璞℃槸妯″潡杩樻槸鎿嶄綔锛�0琛ㄧず鏃犲瓙鑺傜偣锛�1琛ㄧず鏄ā鍧楋紝2琛ㄧず鏄搷浣�**/ + if(childType == 2){ + try{ + FuncOperationInfo[] infos = platformClientUtil.getFrameworkService().getFuncOperationByModule(parentId, "", false); + if(Func.isNotEmpty(infos.length)){ + childType = this.checkChildObject(infos[0].id); //閮芥槸鍚屼竴灞傛墍浠ュ彇绗竴涓嵆鍙煡璇㈡槸浠�涔堢被鍨� + for(int i = 0;i < infos.length ;i++){ + FuncOperationInfo info = infos[i]; + MenuVO menuVO = new MenuVO(); + menuVO.setChildType(childType); + menuVO.setId(info.id); + menuVO.setFuncId(info.funcId); + menuVO.setCode(info.operIndentify); + menuVO.setOperId(info.operId); + menuVO.setName(info.operName); + menuVO.setAlias(info.operAlias); + menuVO.setRemark(info.operDesc); + menuVO.setSort((int) info.number); + menuVO.setModeType("FunctionObject"); + menuVO.setIsValid(info.isValid); + menuVO.setHasChildren(false); + menuVOList.add(menuVO); + } + } + }catch (PLException e) { + e.printStackTrace(); + throw new VciBaseException(String.valueOf(e.code), e.messages); + } + }else if(childType == 1){ + try{ + FunctionInfo[] funcInfos = platformClientUtil.getFrameworkService().getModuleListByParentId(parentId, isAll); + if(Func.isNotEmpty(funcInfos.length)){ + childType = this.checkChildObject(funcInfos[0].id); //閮芥槸鍚屼竴灞傛墍浠ュ彇绗竴涓嵆鍙煡璇㈡槸浠�涔堢被鍨� + for(int i = 0;i < funcInfos.length; i++){ + FunctionInfo funcInfo = funcInfos[i]; + MenuVO menuVO = this.functionInfoToMenuVO(funcInfo); + menuVO.setChildType(childType); + menuVO.setModeType("FunctionObject"); + menuVOList.add(menuVO); + } + } + }catch (PLException e) { + e.printStackTrace(); + throw new VciBaseException(String.valueOf(e.code),e.messages); + } + } + } catch (Exception e) { + e.printStackTrace(); + throw new VciBaseException("妯″潡鏌ヨ鏃跺嚭鐜伴敊璇紝鍘熷洜锛�"+VciBaseUtil.getExceptionMessage(e)); + } + }else{ + try{ + MenuVO parentNode = null; + //灏嗚繑鍥炵殑鑺傜偣澶栧眰濂椾笂褰撳墠鐖惰妭鐐� + if("systemManagmentNode".equals(parentId)){ + parentNode = JsonConfigReader.getSysModuleConf().getSystemManagmentNode(); + }else if("modelManagmentNode".equals(parentId)){ + parentNode = JsonConfigReader.getSysModuleConf().getModelManagmentNode(); + } + //濡傛灉鏌ヨ鐨勬槸绗竴灞傝妭鐐瑰氨闇�瑕佺洿鎺ヨ繑鍥瀞ystemManagmentNode鎴杕odelManagmentNode鑺傜偣 + if(Func.isNotBlank(modeType) && modeType.equals("firstNode")){ + menuVOList.add(parentNode); + return menuVOList; + } + //鏌ヨ鐨勪笁绾ц妭鐐� + FunctionInfo[] funcInfos = platformClientUtil.getFrameworkService().getModuleListByParentId(parentId, isAll); + for(int i = 0;i < funcInfos.length; i++){ + FunctionInfo funcInfo = funcInfos[i]; + MenuVO menuVO = this.functionInfoToMenuVO(funcInfo); + menuVO.setModeType("FunctionObject"); + menuVO.setChildType(childType); + menuVOList.add(menuVO); + } + return menuVOList; + }catch (PLException e) { + e.printStackTrace(); + throw new VciBaseException(String.valueOf(e.code),e.messages); + } + } + }else if(parentId.equals("operateNode")){ + //鍔犺浇鎵�鏈夋搷浣� + try{ + //灏嗚繑鍥炵殑鑺傜偣澶栧眰濂椾笂褰撳墠鐖惰妭鐐� + MenuVO parentNode = JsonConfigReader.getSysModuleConf().getOperateNode(); + //濡傛灉鏌ヨ鐨勬槸绗竴灞傝妭鐐瑰氨闇�瑕佺洿鎺ヨ繑鍥瀞ysOptionNode鑺傜偣 + if(Func.isNotBlank(modeType) && modeType.equals("firstNode")){ + menuVOList.add(parentNode); + return menuVOList; + } + OperateInfo[] operateInfos = platformClientUtil.getFrameworkService().getOperateTreeList(parentId); + for(int i = 0; i < operateInfos.length;i++ ){ + OperateInfo operateInfo = operateInfos[i]; + MenuVO menuVO = new MenuVO(); + menuVO.setId(operateInfo.id); + menuVO.setName(operateInfo.name); + menuVO.setCode(operateInfo.identify); + menuVO.setAlias(operateInfo.alias); + menuVO.setCategory(2); + menuVO.setChildType(0); + menuVO.setRemark(operateInfo.desc); + menuVO.getMeta().put("keepAlive",false); + menuVO.setSort((int) operateInfo.seq); + menuVO.setModeType("operateObject"); + menuVO.setHasChildren(false); + menuVOList.add(menuVO); + } + }catch (PLException e) { + e.printStackTrace(); + throw new VciBaseException(String.valueOf(e.code),new String[]{VciBaseUtil.getExceptionMessage(e)}); + } + } + return menuVOList.stream().sorted(Comparator.comparing(s -> s.getSort())).collect(Collectors.toList()); + } + + /** + * functionInfo杞琕O瀵硅薄 + * @param funcInfo + * @return + */ + private MenuVO functionInfoToMenuVO(FunctionInfo funcInfo){ + MenuVO menuVO = new MenuVO(); + menuVO.setId(funcInfo.id); + menuVO.setValid(funcInfo.isValid); + menuVO.setSource(funcInfo.image); + menuVO.setPathC(funcInfo.resourceC); + menuVO.setResourceDotNet(funcInfo.resourceDotNet); + menuVO.setResourceMobile(funcInfo.resourceMobile); + menuVO.setPath(funcInfo.resourceB); + menuVO.setParentId(funcInfo.parentId); + menuVO.setCode(funcInfo.aliasName); + menuVO.setAlias(funcInfo.aliasName); + menuVO.setName(funcInfo.name); + menuVO.getMeta().put("keepAlive",false); + menuVO.setSort((int) funcInfo.seq); + if(this.checkChildObject(menuVO.getId()) == 0){ + menuVO.setHasChildren(false); + }else{ + menuVO.setHasChildren(true); + } + return menuVO; + } + + /** + * 閫氳繃妯″潡ID妫�鏌ヨ妯″潡瀛愮骇瀵硅薄鏄ā鍧楄繕鏄搷浣� + * @param moduleId + * @return 0琛ㄧず娌℃湁妯″潡涔熸病鏈夋搷浣滐紝1琛ㄧず鏈夋ā鍧楋紝2琛ㄧず鏈夋搷浣� + * @throws VciException + */ + @Override + public int checkChildObject(String moduleId) throws VciBaseException { + long res = 0; + try{//20D63A69-C6BC-8519-8B2B-E5ACFEA62394 + res = platformClientUtil.getFrameworkService().checkChildObject(moduleId); + }catch (PLException e) { + e.printStackTrace(); + throw new VciBaseException(String.valueOf(e.code),e.messages); + } + return (int)res; + } + + public List<MenuVO> findChildFunctionVO(String parentOid,Map<String, List<FunctionInfo>> map) throws PLException { + List<FunctionInfo> menus = map.get(parentOid); List<MenuVO> functionVOList = new ArrayList<>(); + if(menus == null){ + return functionVOList; + } for (FunctionInfo menu : menus) { if(!menu.isValid){ continue; @@ -266,9 +487,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.setCode(menu.aliasName); functionVO.setAlias(menu.aliasName); @@ -276,7 +497,7 @@ functionVO.setName(menu.name); functionVO.getMeta().put("keepAlive",false); functionVO.setSort((int) menu.seq); - functionVO.setChildren(findChildFunctionVO(menu.id)); + functionVO.setChildren(findChildFunctionVO(menu.id,map)); if(functionVO.getChildren().size() > 0){ functionVO.setHasChildren(true); }else { @@ -287,6 +508,48 @@ return functionVOList.stream().sorted(Comparator.comparing(s -> s.getSort())).collect(Collectors.toList()); } + public void findChildAuthFunctionVO(MenuVO functionVO, boolean isAll) throws PLException { + //0琛ㄧず娌℃湁妯″潡涔熸病鏈夋搷浣滐紝1琛ㄧず鏈夋ā鍧楋紝2琛ㄧず鏈夋搷浣� + long type = platformClientUtil.getFrameworkService().checkChildObject(functionVO.getId()); + if(type == 1){ + FunctionInfo[] funcObjs = platformClientUtil.getFrameworkService().getModuleListByParentId(functionVO.getId(), isAll); + for (FunctionInfo funcObj : funcObjs) { + MenuVO menuVO = new MenuVO(); + menuVO.setId(funcObj.id); + menuVO.setSource(funcObj.image); + menuVO.setPath(funcObj.resourceB); + menuVO.setCode(funcObj.aliasName); + menuVO.setAlias(funcObj.aliasName); + menuVO.setParentId(funcObj.parentId); + menuVO.setChildType((int) type); + menuVO.setName(funcObj.name); + menuVO.getMeta().put("keepAlive",false); + menuVO.setSort((int) funcObj.seq); + findChildAuthFunctionVO(menuVO, isAll); + functionVO.getChildren().add(menuVO); + } + }else if(type == 2){ + FuncOperationInfo[] infos = platformClientUtil.getFrameworkService().getFuncOperationByModule(functionVO.getId(), "", true); + for (FuncOperationInfo info : infos) { + MenuVO menuVO = new MenuVO(); + menuVO.setChildType((int) type); + menuVO.setId(info.id); + menuVO.setFuncId(info.funcId); + menuVO.setCode(info.operIndentify); + menuVO.setOperId(info.operId); + menuVO.setName(info.operName); + menuVO.setAlias(info.operAlias); + menuVO.setRemark(info.operDesc); + menuVO.setSort((int) info.number); + menuVO.setModeType("FunctionObject"); + menuVO.setIsValid(info.isValid); + menuVO.setHasChildren(false); + functionVO.getChildren().add(menuVO); + } + }else{ + functionVO.setHasChildren(false); + } + } @Override public UIContentVO getUIContentByBtmTypeAndId(TreeQueryObject treeQueryObject, ResourceControlTypeEnum resourceControlTypeEnum) throws PLException { @@ -303,9 +566,6 @@ return null; } - - - /** * 鑾峰彇鎵�鏈夌殑鍔熻兘鑿滃崟 * @@ -317,7 +577,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()); } @@ -334,7 +594,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); @@ -378,7 +638,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()); } @@ -394,12 +654,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()); } @@ -475,7 +735,7 @@ conditionMap.put(key,value); }); conditionMap.put("ploid", notIn ? QueryOptionConstant.NOTIN : QueryOptionConstant.IN + "select plfuncoid from plroleright where plroleoid in (" + WebUtil.toInSql(roleOids.toArray(new String[0])) + ")"); - VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(conditionMap,SmRoleForPlatform1.class); + VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(conditionMap, SmRoleForPlatform1.class); List<SmFunctionForPlatform1> functionForPlatform1s = boService.selectByQueryWrapper(queryWrapper, SmFunctionForPlatform1.class); if(!CollectionUtils.isEmpty(functionForPlatform1s)){ functions.addAll(functionForPlatform1s); @@ -598,6 +858,7 @@ } return dataGrid(queryMap,pageHelper); } + /** * 鎵归噺鏍规嵁瑙掕壊鐨勪富閿幏鍙栧叧鑱旂殑鏉冮檺 * @@ -631,7 +892,6 @@ return gridFunctionByRoleOid(roleOidCollection.stream().collect(Collectors.joining(",")), queryMap,pageHelper,resourceControlTypeEnum,false); } - /** * 娓呴櫎缂撳瓨 */ @@ -639,4 +899,259 @@ public void clearCache() { } + + + /** + * 閫氳繃妯″潡ID鑾峰彇瀛愮骇鍒楄〃 + * @param parentId + * @param modeType 妯″潡绫诲瀷 + * @param isAll 鏄惁鍖呮嫭鏃犳晥鐨勬ā鍧楋紝true鍒欏寘鎷� + * @return + * @throws VciBaseException + */ + @Override + public List<MenuVO> getSysModelAuthTreeMenuByPID(String parentId,String modeType,boolean isAll) throws VciBaseException, PLException { + List<MenuVO> menuVOList = new ArrayList<>(); +// if(Func.isBlank(parentId)){ +// return menuVOList; +// } + SessionInfo sessionInfo = WebUtil.getCurrentUserSessionInfoNotException(); + boolean adminOrDeveloperOrRoot = rightControlUtil.isAdminOrDeveloperOrRoot(sessionInfo.getUserId()); + if (adminOrDeveloperOrRoot) { + //绯荤粺鑿滃崟 + parentId = SYSTEMMANAGMENTNODE; + } else if (rightControlUtil.isThreeAdminCurUser()) { + //涓夊憳杩斿洖绠$悊鍔熻兘妯″潡鐩稿叧鐨勮彍鍗� + parentId = SYSTEMMANAGMENTNODE; + } else { + //鏅�氱敤鎴峰彧杩斿洖涓氬姟鍔熻兘妯″潡鐩稿叧鐨勮彍鍗� + parentId = ROOT_MENU_ID; + } + List<MenuVO> functionVOList = new ArrayList<>(); + FunctionInfo[] moduleListByParentId = getModuleListByParentId(parentId, false); + for (FunctionInfo menu : moduleListByParentId) { + if(!menu.isValid){ + continue; + } + MenuVO functionVO = new MenuVO(); + functionVO.setId(menu.id); + functionVO.setSource(menu.image); + functionVO.setPath(menu.resourceB); + functionVO.setParentId(menu.parentId); + functionVO.setCode(menu.aliasName); + functionVO.setAlias(menu.aliasName); + functionVO.setName(menu.name); + functionVO.getMeta().put("keepAlive",false); + functionVO.setSort((int) menu.seq); + findChildAuthFunctionVO(functionVO, isAll); +// try { +// functionVO.setChildren(findChildAuthFunctionVO(menu.id)); +// } 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 { + functionVO.setHasChildren(false); + } + functionVOList.add(functionVO); + } + return functionVOList; + + + +// RoleRightInfo[] userRoleRights = rightControlUtil.getRoleRightByUserName(sessionInfo.getUserId()); +// Map<String, List<FunctionInfo>> map = rightControlUtil.getAllChildrenFunctionsByUserName( +// parentId, sessionInfo.getUserId(), userRoleRights); +// +// if(Func.isEmpty(map.get(parentId))) { +// return functionVOList; +// } +// for (FunctionInfo menu : map.get(parentId)) { +// if(!menu.isValid){ +// continue; +// } +// MenuVO functionVO = new MenuVO(); +// functionVO.setId(menu.id); +// functionVO.setSource(menu.image); +// //if(StringUtils.isBlank(menu.resourceB)){ +// // continue; +// //} +// functionVO.setPath(menu.resourceB); +// functionVO.setParentId(menu.parentId); +// functionVO.setCode(menu.aliasName); +// functionVO.setAlias(menu.aliasName); +// functionVO.setName(menu.name); +// functionVO.getMeta().put("keepAlive",false); +// functionVO.setSort((int) menu.seq); +//// try { +//// functionVO.setChildren(findChildAuthFunctionVO(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 { +// functionVO.setHasChildren(false); +// } +// functionVOList.add(functionVO); +// } +// //濡傛灉鏄紑鍙戞垨鑰呮祴璇曠敤鎴凤紝闇�鍝熻幏鍙栫郴缁熸ā鍧楅厤缃彍鍗� +// if(adminOrDeveloperOrRoot){ +// //鑾峰彇棣栭〉绯荤粺妯″潡閰嶇疆鑿滃崟 +// MenuVO menuVO = JsonConfigReader.getSysModuleConf().getSysModuleNode(); +// if(Func.isNotEmpty(menuVO)){ +// functionVOList.add(menuVO); +// } +// } +// return functionVOList.stream().sorted(Comparator.comparing(s -> s.getSort())).collect(Collectors.toList()); + + + + + +// +// +// +// +// boolean isFunctionObject = Func.isNotBlank(modeType) && modeType.equalsIgnoreCase("FunctionObject"); +// if(parentId.equals("systemManagmentNode") || parentId.equals("modelManagmentNode") || isFunctionObject){ +// int childType = this.checkChildObject(parentId); +// if(isFunctionObject){ +// try { +// /**鍒ゆ柇璇ユā鍧椾笅瀛愬璞℃槸妯″潡杩樻槸鎿嶄綔锛�0琛ㄧず鏃犲瓙鑺傜偣锛�1琛ㄧず鏄ā鍧楋紝2琛ㄧず鏄搷浣�**/ +// if(childType == 2){ +// try{ +// FuncOperationInfo[] infos = platformClientUtil.getFrameworkService().getFuncOperationByModule(parentId, "", false); +// if(Func.isNotEmpty(infos.length)){ +// childType = this.checkChildObject(infos[0].id); //閮芥槸鍚屼竴灞傛墍浠ュ彇绗竴涓嵆鍙煡璇㈡槸浠�涔堢被鍨� +// for(int i = 0;i < infos.length ;i++){ +// FuncOperationInfo info = infos[i]; +// MenuVO menuVO = new MenuVO(); +// menuVO.setChildType(childType); +// menuVO.setId(info.id); +// menuVO.setFuncId(info.funcId); +// menuVO.setCode(info.operIndentify); +// menuVO.setOperId(info.operId); +// menuVO.setName(info.operName); +// menuVO.setAlias(info.operAlias); +// menuVO.setRemark(info.operDesc); +// menuVO.setSort((int) info.number); +// menuVO.setModeType("FunctionObject"); +// menuVO.setIsValid(info.isValid); +// menuVO.setHasChildren(false); +// menuVOList.add(menuVO); +// } +// } +// }catch (PLException e) { +// e.printStackTrace(); +// throw new VciBaseException(String.valueOf(e.code), e.messages); +// } +// }else if(childType == 1){ +// try{ +// FunctionInfo[] funcInfos = platformClientUtil.getFrameworkService().getModuleListByParentId(parentId, isAll); +// if(Func.isNotEmpty(funcInfos.length)){ +// childType = this.checkChildObject(funcInfos[0].id); //閮芥槸鍚屼竴灞傛墍浠ュ彇绗竴涓嵆鍙煡璇㈡槸浠�涔堢被鍨� +// for(int i = 0;i < funcInfos.length; i++){ +// FunctionInfo funcInfo = funcInfos[i]; +// MenuVO menuVO = this.functionInfoToMenuVO(funcInfo); +// menuVO.setChildType(childType); +// menuVO.setModeType("FunctionObject"); +// menuVOList.add(menuVO); +// } +// } +// }catch (PLException e) { +// e.printStackTrace(); +// throw new VciBaseException(String.valueOf(e.code),e.messages); +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// throw new VciBaseException("妯″潡鏌ヨ鏃跺嚭鐜伴敊璇紝鍘熷洜锛�"+VciBaseUtil.getExceptionMessage(e)); +// } +// }else{ +// try{ +// MenuVO parentNode = null; +// //灏嗚繑鍥炵殑鑺傜偣澶栧眰濂椾笂褰撳墠鐖惰妭鐐� +// if("systemManagmentNode".equals(parentId)){ +// parentNode = JsonConfigReader.getSysModuleConf().getSystemManagmentNode(); +// }else if("modelManagmentNode".equals(parentId)){ +// parentNode = JsonConfigReader.getSysModuleConf().getModelManagmentNode(); +// } +// //濡傛灉鏌ヨ鐨勬槸绗竴灞傝妭鐐瑰氨闇�瑕佺洿鎺ヨ繑鍥瀞ystemManagmentNode鎴杕odelManagmentNode鑺傜偣 +// if(Func.isNotBlank(modeType) && modeType.equals("firstNode")){ +// menuVOList.add(parentNode); +// return menuVOList; +// } +// //鏌ヨ鐨勪笁绾ц妭鐐� +// FunctionInfo[] funcInfos = platformClientUtil.getFrameworkService().getModuleListByParentId(parentId, isAll); +// for(int i = 0;i < funcInfos.length; i++){ +// FunctionInfo funcInfo = funcInfos[i]; +// MenuVO menuVO = this.functionInfoToMenuVO(funcInfo); +// menuVO.setModeType("FunctionObject"); +// menuVO.setChildType(childType); +// menuVOList.add(menuVO); +// } +// return menuVOList; +// }catch (PLException e) { +// e.printStackTrace(); +// throw new VciBaseException(String.valueOf(e.code),e.messages); +// } +// } +// } +// else if(parentId.equals("operateNode")){ +// //鍔犺浇鎵�鏈夋搷浣� +// try{ +// //灏嗚繑鍥炵殑鑺傜偣澶栧眰濂椾笂褰撳墠鐖惰妭鐐� +// MenuVO parentNode = JsonConfigReader.getSysModuleConf().getOperateNode(); +// //濡傛灉鏌ヨ鐨勬槸绗竴灞傝妭鐐瑰氨闇�瑕佺洿鎺ヨ繑鍥瀞ysOptionNode鑺傜偣 +// if(Func.isNotBlank(modeType) && modeType.equals("firstNode")){ +// menuVOList.add(parentNode); +// return menuVOList; +// } +// OperateInfo[] operateInfos = platformClientUtil.getFrameworkService().getOperateTreeList(parentId); +// for(int i = 0; i < operateInfos.length;i++ ){ +// OperateInfo operateInfo = operateInfos[i]; +// MenuVO menuVO = new MenuVO(); +// menuVO.setId(operateInfo.id); +// menuVO.setName(operateInfo.name); +// menuVO.setCode(operateInfo.identify); +// menuVO.setAlias(operateInfo.alias); +// menuVO.setCategory(2); +// menuVO.setChildType(0); +// menuVO.setRemark(operateInfo.desc); +// menuVO.getMeta().put("keepAlive",false); +// menuVO.setSort((int) operateInfo.seq); +// menuVO.setModeType("operateObject"); +// menuVO.setHasChildren(false); +// menuVOList.add(menuVO); +// } +// }catch (PLException e) { +// e.printStackTrace(); +// throw new VciBaseException(String.valueOf(e.code),new String[]{VciBaseUtil.getExceptionMessage(e)}); +// } +// } +// return null; +// return menuVOList.stream().sorted(Comparator.comparing(s -> s.getSort())).collect(Collectors.toList()); + } + + + /** + * 閫氳繃妯″潡ID鑾峰彇瀛愮骇鍒楄〃 + * @param parentId + * @param isAll 鏄惁鍖呮嫭鏃犳晥鐨勬ā鍧楋紝true鍒欏寘鎷� + * @return + * @throws VciException + */ + public FunctionInfo[] getModuleListByParentId(String parentId,boolean isAll) throws PLException { + FunctionInfo[] funcInfos = null; + funcInfos = platformClientUtil.getFrameworkService().getModuleListByParentId(parentId, isAll); + return funcInfos; + } } -- Gitblit v1.9.3