| | |
| | | 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.common.exception.VciException; |
| | | import com.vci.common.locale.LocaleDisplay; |
| | | import com.vci.corba.common.PLException; |
| | | import com.vci.corba.framework.data.FuncOperationInfo; |
| | | import com.vci.corba.framework.data.FunctionInfo; |
| | | import com.vci.corba.framework.data.OperateInfo; |
| | | import com.vci.corba.framework.data.RoleRightInfo; |
| | | import com.vci.corba.omd.data.BusinessObject; |
| | | import com.vci.corba.portal.data.PLUILayout; |
| | |
| | | import com.vci.pagemodel.MenuVO; |
| | | import com.vci.pagemodel.SmFunctionVO; |
| | | import com.vci.omd.utils.ObjectTool; |
| | | import com.vci.pagemodel.SmFunctionVO; |
| | | 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.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; |
| | |
| | | /** |
| | | * 菜单的根节点主键,这个是平台定义的 |
| | | */ |
| | | private final String ROOT_MENU_Id = "modelManagmentNode"; |
| | | private final String ROOT_MENU_ID = "modelManagmentNode"; |
| | | |
| | | /** |
| | | * 管理功能模块菜单根节点 |
| | | */ |
| | | private final String SYSTEMMANAGMENTNODE = "systemManagmentNode"; |
| | | |
| | | /** |
| | | * 操作类型管理菜单根节点 |
| | | */ |
| | | private final String OPERATENODE = "operateNode"; |
| | | |
| | | /** |
| | | * 使用用户查询 |
| | |
| | | |
| | | @Autowired |
| | | RightControlUtil rightControlUtil; |
| | | |
| | | /** |
| | | * 查询所有的功能 |
| | | * |
| | |
| | | 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())){ |
| | |
| | | functionVO.setDescription(functionForPlatform1.getPldesc()); |
| | | } |
| | | } |
| | | |
| | | |
| | | functionVO.setBtmname("function"); |
| | | //老的数据里创建人,最后修改人等都没有 |
| | | return functionVO; |
| | |
| | | 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)) { |
| | |
| | | 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); |
| | |
| | | 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 { |
| | |
| | | } |
| | | 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()); |
| | | } |
| | | |
| | | /** |
| | | * 通过模块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); |
| | | for(int i = 0;i < infos.length ;i++){ |
| | | FuncOperationInfo info = infos[i]; |
| | | MenuVO menuVO = new MenuVO(); |
| | | menuVO.setChildType(childType); |
| | | menuVO.setId(info.id); |
| | | menuVO.setCode(info.funcId); |
| | | menuVO.setId(info.operId); |
| | | menuVO.setName(info.operName); |
| | | //menuVO.setOperIndentify(info.operIndentify); |
| | | 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); |
| | | 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; |
| | | //将返回的节点外层套上当前父节点 |
| | | if(parentId.equals("systemManagmentNode")){ |
| | | parentNode = JsonConfigReader.getSysModuleConf().getSystemManagmentNode(); |
| | | }else{ |
| | | parentNode = JsonConfigReader.getSysModuleConf().getModelManagmentNode(); |
| | | } |
| | | List<MenuVO> menuVOS = new ArrayList<>(); |
| | | //查询的三级节点 |
| | | 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); |
| | | menuVOS.add(menuVO); |
| | | } |
| | | parentNode.setChildren(menuVOS); |
| | | menuVOList.add(parentNode); |
| | | }catch (PLException e) { |
| | | e.printStackTrace(); |
| | | throw new VciBaseException(String.valueOf(e.code),e.messages); |
| | | } |
| | | } |
| | | }else if(parentId.equals("sysOptionNode")){ |
| | | //加载所有操作 |
| | | try{ |
| | | //将返回的节点外层套上当前父节点 |
| | | MenuVO parentNode = JsonConfigReader.getSysModuleConf().getOperateNode(); |
| | | List<MenuVO> menuVOS = new ArrayList<>(); |
| | | 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); |
| | | menuVOS.add(menuVO); |
| | | } |
| | | parentNode.setChildren(menuVOS); |
| | | menuVOList.add(parentNode); |
| | | }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转VO对象 |
| | | * @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{ |
| | | res = ClientSession.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 { |
| | |
| | | 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(); |
| | |
| | | return null; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取所有的功能菜单 |
| | | * |
| | |
| | | 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()); |
| | | } |
| | |
| | | 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); |
| | |
| | | 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()); |
| | | } |
| | |
| | | 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()); |
| | | } |
| | |
| | | } |
| | | return dataGrid(queryMap,pageHelper); |
| | | } |
| | | |
| | | /** |
| | | * 批量根据角色的主键获取关联的权限 |
| | | * |
| | |
| | | } |
| | | return gridFunctionByRoleOid(roleOidCollection.stream().collect(Collectors.joining(",")), queryMap,pageHelper,resourceControlTypeEnum,false); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 清除缓存 |