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