| | |
| | | |
| | | 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; |
| | |
| | | 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())){ |
| | |
| | | } |
| | | functionVOList.add(functionVO); |
| | | } |
| | | //如果是开发或者测试用户,需哟获取系统模块配置菜单 |
| | | if(adminOrDeveloperOrRoot){ |
| | | functionVOList.addAll(this.getSystemMenu()); |
| | | //获取首页系统模块配置菜单 |
| | | 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 List<MenuVO> getSystemMenu(){ |
| | | /*如果是测试账号或者开发账号,处理返回systemManagmentNode和modelManagmentNode以外, |
| | | 还需要返回操作类型管理菜单节点(operateNode)和系统配置、系统运行监控节点*/ |
| | | List<MenuVO> functionVOList = new ArrayList<>(); |
| | | String menuJson = "{\n" + |
| | | " \"hasChildren\": true,\n" + |
| | | " \"children\": [\n" + |
| | | " {\n" + |
| | | " \"hasChildren\": true,\n" + |
| | | " \"children\": [],\n" + |
| | | " \"id\": \"systemManagmentNode\",\n" + |
| | | " \"name\": \"管理功能模块\",\n" + |
| | | " \"parentId\": \"VCIBaseTreeNode\",\n" + |
| | | " \"code\": \"systemManagmentNode\",\n" + |
| | | " \"alias\": \"system\",\n" + |
| | | " \"meta\": {\n" + |
| | | " \"keepAlive\": false\n" + |
| | | " },\n" + |
| | | " \"sort\": 2,\n" + |
| | | " \"soruce\": \"\"\n" + |
| | | " },\n" + |
| | | " {\n" + |
| | | " \"hasChildren\": true,\n" + |
| | | " \"children\": [],\n" + |
| | | " \"id\": \"modelManagmentNode\",\n" + |
| | | " \"name\": \"业务功能模块\",\n" + |
| | | " \"parentId\": \"VCIBaseTreeNode\",\n" + |
| | | " \"code\": \"modelManagmentNode\",\n" + |
| | | " \"alias\": \"model\",\n" + |
| | | " \"meta\": {\n" + |
| | | " \"keepAlive\": false\n" + |
| | | " },\n" + |
| | | " \"sort\": 3,\n" + |
| | | " \"soruce\": \"\"\n" + |
| | | " },\n" + |
| | | " {\n" + |
| | | " \"hasChildren\": true,\n" + |
| | | " \"children\": [],\n" + |
| | | " \"id\": \"operateNode\",\n" + |
| | | " \"name\": \"操作类型管理\",\n" + |
| | | " \"parentId\": \"VCIBaseTreeNode\",\n" + |
| | | " \"code\": \"operateNode\",\n" + |
| | | " \"alias\": \"operate\",\n" + |
| | | " \"meta\": {\n" + |
| | | " \"keepAlive\": false\n" + |
| | | " },\n" + |
| | | " \"sort\": 4,\n" + |
| | | " \"soruce\": \"\"\n" + |
| | | " },\n" + |
| | | " {\n" + |
| | | " \"hasChildren\": false,\n" + |
| | | " \"children\": [],\n" + |
| | | " \"id\": \"sysOptionNode\",\n" + |
| | | " \"name\": \"系统配置\",\n" + |
| | | " \"parentId\": \"VCIBaseTreeNode\",\n" + |
| | | " \"code\": \"sysOptionNode\",\n" + |
| | | " \"alias\": \"sysOption\",\n" + |
| | | " \"meta\": {\n" + |
| | | " \"keepAlive\": false\n" + |
| | | " },\n" + |
| | | " \"sort\": 5,\n" + |
| | | " \"soruce\": \"\"\n" + |
| | | " },\n" + |
| | | " {\n" + |
| | | " \"hasChildren\": false,\n" + |
| | | " \"children\": [],\n" + |
| | | " \"id\": \"sysMonitorNode\",\n" + |
| | | " \"name\": \"系统运行监控\",\n" + |
| | | " \"parentId\": \"VCIBaseTreeNode\",\n" + |
| | | " \"code\": \"sysMonitorNode\",\n" + |
| | | " \"alias\": \"sysMonitor\",\n" + |
| | | " \"meta\": {\n" + |
| | | " \"keepAlive\": false\n" + |
| | | " },\n" + |
| | | " \"sort\": 5,\n" + |
| | | " \"soruce\": \"\"\n" + |
| | | " }\n" + |
| | | " ],\n" + |
| | | " \"id\": \"VCIBaseTreeNode\",\n" + |
| | | " \"name\": \"系统模块配置\",\n" + |
| | | " \"parentId\": \"\",\n" + |
| | | " \"code\": \"rootNode\",\n" + |
| | | " \"alias\": \"root\",\n" + |
| | | " \"meta\": {\n" + |
| | | " \"keepAlive\": false\n" + |
| | | " },\n" + |
| | | " \"sort\": 1,\n" + |
| | | " \"soruce\": \"\"\n" + |
| | | "}"; |
| | | functionVOList.add(JSON.parseObject(menuJson, MenuVO.class)); |
| | | return functionVOList; |
| | | 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 dataGrid(queryMap,pageHelper); |
| | | } |
| | | |
| | | /** |
| | | * 批量根据角色的主键获取关联的权限 |
| | | * |
| | |
| | | } |
| | | return gridFunctionByRoleOid(roleOidCollection.stream().collect(Collectors.joining(",")), queryMap,pageHelper,resourceControlTypeEnum,false); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 清除缓存 |