From e937d0111a52e2c13c50bbc3386d20a12d125899 Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期五, 06 九月 2024 10:54:54 +0800
Subject: [PATCH] 链接类型查询模板
---
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java | 668 +++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 570 insertions(+), 98 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 58977d3..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,39 +1,47 @@
package com.vci.frameworkcore.compatibility.impl;
+import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
-import com.vci.client.common.providers.ServiceProvider;
+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.*;
+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;
-import org.springframework.cache.annotation.CacheEvict;
-import org.springframework.cache.annotation.Cacheable;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.stream.Collectors;
-
-import static com.vci.web.constant.CacheKeyConstant.ALL_FUNCTION;
-import static com.vci.web.constant.CacheNameConstant.VCI_OBJECT_SERVICE;
/**
* 鑰佸钩鍙扮殑鏉冮檺鏈嶅姟
@@ -51,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";
/**
* 浣跨敤鐢ㄦ埛鏌ヨ
@@ -76,6 +92,12 @@
@Autowired
private UIEngineServiceI uiEngineServiceI;
+ @Autowired
+ private PlatformClientUtil platformClientUtil;
+
+ @Autowired
+ RightControlUtil rightControlUtil;
+
/**
* 鏌ヨ鎵�鏈夌殑鍔熻兘
*
@@ -94,7 +116,6 @@
* @return 鍔熻兘鐨勬樉绀哄璞�
*/
@Override
- @Cacheable(value = VCI_OBJECT_SERVICE,key = ALL_FUNCTION,unless = "#result == null")
public Map<String, SmFunctionVO> selectAllFunctionMap() {
return Optional.ofNullable(self.selectAllFunction()).orElseGet(()->new ArrayList<>()).stream().collect(Collectors.toMap(s->s.getOid(),t->t));
}
@@ -155,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())){
@@ -195,38 +216,11 @@
functionVO.setDescription(functionForPlatform1.getPldesc());
}
}
-
+
functionVO.setBtmname("function");
//鑰佺殑鏁版嵁閲屽垱寤轰汉锛屾渶鍚庝慨鏀逛汉绛夐兘娌℃湁
return functionVO;
}
-
-// /**
-// * 鑾峰彇褰撳墠瑙掕壊鐨勮彍鍗�
-// *
-// * @param treeQueryObject 灞炴�ф煡璇㈠璞�
-// * @param resourceControlTypeEnum 瑙掕壊鎺у埗鍖哄煙锛屼篃鏄姛鑳芥帶鍒剁殑鍖哄煙
-// * @return 鑿滃崟锛屽寘鍚笂涓嬬骇
-// */
-// @Override
-// public List<Tree> treeCurrentUserMenu(TreeQueryObject treeQueryObject, ResourceControlTypeEnum resourceControlTypeEnum) {
-// SessionInfo sessionInfo = WebUtil.getCurrentUserSessionInfoNotException();
-// if(sessionInfo == null || CollectionUtils.isEmpty(sessionInfo.getFunctionOids())){
-// return new ArrayList<Tree>();
-// }
-// if(resourceControlTypeEnum == null){
-// resourceControlTypeEnum = ResourceControlTypeEnum.BS;
-// }
-// Map<String, SmFunctionVO> functionVOMap = selectAllFunctionMap();
-// List<SmFunctionVO> functionVOList = new ArrayList<>();
-// for(String oid : sessionInfo.getFunctionOids()) {
-// SmFunctionVO functionVO = functionVOMap.get(oid);
-// if(functionVO !=null && resourceControlTypeEnum.getValue().equals(functionVO.getResourceControlType()) && functionVO.isDisplayFlag()) {
-// functionVOList.add(functionVO);
-// }
-// }
-// return dos2Trees(functionVOList.stream().sorted(Comparator.comparing(s -> s.getOrderNum())).collect(Collectors.toList()),treeQueryObject == null?null:treeQueryObject.getParentOid());
-// }
/**
* 鑾峰彇褰撳墠瑙掕壊鐨勮彍鍗�
@@ -238,45 +232,51 @@
@Override
public List<MenuVO> treeCurrentUserMenu(TreeQueryObject treeQueryObject, ResourceControlTypeEnum resourceControlTypeEnum) throws PLException {
SessionInfo sessionInfo = WebUtil.getCurrentUserSessionInfoNotException();
-// if(sessionInfo == null || CollectionUtils.isEmpty(sessionInfo.getFunctionOids())){
-// return new ArrayList<Tree>();
-// }
- if(resourceControlTypeEnum == null){
- resourceControlTypeEnum = ResourceControlTypeEnum.BS;
+ String parentId;
+ boolean adminOrDeveloperOrRoot = rightControlUtil.isAdminOrDeveloperOrRoot(sessionInfo.getUserId());
+ if (adminOrDeveloperOrRoot) {
+ //绯荤粺鑿滃崟
+ parentId = SYSTEMMANAGMENTNODE;
+ } else if (rightControlUtil.isThreeAdminCurUser()) {
+ //涓夊憳杩斿洖绠$悊鍔熻兘妯″潡鐩稿叧鐨勮彍鍗�
+ parentId = SYSTEMMANAGMENTNODE;
+ } else {
+ //鏅�氱敤鎴峰彧杩斿洖涓氬姟鍔熻兘妯″潡鐩稿叧鐨勮彍鍗�
+ parentId = ROOT_MENU_ID;
}
-// PortalServicePrx uiService = ServiceProvider.getUIService();
-// FrameworkServicePrx frameService = ServiceProvider.getFrameService();
- FunctionInfo[] menus = ServiceProvider.getFrameService().getModuleListByParentId("modelManagmentNode", true);
-// FunctionInfo[] menus = ServiceProvider.getFrameService().("modelManagmentNode", true);
+ RoleRightInfo[] userRoleRights = rightControlUtil.getRoleRightByUserName(sessionInfo.getUserId());
+ Map<String, List<FunctionInfo>> map = rightControlUtil.getAllChildrenFunctionsByUserName(
+ parentId, sessionInfo.getUserId(), userRoleRights);
-// PLAction[] allPLAction = uiService.getAllPLAction();
List<MenuVO> functionVOList = new ArrayList<>();
-// Map<String, SmFunctionVO> functionVOMap = selectAllFunctionMap();
- for (FunctionInfo menu : menus) {
+ 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;
- }
+ //if(StringUtils.isBlank(menu.resourceB)){
+ // continue;
+ //}
functionVO.setPath(menu.resourceB);
-// if(menu.resourceB.contains("type=") || menu.resourceB.contains("context=")){
-// String[] split = menu.resourceB.split("\\?")[0].split("=");
-// functionVO.setPath((split.length>1 && split[1].equals("test") ? "/custom-ui/" :"/base/UIContentViewer") + menu.resourceB.substring(3));
-// }else{
-// functionVO.setPath("/views/" + menu.id);
-//// functionVO.setPath("/" + menu.resourceB + menu.aliasName);
-// }
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);
- 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 {
@@ -284,13 +284,202 @@
}
functionVOList.add(functionVO);
}
-// return dos2Trees(functionVOList.stream().sorted(Comparator.comparing(s -> s.getSort())).collect(Collectors.toList()),treeQueryObject == null?null:treeQueryObject.getParentOid());
+ //濡傛灉鏄紑鍙戞垨鑰呮祴璇曠敤鎴凤紝闇�鍝熻幏鍙栫郴缁熸ā鍧楅厤缃彍鍗�
+ 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 = ServiceProvider.getFrameService().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;
@@ -298,24 +487,17 @@
MenuVO functionVO = new MenuVO();
functionVO.setId(menu.id);
functionVO.setSource(menu.image);
- if(StringUtils.isBlank(menu.resourceB) ){
- continue;
- }
- functionVO.setPath(menu.resourceB);
-// if(menu.resourceB.contains("type=") || menu.resourceB.contains("context=")){
-// String[] split = menu.resourceB.split("\\?")[0].split("=");
-// functionVO.setPath((split.length>1 && split[1].equals("test") ? "/custom-ui/" :"/base/UIContentViewer") + menu.resourceB.substring(3));
-// }else{
-// functionVO.setPath("/views/" + menu.id);
-//// functionVO.setPath("/" + menu.resourceB + menu.aliasName);
+// if(StringUtils.isBlank(menu.resourceB) ){
+// continue;
// }
+ functionVO.setPath(menu.resourceB);
functionVO.setCode(menu.aliasName);
functionVO.setAlias(menu.aliasName);
functionVO.setParentId(menu.parentId);
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 {
@@ -326,17 +508,56 @@
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 {
SessionInfo sessionInfo = WebUtil.getCurrentUserSessionInfoNotException();
-// if(sessionInfo == null || CollectionUtils.isEmpty(sessionInfo.getFunctionOids())){
-// return new ArrayList<Tree>();
-// }
if(resourceControlTypeEnum == null){
resourceControlTypeEnum = ResourceControlTypeEnum.BS;
}
- for (PLUILayout allPLUILayout : ServiceProvider.getUIService().getAllPLUILayouts()) {
+ for (PLUILayout allPLUILayout : platformClientUtil.getUIService().getAllPLUILayouts()) {
if(treeQueryObject.getConditionMap().getOrDefault("type","").equals(allPLUILayout.plRelatedType)
&& treeQueryObject.getConditionMap().getOrDefault("context","").equals(allPLUILayout.plCode)){
return uiEngineServiceI.UIContentDO2VO(allPLUILayout,true);
@@ -344,9 +565,6 @@
}
return null;
}
-
-
-
/**
* 鑾峰彇鎵�鏈夌殑鍔熻兘鑿滃崟
@@ -359,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());
}
@@ -376,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);
@@ -420,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());
}
@@ -436,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());
}
@@ -517,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);
@@ -569,12 +787,12 @@
if(!CollectionUtils.isEmpty(functionVOS)){
functionVOList.addAll(functionVOS);
String sql = "select plfuncoid,plroleoid from plroleright where plroleoid in (" + WebUtil.toInSql(roleOids.toArray(new String[0])) + ")";
- List<com.vci.client.bof.ClientBusinessObject> cbos = boService.queryBySql(sql, null);
+ List<BusinessObject> cbos = boService.queryBySql(sql, null);
if(!CollectionUtils.isEmpty(cbos)){
cbos.stream().forEach(cbo->{
- String roleOid = cbo.getAttributeValue("plroleoid");
+ String roleOid = ObjectTool.getBOAttributeValue(cbo,"plroleoid");
List<String> functionOids = roleFunctionOidMap.getOrDefault(roleOid,new ArrayList<>());
- functionOids.add(cbo.getAttributeValue("plfuncoid"));
+ functionOids.add(ObjectTool.getBOAttributeValue(cbo,"plfuncoid"));
roleFunctionOidMap.put(roleOid,functionOids);
});
}
@@ -640,6 +858,7 @@
}
return dataGrid(queryMap,pageHelper);
}
+
/**
* 鎵归噺鏍规嵁瑙掕壊鐨勪富閿幏鍙栧叧鑱旂殑鏉冮檺
*
@@ -673,13 +892,266 @@
return gridFunctionByRoleOid(roleOidCollection.stream().collect(Collectors.joining(",")), queryMap,pageHelper,resourceControlTypeEnum,false);
}
-
/**
* 娓呴櫎缂撳瓨
*/
@Override
- @CacheEvict(value = VCI_OBJECT_SERVICE,key = ALL_FUNCTION)
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