From 435e3366a85f797ce02008698c28c9a8ca73b4a6 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期二, 08 十月 2024 10:10:24 +0800
Subject: [PATCH] UI定义复制粘贴树查询接口,按钮复制粘贴接口

---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java |  580 ++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 482 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 ec3221a..b60237c 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
@@ -2,25 +2,34 @@
 
 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.common.data.UserEntityInfo;
+import com.vci.corba.framework.data.*;
 import com.vci.corba.omd.data.BusinessObject;
 import com.vci.corba.portal.data.PLUILayout;
+import com.vci.dto.RoleInfoDTO;
+import com.vci.dto.RoleRightDTO;
+import com.vci.dto.RoleRightParamDTO;
 import com.vci.frameworkcore.compatibility.ISmFunctionQueryService;
 import com.vci.frameworkcore.enumpck.ResourceControlTypeEnum;
+import com.vci.model.RoleRightDO;
 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.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;
@@ -28,6 +37,7 @@
 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;
@@ -171,7 +181,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())){
@@ -279,107 +289,194 @@
             }
             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);
+                            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 List<MenuVO> getSystemMenu(){
-        /*濡傛灉鏄祴璇曡处鍙锋垨鑰呭紑鍙戣处鍙凤紝澶勭悊杩斿洖systemManagmentNode鍜宮odelManagmentNode浠ュ锛�
-         杩橀渶瑕佽繑鍥炴搷浣滅被鍨嬬鐞嗚彍鍗曡妭鐐癸紙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{//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 {
@@ -416,6 +513,51 @@
         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);
+                functionVO.setHasChildren(true);
+            }
+        }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);
+                functionVO.setHasChildren(true);
+            }
+        }else{
+            functionVO.setHasChildren(false);
+        }
+    }
+
     @Override
     public UIContentVO getUIContentByBtmTypeAndId(TreeQueryObject treeQueryObject, ResourceControlTypeEnum resourceControlTypeEnum) throws PLException {
         SessionInfo sessionInfo = WebUtil.getCurrentUserSessionInfoNotException();
@@ -429,6 +571,188 @@
             }
         }
         return null;
+    }
+
+    /**
+     * 鑾峰彇鎺堟潈鐨勬ā鍧�
+     * @param roleId 瑙掕壊涓婚敭
+     * @return 鎵�鍏锋湁鏉冮檺鐨勪富閿�
+     * @throws PLException
+     */
+    @Override
+    public List<String> getSysModelAuth(String roleId) throws PLException {
+
+        RoleRightInfo[] roleRightList = platformClientUtil.getFrameworkService().getRoleRightList(roleId, WebUtil.getCurrentUserId());
+        Map<String, Long> authMap = Arrays.stream(roleRightList).collect(Collectors.toMap(e -> e.funcId, e -> e.rightValue,
+                (existing, replacement) -> existing));
+        String parentId;
+        SessionInfo sessionInfo = WebUtil.getCurrentUserSessionInfoNotException();
+        boolean adminOrDeveloperOrRoot = rightControlUtil.isAdminOrDeveloperOrRoot(sessionInfo.getUserId());
+        if (adminOrDeveloperOrRoot) {
+            //绯荤粺鑿滃崟
+            parentId = SYSTEMMANAGMENTNODE;
+        } else {
+            //鏅�氱敤鎴峰彧杩斿洖涓氬姟鍔熻兘妯″潡鐩稿叧鐨勮彍鍗�
+            parentId = ROOT_MENU_ID;
+        }
+        FunctionInfo[] moduleListByParentId = getModuleListByParentId(parentId, false);
+        List<String> authList = new ArrayList<>();
+        for (FunctionInfo functionInfo : moduleListByParentId) {
+            if(authMap.containsKey(functionInfo.id)){
+                authList.add(functionInfo.id);
+                getChildAuthNode(functionInfo, authMap, authList);
+            }
+        }
+        return authList;
+    }
+
+    public BaseResult saveRoleRight(List<RoleRightParamDTO> roleRightDTOS, String roleId) throws PLException {
+        /**
+         * 瀛樺偍闇�瑕佷繚瀛樼殑鏉冮檺
+         */
+        Map<String,RoleRightInfo> rightMap = new HashMap<String,RoleRightInfo>();
+
+        Map<String, List<RoleRightParamDTO>> parentMap = roleRightDTOS.stream().collect(Collectors.groupingBy(e -> e.parentId));
+
+        for (RoleRightParamDTO dto : roleRightDTOS) {
+            RoleRightInfo obj = null;
+            //鍒ゆ柇绫诲瀷
+            if(dto.getType() == 1 && !dto.getParentId().equals(ROOT_MENU_ID)
+                    && !dto.getParentId().equals(SYSTEMMANAGMENTNODE)
+                    && !dto.getParentId().equals(OPERATENODE)){
+                if(!rightMap.containsKey(dto.getParentId())){
+                    obj = new RoleRightInfo();
+                    obj.funcId = dto.getParentId();
+                    obj.rightType = (short)1;
+                    obj.rightValue = 1;//娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0
+                    obj.roleId = roleId;
+                    obj.createUser = WebUtil.getCurrentUserId();
+                    obj.createTime = new Date().getTime();
+                    obj.modifyUser = WebUtil.getCurrentUserId();
+                    obj.modifyTime = new Date().getTime();
+                    obj.licensor = "";
+                }else{
+                    obj = rightMap.get(dto.getParentId());
+                    if (obj == null) {
+                        obj = new RoleRightInfo();
+                        obj.funcId = dto.getParentId();
+                        obj.rightType = (short)1;
+                        obj.rightValue = 1;//娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0
+                        obj.roleId = roleId;
+                        obj.createUser = WebUtil.getCurrentUserId();
+                        obj.createTime = new Date().getTime();
+                        obj.modifyUser = WebUtil.getCurrentUserId();
+                        obj.modifyTime = new Date().getTime();
+                        obj.licensor = "";
+                    }else {
+                        obj.rightValue = 1;
+                    }
+                }
+                rightMap.put(dto.getParentId(), obj);
+            }else if (dto.getType() == 2){
+//                RoleRightInfo roleRightObj = new RoleRightInfo();
+                if(!rightMap.containsKey(dto.getParentId())) {
+                    obj = new RoleRightInfo();
+                    obj.funcId = dto.getParentId();
+                    obj.rightType = (short)1;
+                    obj.rightValue = countRightValue(parentMap.get(dto.getParentId()));//娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0
+                    obj.roleId = roleId;
+                    obj.createUser = WebUtil.getCurrentUserId();
+                    obj.createTime = new Date().getTime();
+                    obj.modifyUser = WebUtil.getCurrentUserId();
+                    obj.modifyTime = new Date().getTime();
+                    obj.licensor = "";
+                    rightMap.put(dto.getParentId(), obj);
+                }
+
+            }
+        }
+        /**涓婇潰澶勭悊瀹屾垚鍚庯紝寰幆閬嶅巻鍙栧嚭MAP閲岀殑瀵硅薄杩涜淇濆瓨**/
+        RoleRightInfo[] roleRightObjs =	new RoleRightInfo[rightMap.size()];
+        Set<String> objSet = rightMap.keySet();
+        Iterator<String> it = objSet.iterator();
+        int i = 0;
+        while(it.hasNext()){
+            roleRightObjs[i++] = rightMap.get(it.next());
+        }
+        UserEntityInfo userEntityInfo = new UserEntityInfo();
+        userEntityInfo.setModules("com.vci.client.framework.rightdistribution.roleRight.RoleRightPanel");
+        userEntityInfo.setUserName(WebUtil.getCurrentUserId());
+        boolean res =  platformClientUtil.getFrameworkService()
+                .saveRoleRight(roleRightObjs,roleId,WebUtil.getCurrentUserId(), userEntityInfo);
+        if(!res){
+            throw new PLException("500", new String[]{"鍔熻兘妯″潡鎺堟潈澶辫触锛�"});
+        }
+        return BaseResult.success();
+    }
+
+    /**
+     * 鑾峰彇鎵�鎺堟潈鐨勬ā鍧楁潈闄�
+     * @param roleName 鎼滅储鐨勮鑹�
+     * @return 瑙掕壊鍒楄〃
+     */
+    @Override
+    public List<RoleInfoDTO> getRoleList(String roleName) throws PLException {
+        RoleInfo[] roleInfos = platformClientUtil.getFrameworkService().fetchRoleInfoByUserType(WebUtil.getCurrentUserId());
+        List<RoleInfoDTO> dtos = new ArrayList<>();
+        for (RoleInfo roleInfo : roleInfos) {
+            if(StringUtils.isBlank(roleName) || roleInfo.name.indexOf(roleName) != -1) {
+                RoleInfoDTO dto = new RoleInfoDTO();
+                dto.setName(roleInfo.name);
+                dto.setDescription(roleInfo.description);
+                dto.setId(roleInfo.id);
+                dto.setGrantor(roleInfo.grantor);
+                dto.setType(roleInfo.type);
+                dto.setCreateTime(roleInfo.createTime);
+                dto.setCreateUser(roleInfo.createUser);
+                dto.setUpdateTime(roleInfo.updateTime);
+                dto.setUpdateUser(roleInfo.updateUser);
+                dtos.add(dto);
+            }
+        }
+        return dtos;
+    }
+
+    private long countRightValue(List<RoleRightParamDTO> dtos){
+        long value = 0;
+        for (RoleRightParamDTO dto : dtos) {
+            value += (long)Math.pow(2, dto.getNumber());//绱鍔犱笂鍚勪釜鎿嶄綔鐨勬潈闄愬��
+        }
+        return value;
+    }
+
+    /**
+     *
+     * @param funcObj 妯″潡瀵硅薄
+     * @param authMap 璇ヨ鑹蹭笅鎵�鏈夌殑鏉冮檺鏁版嵁
+     * @param authList 璇ヨ鑹蹭笅鎵�鍏锋湁鐨勬潈闄�
+     * @throws PLException
+     */
+    private void getChildAuthNode(FunctionInfo funcObj, Map<String, Long> authMap, List<String> authList) throws PLException {
+        /**0琛ㄧず璇ユā鍧椾笅浠�涔堥兘娌℃湁锛�1琛ㄧず鏈夋ā鍧楋紝2琛ㄧず鏈夋搷浣�**/
+        long funcType = platformClientUtil.getFrameworkService().checkChildObject(funcObj.id);
+        if(funcType == 1){
+            FunctionInfo[] funcInfos = platformClientUtil.getFrameworkService().getModuleListByParentId(funcObj.id, false);
+            for(int i=0;i<funcInfos.length;i++){
+                if(authMap.containsKey(funcInfos[i].id)){
+                    authList.add(funcInfos[i].id);
+                    getChildAuthNode(funcInfos[i], authMap, authList);
+                }
+            }
+        }else if(funcType == 2){
+            FuncOperationInfo[] funcOperates = platformClientUtil.getFrameworkService().getFuncOperationByModule(funcObj.id, "", true);
+            for (int j = 0; j < funcOperates.length; j++) {
+                if(authMap.containsKey(funcOperates[j].funcId)){
+                    long rightValue = authMap.get(funcOperates[j].funcId);
+                    long nodeValue = funcOperates[j].number;
+                    long preValue = (rightValue >> nodeValue) & 1;
+                    //杩涜浣嶄笌鎿嶄綔锛屽鏋滅浉绛夊垯琛ㄧず鍏锋湁褰撳墠鎿嶄綔鐨勬潈闄�
+                    if (preValue == 1) {
+                        authList.add(funcOperates[j].id);
+                    }
+                }
+            }
+        }
     }
 
     /**
@@ -723,6 +1047,7 @@
         }
         return dataGrid(queryMap,pageHelper);
     }
+
     /**
      * 鎵归噺鏍规嵁瑙掕壊鐨勪富閿幏鍙栧叧鑱旂殑鏉冮檺
      *
@@ -756,7 +1081,6 @@
         return gridFunctionByRoleOid(roleOidCollection.stream().collect(Collectors.joining(",")), queryMap,pageHelper,resourceControlTypeEnum,false);
     }
 
-
     /**
      * 娓呴櫎缂撳瓨
      */
@@ -764,4 +1088,64 @@
     public void clearCache() {
 
     }
+
+
+    /**
+     * 閫氳繃妯″潡ID鑾峰彇瀛愮骇鍒楄〃
+     * @param isAll 鏄惁鍖呮嫭鏃犳晥鐨勬ā鍧楋紝true鍒欏寘鎷�
+     * @return
+     * @throws VciBaseException
+     */
+    @Override
+    public List<MenuVO> getSysModelAuthTreeMenuByPID(boolean isAll) throws VciBaseException, PLException {
+        SessionInfo sessionInfo = WebUtil.getCurrentUserSessionInfoNotException();
+        boolean adminOrDeveloperOrRoot = rightControlUtil.isAdminOrDeveloperOrRoot(sessionInfo.getUserId());
+        String parentId;
+        if (adminOrDeveloperOrRoot) {
+            //绯荤粺鑿滃崟
+            parentId = SYSTEMMANAGMENTNODE;
+        } else {
+            //鏅�氱敤鎴峰彧杩斿洖涓氬姟鍔熻兘妯″潡鐩稿叧鐨勮彍鍗�
+            parentId = ROOT_MENU_ID;
+        }
+        List<MenuVO> functionVOList = new ArrayList<>();
+        FunctionInfo[] moduleListByParentId = getModuleListByParentId(parentId, isAll);
+        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);
+            if(functionVO.getChildren().size() > 0){
+                functionVO.setHasChildren(true);
+            }else {
+                functionVO.setHasChildren(false);
+            }
+            functionVOList.add(functionVO);
+        }
+        return functionVOList;
+    }
+
+
+    /**
+     * 閫氳繃妯″潡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