From 9d92bb1d5698690bfd06fb93c668d9ae73300426 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期五, 13 十二月 2024 13:05:09 +0800
Subject: [PATCH] 添加按钮权限查询接口。 修改UI页面定义的属性字段。

---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/xmlmodel/UIComponentDefineXO.java                       |   12 +-
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/SmFunctionController.java                    |   10 ++
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java                   |    2 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/MenuVO.java                                   |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/ISmFunctionQueryService.java                    |   10 ++
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java                          |    6 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLDefinationVO.java                           |    4 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmFunctionQueryServicePlatformImpl.java    |  167 +++++++++++++++++++++++++++++++--
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java                  |    6 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UIComponentVO.java                            |   10 +-
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java |    6 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/RightControlUtil.java                              |   62 +++++++++---
 12 files changed, 245 insertions(+), 52 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/MenuVO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/MenuVO.java
index 88da7f8..0e7159d 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/MenuVO.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/MenuVO.java
@@ -126,7 +126,7 @@
 	private String modeType;
 
 	/**
-	 * 鍔熻兘绫诲瀷锛�0锛氬姛鑳借彍鍗曡妭鐐癸紝1锛氬垎绫�,3锛氭寜閽�
+	 * 鍔熻兘绫诲瀷锛�0锛氬姛鑳借彍鍗曡妭鐐癸紝1锛氬垎绫�
 	 */
 	private int functionType;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLDefinationVO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLDefinationVO.java
index 7c14a7a..344e808 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLDefinationVO.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLDefinationVO.java
@@ -176,12 +176,12 @@
     /**
      * cs绔娇鐢ㄧ殑鑷畾涔夋煡璇㈢被鍚嶆垨URL
      */
-    private String csCustQueryCLsOrUrl = "";
+    private String csDataModel = "";
 
     /**
      * bs绔娇鐢ㄧ殑鑷畾涔夋煡璇㈢被鍚嶆垨URL
      */
-    private String bsCustQueryCLsOrUrl = "";
+    private String bsDataModel = "";
 
     /**
      * 瀛怳I鐨勪笟鍔$被鍨�
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UIComponentVO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UIComponentVO.java
index a29911a..38752df 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UIComponentVO.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UIComponentVO.java
@@ -29,7 +29,7 @@
     /**
      * bs绔娇鐢ㄧ殑鑷畾涔夋煡璇㈢被鍚嶆垨URL
      */
-    private String bsCustQueryCLsOrUrl;
+    private String bsDataModel;
 
     /**
      * 鎵�灞炲尯鍩�
@@ -91,12 +91,12 @@
      */
     private List<UIButtonDefineVO> buttons;
 
-    public void setBsCustQueryCLsOrUrl(String bsCustQueryCLsOrUrl) {
-        this.bsCustQueryCLsOrUrl = bsCustQueryCLsOrUrl;
+    public void setBsDataModel(String bsDataModel) {
+        this.bsDataModel = bsDataModel;
     }
 
-    public String getBsCustQueryCLsOrUrl() {
-        return bsCustQueryCLsOrUrl;
+    public String getBsDataModel() {
+        return bsDataModel;
     }
 
     @Override
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/SmFunctionController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/SmFunctionController.java
index c7d0a5a..6a7c534 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/SmFunctionController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/SmFunctionController.java
@@ -47,6 +47,16 @@
 	}
 
 	/**
+	 * 鑾峰彇褰撳墠鐢ㄦ埛鐨勬墍鏈夋寜閽�
+	 * @param treeQueryObject 鏍戞煡璇㈠璞�
+	 * @return
+	 */
+	@GetMapping("/getAllButtons")
+	public BaseResult getAllButtons(TreeQueryObject treeQueryObject){
+		return BaseResult.dataList(functionQueryService.buttons(treeQueryObject));
+	}
+
+	/**
 	 * 鑾峰彇褰撳墠鐢ㄦ埛鐨勮彍鍗�
 	 * @param treeQueryObject 鏍戞煡璇㈠璞�
 	 * @return  鏍戣妭鐐癸紝鍑虹幇閿欒浼氬湪寮傚父澶勭悊鍣ㄤ腑缁熶竴杩斿洖Json
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/ISmFunctionQueryService.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/ISmFunctionQueryService.java
index f4284be..2850085 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/ISmFunctionQueryService.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/ISmFunctionQueryService.java
@@ -45,6 +45,14 @@
     List<SmFunctionVO> listFunctionByUserOid(String userOid, Map<String, String> queryMap, ResourceControlTypeEnum resourceControlTypeEnum);
 
     /**
+     * 鏍规嵁瑙掕壊杩斿洖鎵�鏈夋寜閽殑鏍戝舰缁撴瀯
+     *
+     * @param treeQueryObject
+     * @return
+     */
+    List<MenuVO> buttons(TreeQueryObject treeQueryObject);
+
+    /**
      * 鑾峰彇褰撳墠瑙掕壊鐨勮彍鍗�
      * @param treeQueryObject 灞炴�ф煡璇㈠璞�
      * @param resourceControlTypeEnum 瑙掕壊鎺у埗鍖哄煙锛屼篃鏄姛鑳芥帶鍒剁殑鍖哄煙
@@ -61,6 +69,7 @@
      * @throws VciBaseException
      */
     List<MenuVO> getSysModelTreeMenuByPID(String parentId,String modeType,boolean isAll) throws VciBaseException;
+
     /**
      * 閫氳繃妯″潡ID鑾峰彇瀛愮骇鍒楄〃
      * @param isAll 鏄惁鍖呮嫭鏃犳晥鐨勬ā鍧楋紝true鍒欏寘鎷�
@@ -176,6 +185,7 @@
      * @throws PLException
      */
     BaseResult saveRoleRight(List<RoleRightParamDTO> roleRightDTOS, String roleId) throws PLException;
+
     /**
      * 鑾峰彇鎵�鎺堟潈鐨勬ā鍧楁潈闄�
      * @param roleName 鎼滅储鐨勮鑹�
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java
index ea5ad21..f569136 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java
@@ -94,21 +94,21 @@
     DataGrid getTabByContextIdAndType(String contextId, int areaType) throws PLException;
 
     /**
-     * 娣诲姞鍖哄煙鏁版嵁
+     * 娣诲姞鍖哄煙锛堥〉绛撅級鏁版嵁
      * @param plTabPage
      * @return
      */
     boolean addTabData(PLTabPage plTabPage) throws PLException;
 
     /**
-     * 淇敼鍖哄煙鏁版嵁
+     * 淇敼鍖哄煙锛堥〉绛撅級鏁版嵁
      * @param plTabPage
      * @return
      */
     boolean updateTabData(PLTabPage plTabPage) throws PLException;
 
     /**
-     * 鍒犻櫎鍖哄煙鏁版嵁
+     * 鍒犻櫎鍖哄煙锛堥〉绛撅級鏁版嵁
      * @param oids
      * @return
      */
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmFunctionQueryServicePlatformImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmFunctionQueryServicePlatformImpl.java
index dc8ea53..9de09f6 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmFunctionQueryServicePlatformImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmFunctionQueryServicePlatformImpl.java
@@ -150,6 +150,155 @@
     }
 
     /**
+     * 鏍规嵁鐢ㄦ埛杩斿洖鎵�鏈夎彍鍗曚笅鐨勬寜閽紙鏍戝舰缁撴瀯锛�
+     *
+     * @param treeQueryObject
+     * @return
+     */
+    @Override
+    public List<MenuVO> buttons(TreeQueryObject treeQueryObject) {
+        //1銆佸厛鏍规嵁session鍒ゆ柇褰撳墠鐢ㄦ埛绫诲瀷
+        SessionInfo sessionInfo = WebUtil.getCurrentUserSessionInfoNotException();
+        boolean adminOrDeveloperOrRoot = rightControlUtil.isAdminOrDeveloperOrRoot(sessionInfo.getUserId());
+        String parentId;
+        //2銆佹牴鎹笉鍚岀敤鎴疯繑鍥炰笉鍚岀殑鑺傜偣涓嬬殑鑿滃崟鍜屾寜閽�
+        if (adminOrDeveloperOrRoot) {
+            //绯荤粺鑿滃崟
+            parentId = SYSTEMMANAGMENTNODE;
+        } else if (rightControlUtil.isThreeAdminCurUser()) {
+            //涓夊憳杩斿洖绠$悊鍔熻兘妯″潡鐩稿叧鐨勮彍鍗�
+            parentId = SYSTEMMANAGMENTNODE;
+        } else {
+            // 鏅�氱敤鎴峰彧杩斿洖涓氬姟鍔熻兘妯″潡鐩稿叧鐨勮彍鍗曪紝
+            // 浣嗗彲鑳藉瓨鍦ㄦ櫘閫氱敤鎴峰垎閰嶇郴缁熷姛鑳界殑鑿滃崟鍜屾寜閽潈闄愶紝涓嶈繃闇�瑕�
+            // 鍐嶄笟鍔″姛鑳芥ā鍧椾笅鍒涘缓瀵瑰簲鐨勭鐞嗗姛鑳芥ā鍧楃殑鑿滃崟骞惰繘琛屾巿鏉冦��
+            parentId = ROOT_MENU_ID;
+        }
+        RoleRightInfo[] userRoleRights = rightControlUtil.getRoleRightByUserName(sessionInfo.getUserId());
+        //3銆佹牴鎹鑹叉煡璇㈠嚭瀵瑰簲鐨勭埗鑺傜偣涓嬬殑鎵�鏈夌殑鑿滃崟锛岀劧鍚庡啀鑾峰彇鑿滃崟涓嬬殑鎵�鏈夋寜閽�
+        //List<FunctionInfo>  menuList = rightControlUtil.getMenusByPIdAndPermission(parentId, sessionInfo.getUserId(),userRoleRights);
+        Map<String, List<FunctionInfo>> map = rightControlUtil.getAllChildrenFunctionsByUserName(
+                parentId, sessionInfo.getUserId(), userRoleRights);
+        List<MenuVO> functionVOList = new ArrayList<>();
+        //4銆佸厛鑾峰彇parentid瀵瑰簲鐨勮彍鍗曪紝鍐嶈幏鍙栨瘡涓�灞傚瓙鑺傜偣锛屽悓鏃惰繃婊ゆ帀鎸夐挳鏈惎鐢ㄧ殑鍔熻兘妯″潡
+        for (FunctionInfo menu : map.get(parentId)) {
+            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.setFunctionType(menu.functionType);
+            functionVO.setIsValid(menu.isValid);
+            functionVO.getMeta().put("keepAlive",false);
+            functionVO.setSort((int) menu.seq);
+            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 {
+                functionVO.setHasChildren(false);
+            }
+            functionVOList.add(functionVO);
+        }
+        //6銆佽繃婊ゅ嚭瀹為檯鐨勮彍鍗曡妭鐐�
+        List<MenuVO> menuVOList = new ArrayList<>();
+        recursionFunction(functionVOList,menuVOList);
+        // 5銆佸鐞嗘瘡涓�涓彍鍗曚笅闇�瑕佽繑鍥炵殑鎸夐挳
+        menuVOList.stream().forEach(menuVO -> {
+            try {
+                //6銆佽幏鍙栧綋鍓嶈彍鍗曚笅鐨勬寜閽�
+                Map<String, Long> authMap = Arrays.stream(userRoleRights).collect(Collectors.toMap(e -> e.funcId, e -> e.rightValue,
+                        (existing, replacement) -> existing));
+                menuVO.setChildren(getButtonsByAuth(menuVO.getId(),adminOrDeveloperOrRoot,authMap));
+            } catch (PLException e) {
+                e.printStackTrace();
+                String errorMsg = "鎸夐挳鏌ヨ鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + VciBaseUtil.getExceptionMessage(e);
+                logger.error(errorMsg);
+                throw new VciBaseException(errorMsg);
+            }
+        });
+        return menuVOList;
+    }
+
+    /**
+     * 杩囨护鍑鸿彍鍗曞彧杩斿洖鑿滃崟鑺傜偣
+     * @param sourceList
+     * @param targetList
+     */
+    private static void recursionFunction(List<MenuVO> sourceList, List<MenuVO> targetList) {
+        for (MenuVO menu : sourceList) {
+            // 妫�鏌unctionType鏄惁涓�0
+            if (menu.getFunctionType() == 0) {
+                targetList.add(menu);
+            }
+            // 閫掑綊澶勭悊children
+            recursionFunction(menu.getChildren(), targetList);
+        }
+    }
+
+    /**
+     * 鏍规嵁鑿滃崟涓婚敭鍜岃鑹叉潈闄愯幏鍙栧叾涓嬬殑鎸夐挳
+     * @param parentOid
+     * @return
+     * @throws PLException
+     */
+    private List<MenuVO> getButtonsByAuth(String parentOid,boolean adminOrDeveloperOrRoot,Map<String, Long> authMap) throws PLException {
+        List<MenuVO> buttonList = new ArrayList<>();
+        if(Func.isBlank(parentOid)){
+            return buttonList;
+        }
+        FuncOperationInfo[] funcOperates = platformClientUtil.getFrameworkService().getFuncOperationByModule(parentOid, "", true);
+        List<FuncOperationInfo> funcOperationList = new ArrayList<>();
+        if(!adminOrDeveloperOrRoot){
+            for (int i = 0; i < funcOperates.length; i++) {
+                if(authMap.containsKey(funcOperates[i].funcId)){
+                    long rightValue = authMap.get(funcOperates[i].funcId);
+                    long nodeValue = funcOperates[i].number;
+                    long preValue = (rightValue >> nodeValue) & 1;
+                    //杩涜浣嶄笌鎿嶄綔锛屽鏋滅浉绛夊垯琛ㄧず鍏锋湁褰撳墠鎿嶄綔鐨勬潈闄�
+                    if (preValue == 1) {
+                        funcOperationList.add(funcOperates[i]);
+                    }
+                }
+            }
+        }else{
+            funcOperationList = Arrays.asList(funcOperates);
+        }
+        if(Func.isNotEmpty(funcOperationList)){
+            for(FuncOperationInfo info: funcOperationList){
+                MenuVO menuVO = new MenuVO();
+                menuVO.setChildType(0);
+                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.setIsValid(info.isValid);
+                menuVO.setHasChildren(false);
+                menuVO.setCategory(1);
+                menuVO.setFunctionType(2);
+                buttonList.add(menuVO);
+            }
+        }
+        return buttonList;
+    }
+
+    /**
      * 鍘熷钩鍙板姛鑳借浆鎹负鏂板钩鍙扮殑鍔熻兘
      * @param functionForPlatform1List 鍘熷钩鍙板姛鑳藉璞″垪琛�
      * @return 鏂板钩鍙板姛鑳藉璞�
@@ -281,7 +430,7 @@
             }
             functionVOList.add(functionVO);
         }
-        //濡傛灉鏄紑鍙戞垨鑰呮祴璇曠敤鎴凤紝闇�鍝熻幏鍙栫郴缁熸ā鍧楅厤缃彍鍗�
+        //濡傛灉鏄紑鍙戞垨鑰呮祴璇曠敤鎴凤紝闇�瑕佽幏鍙栫郴缁熸ā鍧楅厤缃彍鍗�
         if(adminOrDeveloperOrRoot){
             //鑾峰彇棣栭〉绯荤粺妯″潡閰嶇疆鑿滃崟
             MenuVO menuVO = JsonConfigReader.getSysModuleConf().getSysModuleNode();
@@ -315,7 +464,7 @@
                     if(childType == 2){
                         try{
                             FuncOperationInfo[] infos = platformClientUtil.getFrameworkService().getFuncOperationByModule(parentId, "", false);
-                            if(Func.isNotEmpty(infos.length)){
+                            if(Func.isNotEmpty(infos)){
                                 childType = this.checkChildObject(infos[0].id); //閮芥槸鍚屼竴灞傛墍浠ュ彇绗竴涓嵆鍙煡璇㈡槸浠�涔堢被鍨�
                                 for(int i = 0;i < infos.length ;i++){
                                     FuncOperationInfo info = infos[i];
@@ -333,7 +482,7 @@
                                     menuVO.setIsValid(info.isValid);
                                     menuVO.setHasChildren(false);
                                     menuVO.setCategory(1);
-                                    menuVO.setFunctionType(2);
+                                    menuVO.setFunctionType(3);
                                     menuVOList.add(menuVO);
                                 }
                             }
@@ -436,8 +585,7 @@
      * @param funcInfo
      * @return
      */
-    private MenuVO functionInfoToMenuVO(FunctionInfo funcInfo)
-    {
+    private MenuVO functionInfoToMenuVO(FunctionInfo funcInfo) {
         MenuVO menuVO = new MenuVO();
         menuVO.setId(funcInfo.id);
         menuVO.setIsValid(funcInfo.isValid);
@@ -493,9 +641,7 @@
             functionVO.setId(menu.id);
             functionVO.setSource(menu.image);
             functionVO.setFunctionType(menu.functionType);
-//            if(StringUtils.isBlank(menu.resourceB) ){
-//                continue;
-//            }
+            functionVO.setIsValid(menu.isValid);
             functionVO.setPath(menu.resourceB);
             functionVO.setCode(menu.aliasName);
             functionVO.setAlias(menu.aliasName);
@@ -600,7 +746,7 @@
         List<String> authList = new ArrayList<>();
         for (FunctionInfo functionInfo : moduleListByParentId) {
             if(authMap.containsKey(functionInfo.id)){
-//                authList.add(functionInfo.id);
+                // authList.add(functionInfo.id);
                 getChildAuthNode(functionInfo, authMap, authList);
             }
         }
@@ -1090,7 +1236,6 @@
 
     }
 
-
     /**
      * 閫氳繃妯″潡ID鑾峰彇瀛愮骇鍒楄〃
      * @param isAll 鏄惁鍖呮嫭鏃犳晥鐨勬ā鍧楋紝true鍒欏寘鎷�
@@ -1136,7 +1281,6 @@
         return functionVOList;
     }
 
-
     /**
      * 閫氳繃妯″潡ID鑾峰彇瀛愮骇鍒楄〃
      * @param parentId
@@ -1149,4 +1293,5 @@
         funcInfos = platformClientUtil.getFrameworkService().getModuleListByParentId(parentId, isAll);
         return funcInfos;
     }
+
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java
index 9d06303..27f98b1 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java
@@ -1255,7 +1255,7 @@
 				return  null;
 			}
 			//鑷畾涔夋煡璇㈡柟寮�
-			componentVO.setBsCustQueryCLsOrUrl(componentDefineXO.getBsCustQueryCLsOrUrl());
+			componentVO.setBsDataModel(componentDefineXO.getBsDataModel());
 			//涔嬪墠鐨勭被鍨嬬殑鍊兼槸1锛�2锛�3绛夌湅鐫�涓嶇洿瑙�
 			UIComponentTypeEnum componentTypeEnum = null;
 			if("1".equals(componentDefineXO.getTemplateType())){
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java
index 8def5a8..769c3ae 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java
@@ -843,7 +843,7 @@
     }
 
     /**
-     * 鏍规嵁涓婁笅鏂嘔D鍜屽尯鍩熺被鍨嬶紝鎸夐『搴忚幏鍙栧綋鍓嶅尯鍩熺殑tab椤�
+     * 鏍规嵁涓婁笅鏂嘔D鍜屽尯鍩燂紙椤电锛夌被鍨嬶紝鎸夐『搴忚幏鍙栧綋鍓嶅尯鍩熺殑tab椤�
      */
     @Override
     public DataGrid getTabByContextIdAndType(String contextId, int areaType) throws PLException {
@@ -874,7 +874,7 @@
     }
 
     /**
-     * 淇敼鍖哄煙鏁版嵁
+     * 淇敼鍖哄煙锛堥〉绛撅級鏁版嵁
      * @param plTabPage
      * @return
      */
@@ -891,7 +891,7 @@
     }
 
     /**
-     * 鍒犻櫎鍖哄煙鏁版嵁
+     * 鍒犻櫎鍖哄煙锛堥〉绛撅級鏁版嵁
      * @param oids
      * @return
      */
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java
index dca912d..309a647 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java
@@ -157,7 +157,7 @@
         //鍏堝垽鏂煡璇㈡ā鏉挎槸鍚﹂厤缃簡鑷畾涔夋煡璇㈢被
         UIComponentVO componentVO = uiEngineService.getComponentByOid(dataGridQuery.getComponentOid(), null);
         UITableDefineVO tableDefineVO = componentVO.getTableDefineVO();
-        String bsCustQueryCLsOrUrl = componentVO.getBsCustQueryCLsOrUrl();
+        String bsCustQueryCLsOrUrl = componentVO.getBsDataModel()   ;
         // TODO: 2024/12/5 Ludc 鏍规嵁UI閰嶇疆鐨勮繘琛屽垽鏂槸鍚︿娇鐢ㄨ嚜瀹氫箟绫昏繘琛屾煡璇�(鑷畾涔夌被鏌ヨ鏂瑰紡浼樺厛绾ч珮浜庢煡璇㈡ā鏉�)
         if(Func.isNotBlank(bsCustQueryCLsOrUrl) && isCustomClass(bsCustQueryCLsOrUrl)){
             //閫氳繃鍙嶅皠璋冪敤bsCustQueryCLsOrUrl涓畾涔夌殑鏈嶅姟绫讳腑鐨勬煡璇㈡柟娉�
@@ -259,7 +259,7 @@
         //鍏堝垽鏂煡璇㈡ā鏉挎槸鍚﹂厤缃簡鑷畾涔夋煡璇㈢被
         UIComponentVO componentVO = uiEngineService.getComponentByOid(formQuery.getComponentOid(), null);
         //UIFormDefineVO formDefineVO = uiEngineService.getFormById(formQuery.getBtmName(),formQuery.getFormDefineId());
-        String bsCustQueryCLsOrUrl = componentVO.getBsCustQueryCLsOrUrl();
+        String bsCustQueryCLsOrUrl = componentVO.getBsDataModel();
         if(Func.isNotBlank(bsCustQueryCLsOrUrl) && isCustomClass(bsCustQueryCLsOrUrl)){
             //閫氳繃鍙嶅皠璋冪敤bsCustQueryCLsOrUrl涓畾涔夌殑鏈嶅姟绫讳腑鐨勬煡璇㈡柟娉�
             try {
@@ -417,7 +417,7 @@
         if(componentVO == null || StringUtils.isBlank(componentVO.getOid())){
             throw new VciBaseException("鏍戠殑閰嶇疆淇℃伅娌℃湁鑾峰彇鍒�");
         }
-        String bsCustQueryCLsOrUrl = componentVO.getBsCustQueryCLsOrUrl();
+        String bsCustQueryCLsOrUrl = componentVO.getBsDataModel();
         if(Func.isNotBlank(bsCustQueryCLsOrUrl) && isCustomClass(bsCustQueryCLsOrUrl)){
             //閫氳繃鍙嶅皠璋冪敤bsCustQueryCLsOrUrl涓畾涔夌殑鏈嶅姟绫讳腑鐨勬煡璇㈡柟娉�
             try {
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/RightControlUtil.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/RightControlUtil.java
index 2037c31..896915e 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/RightControlUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/RightControlUtil.java
@@ -9,15 +9,12 @@
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Component
 public class RightControlUtil {
-
 
     @Resource
     private PlatformClientUtil platformClientUtil;
@@ -25,11 +22,17 @@
     // add by xchao 2012.09.20 缁熶竴褰掓暣绠$悊鍛樸�佸紑鍙戣�呯敤鎴峰垽鏂�
     // 浠ヤ究灏嗘潵鏈夊彲鑳戒慨鏀圭鐞嗗憳銆佸紑鍙戣�呯敤鎴凤紝瀵逛簬鍒ゆ柇渚濈劧鏈夋晥
     private static String userAdminEnum = "user.admin";
+
     private String userNameAdmin = null;
+
     private static String userDeveloperEnum = "user.developer";
+
     private String userNameDeveloper = null;
+
     private String userNameRoot = null;
+
     private static String userRootEnum = "user.rooter";
+
     public boolean isAdmin(String userName){
         return userName.equals(getUserNameAdmin(userAdminEnum));
     }
@@ -70,6 +73,7 @@
         }
         return userNameAdmin;
     }
+
     /**
      * 鑾峰彇閰嶇疆鐨勫紑鍙戜汉鍛�
      * @param key 閰嶇疆key
@@ -168,7 +172,7 @@
             if (mapRight.containsKey(right.funcId)) {
                 lstRight = mapRight.get(right.funcId);
             } else {
-                lstRight = new ArrayList<RoleRightInfo>();
+                lstRight = new ArrayList<>();
             }
             lstRight.add(right);
             mapRight.put(right.funcId, lstRight);
@@ -197,18 +201,8 @@
                 else{
                     if (lstRight.size() > 0)
                         isHasRight = true;
-//					for (int j = 0; j < lstRight.size(); j++) {
-//						long lRight = lstRight.get(j).getRightValue();
-//						if (lRight != 0){
-//							isHasRight = true;
-//							//System.out.println("      === 鏈夋巿鏉�");
-//
-//							break;
-//						}
-//					}
                 }
             }
-
             if (!isHasRight) {
                 continue;
             }
@@ -227,7 +221,6 @@
         return map;
     }
 
-
     public FunctionInfo[] getFunctionsByParentId(String parentId, String userName) {
         FunctionInfo[] funcObjs =  null;
         try {
@@ -241,6 +234,40 @@
             log.error(e.code, e.messages);
         }
         return funcObjs;
+    }
+
+    /**
+     * 鏍规嵁鐖朵富閿拰鐢ㄦ埛浠ュ強瑙掕壊淇℃伅鏉ヨ繑鍥炶彍鍗曟暟鎹�
+     * @param parentId
+     * @param userName
+     * @param userRoleRights
+     * @return
+     */
+    public List<FunctionInfo> getMenusByPIdAndPermission(String parentId, String userName,RoleRightInfo[] userRoleRights) {
+        Map<String, List<RoleRightInfo>> mapRight = new LinkedHashMap<String, List<RoleRightInfo>>();
+        for (int i = 0; i < userRoleRights.length; i++) {
+            RoleRightInfo right = userRoleRights[i];
+
+            List<RoleRightInfo> lstRight = null;
+            if (mapRight.containsKey(right.funcId)) {
+                lstRight = mapRight.get(right.funcId);
+            } else {
+                lstRight = new ArrayList<>();
+            }
+            lstRight.add(right);
+            mapRight.put(right.funcId, lstRight);
+        }
+        FunctionInfo[] functionInfos = this.getFunctionsByParentId(parentId, userName);
+        boolean isAllShow = isDeveloper(userName) || isAdmin(userName) || !isFunctionSwithOn();
+
+        List<FunctionInfo> functionInfoList = Arrays.stream(functionInfos).filter(menu -> {
+            // 鍙繑鍥炴湁鏁堜笖鏄彍鍗曠殑鑺傜偣
+            if ((menu.isValid && menu.functionType == 0) && (mapRight.containsKey(menu.id) || isAllShow)) {
+                return true;
+            }
+            return false;
+        }).collect(Collectors.toList());
+        return functionInfoList;
     }
 
     /**
@@ -261,4 +288,5 @@
 
         return false;
     }
+
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/xmlmodel/UIComponentDefineXO.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/xmlmodel/UIComponentDefineXO.java
index f20a22f..ebb0e18 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/xmlmodel/UIComponentDefineXO.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/xmlmodel/UIComponentDefineXO.java
@@ -165,7 +165,7 @@
     /**
      * bs绔娇鐢ㄧ殑鑷畾涔夋煡璇㈢被鍚嶆垨URL
      */
-    private String bsCustQueryCLsOrUrl;
+    private String bsDataModel;
 
     public String getType() {
         return type;
@@ -399,12 +399,12 @@
         this.queryTemplateName = queryTemplateName;
     }
 
-    public void setBsCustQueryCLsOrUrl(String bsCustQueryCLsOrUrl) {
-        this.bsCustQueryCLsOrUrl = bsCustQueryCLsOrUrl;
+    public void setBsDataModel(String bsDataModel) {
+        this.bsDataModel = bsDataModel;
     }
 
-    public String getBsCustQueryCLsOrUrl() {
-        return bsCustQueryCLsOrUrl;
+    public String getBsDataModel() {
+        return bsDataModel;
     }
 
     @Override
@@ -439,7 +439,7 @@
                 ", UIParser='" + UIParser + '\'' +
                 ", extAttr='" + extAttr + '\'' +
                 ", queryTemplateName='" + queryTemplateName + '\'' +
-                ", bsCustQueryCLsOrUrl='" + bsCustQueryCLsOrUrl + '\'' +
+                ", bsDataModel='" + bsDataModel + '\'' +
                 '}';
     }
 }

--
Gitblit v1.9.3