From 52874e13b27f92bc21b0a3b079077739841ebdb3 Mon Sep 17 00:00:00 2001 From: 田源 <lastanimals@163.com> Date: 星期三, 23 十月 2024 17:07:41 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java | 80 ++++++++++++++++++++++++++++------------ 1 files changed, 56 insertions(+), 24 deletions(-) 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 3f4e4fe..093939e 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 @@ -1,5 +1,7 @@ package com.vci.web.service.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.vci.common.utility.ObjectUtility; import com.vci.corba.common.PLException; import com.vci.corba.common.data.UserEntityInfo; @@ -1776,18 +1778,29 @@ treeQueryObject.setConditionMap(conditionMap); List<Tree> treeList = this.getUIAuthor(treeQueryObject); HashMap<String,Tree> allTreeMap = new HashMap<>(); - Map<String,RoleRightDTO> roleRightVOMap = new HashMap<>(); + //Map<String,RoleRightDTO> roleRightVOMap = new HashMap<>(); if(!CollectionUtil.isEmpty(treeList)){ - if(StringUtils.isNotBlank(uiAuthorDTO.getRoleId())){ + /*if(StringUtils.isNotBlank(uiAuthorDTO.getRoleId())){ String userName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); RoleRightInfo[] rightInfos = platformClientUtil.getFrameworkService().getRoleRightList(uiAuthorDTO.getRoleId(),userName); List<RoleRightVO> roleRightVOList = roleRightDOO2VOS(Arrays.asList(rightInfos)); roleRightVOMap = roleRightVOList.stream().collect(Collectors.toMap(RoleRightVO::getFuncId,roleRightVO ->roleRightVOO2DTO(roleRightVO),(oldValue,newValue)->oldValue)); - } + }*/ + convertTreeDOO2Map(treeList,allTreeMap); List<RoleRightDTO> roleRightDTOList = new ArrayList<>(); List<Tree> selectTreeList = uiAuthorDTO.getSelectTreeList(); - getSelectedRoleRightObjs(uiAuthorDTO.getRoleId(),selectTreeList,allTreeMap,roleRightVOMap,roleRightDTOList); + List<Tree> filterSelectTreeList = this.authTreeListConvert(selectTreeList); + //杩囨护鍑洪�夋嫨鐨勬寜閽� + List<String> checkButtonList = new ArrayList<>(); + selectTreeList.stream().forEach(item->{ + Object data = item.getData(); + if(data instanceof PLTabButton || item.isLeaf()){ + checkButtonList.add(item.getOid()); + } + }); + + getSelectedRoleRightObjs(uiAuthorDTO.getRoleId(),filterSelectTreeList,checkButtonList,allTreeMap,roleRightDTOList); SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); String currentUserName = sessionInfo.getUserId(); //boolean isDeveloper = rightControlUtil.isDeveloper(currentUserName); @@ -1805,26 +1818,42 @@ } /** + * 鑾峰彇绛涢�夊悗鐨勬暟鎹� + * @param selectTreeList + */ + private List<Tree> authTreeListConvert(List<Tree> selectTreeList){ + // 鍒涘缓涓�涓寘鍚彟涓�涓泦鍚堜腑婊¤冻鏉′欢鐨� oid 鐨勯泦鍚� + List<String> validOids = selectTreeList.stream() + .filter(Tree::isChecked) // checked 涓� true + .map(Tree::getOid) // 鎻愬彇 oid + .collect(Collectors.toList()); + + return selectTreeList.stream() + .filter(tree -> tree.isChecked() && !validOids.contains(tree.getParentId())) // 杩囨护鏉′欢 + .collect(Collectors.toList()); + } + + /** *鏍规嵁鏉冮檺璁$畻涓婁笅鏉冮檺 * @param roleOid * @param selectTreeList * @param allTreeMap * @param roleRightDTOList */ - private void getSelectedRoleRightObjs(String roleOid, List<Tree> selectTreeList, HashMap<String,Tree> allTreeMap, Map<String,RoleRightDTO> allRoleRightDTOMap, List<RoleRightDTO> roleRightDTOList){ - //Date date=new Date(); + private void getSelectedRoleRightObjs(String roleOid, List<Tree> selectTreeList, List<String> checkButtonList, HashMap<String,Tree> allTreeMap, List<RoleRightDTO> roleRightDTOList){ Map<String,RoleRightDTO> roleRightDTOMap = new HashMap<>(); + if(!CollectionUtil.isEmpty(selectTreeList)){ selectTreeList.stream().forEach(tree -> { String oid = tree.getOid(); if(allTreeMap.containsKey(oid)){ tree = allTreeMap.get(oid); - Object data = tree.getData(); + Object data = tree.getData(); if (data instanceof String) { - getRightValue(roleOid, tree, allTreeMap, false, roleRightDTOMap);//鍚戜笅鑾峰彇鎵�鏈夋ā鍧楃殑鏉冮檺鍊� + getRightValue(roleOid, tree, allTreeMap, checkButtonList,false, roleRightDTOMap);//鍚戜笅鑾峰彇鎵�鏈夋ā鍧楃殑鏉冮檺鍊� } else if (!(data instanceof PLTabButton)) {//涓氬姟绫诲瀷 - getRightValue(roleOid, tree, allTreeMap, true, roleRightDTOMap);//鍚戜笂澶勭悊 - getRightValue(roleOid, tree, allTreeMap, false, roleRightDTOMap);//鍚戜笅澶勭悊锛堝寘鍚綋鍓嶈妭鐐癸級 + getRightValue(roleOid, tree, allTreeMap, checkButtonList, true, roleRightDTOMap);//鍚戜笂澶勭悊 + getRightValue(roleOid, tree, allTreeMap, checkButtonList, false, roleRightDTOMap);//鍚戜笅澶勭悊锛堝寘鍚綋鍓嶈妭鐐癸級 } else if (data instanceof PLTabButton) {//鎸夐挳 String parrentId=tree.getParentId(); if(allTreeMap.containsKey(parrentId)){ @@ -1833,7 +1862,7 @@ boolean isDeveloper = rightControlUtil.isDeveloper(currentUserName); Tree parentNode= allTreeMap.get(parrentId); String funcId = parentNode.getOid(); - getRightValue(roleOid, tree, allTreeMap, true, roleRightDTOMap);//鍚戜笂澶勭悊璇ユ搷浣滅埗绾х殑涓婄骇妯″潡鏉冮檺(涓嶅寘鍚埗鑺傜偣) + getRightValue(roleOid, parentNode, allTreeMap, checkButtonList, true, roleRightDTOMap);//鍚戜笂澶勭悊璇ユ搷浣滅埗绾х殑涓婄骇妯″潡鏉冮檺(涓嶅寘鍚埗鑺傜偣) if(!roleRightDTOMap.containsKey(funcId)){ RoleRightDTO roleRightDTO = new RoleRightDTO(); roleRightDTO.setId(ObjectUtility.getNewObjectID36());//涓婚敭 @@ -1844,7 +1873,7 @@ }else{ roleRightDTO.setRightType((short) 2); } - roleRightDTO.setRightValue(1);// 鏉冮檺鍊硷紝娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0 + roleRightDTO.setRightValue(countRightValue(parentNode,checkButtonList,false));// 鏉冮檺鍊硷紝娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0 roleRightDTO.setRoleId(roleOid);//瑙掕壊ID roleRightDTO.setCreateUser(currentUserName);//鍒涘缓鑰� roleRightDTO.setCreateTime(VciDateUtil.date2Str(new Date(),""));//鍒涘缓鏃堕棿 @@ -1873,16 +1902,18 @@ * 鑾峰彇鏉冮檺 * @param isUp 鏄惁鏄悜涓婅幏鍙栵紝濡傛灉鏄悜涓婅幏鍙栵紝浼犺繘鏉ョ殑蹇呯劧鏄ā鍧楄妭鐐癸紝涓斾笂绾фā鍧楀繀鐒舵槸娌℃湁閫変腑 */ - private void getRightValue(String roleId,Tree node,HashMap<String,Tree> allTreeMap,boolean isUp,Map<String,RoleRightDTO> rightMap){ + private void getRightValue(String roleId,Tree node,Map<String,Tree> allTreeMap,List<String> checkButton,boolean isUp,Map<String,RoleRightDTO> rightMap){ SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); String currentUserName = sessionInfo.getUserId(); boolean isDeveloper= rightControlUtil.isDeveloper(currentUserName); String id=ObjectUtility.getNewObjectID36(); Object data=node.getData(); if(isUp) {//鍚戜笂鑾峰彇锛屽瓨鍌ㄦ瘡涓笂绾фā鍧楃殑鏉冮檺鍊� - while (!"root".equals(node.getData())){ - data=node.getData(); - String oid=node.getOid(); + String parentId = node.getParentId(); + Tree parentNode = allTreeMap.get(parentId); + while (!"root".equals(parentNode.getData())){ + data=parentNode.getData(); + String oid=parentNode.getOid(); if(allTreeMap.containsKey(oid)){ String funcId = ""; if (data instanceof BizType) { @@ -1919,9 +1950,9 @@ if(!rightMap.containsKey(funcId)){ rightMap.put(funcId, roleRightDTO); } - oid= node.getParentId(); + oid = parentNode.getParentId(); if(allTreeMap.containsKey(oid)) { - node=allTreeMap.get(oid); + parentNode = allTreeMap.get(oid); } } } @@ -1965,14 +1996,14 @@ } for (int i = 0; i < node.getChildren().size(); i++) { //瀵规瘡涓瓙鍚戜笅閫掑綊閬嶅巻 - getRightValue(roleId, node.getChildren().get(i), allTreeMap, false, rightMap); + getRightValue(roleId, node.getChildren().get(i), allTreeMap, checkButton,false, rightMap); } } else { if (!rightMap.containsKey(funcId)) { RoleRightDTO roleRightDTO = new RoleRightDTO(); roleRightDTO.setFuncId(funcId); roleRightDTO.setRightType((short) 2); // 璁剧疆UI鏉冮檺 - roleRightDTO.setRightValue(countRightValue(node, true));//娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0 + roleRightDTO.setRightValue(countRightValue(node, checkButton,true));//娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0 roleRightDTO.setRoleId(roleId); roleRightDTO.setCreateUser(currentUserName); @@ -1992,12 +2023,13 @@ * @param isAll 鏄惁瀛愮骇鍏ㄩ儴閫変腑 * @return */ - private long countRightValue(Tree node,boolean isAll){ + private long countRightValue(Tree node,List<String> checkButton,boolean isAll){ long value = 0; - for(int i = 0;i < node.getChildren().size();i++){ + for(int i = 0; i < node.getChildren().size(); i++){ Tree childNode = (Tree)node.getChildren().get(i); - if(isAll && node.getData() instanceof PLTabButton ){ - PLTabButton obj = (PLTabButton)node.getData(); + //node.getData() instanceof PLTabButton杩欏効搴旇鎹㈡垚鏄惁鏄�変腑鐨勬寜閽妭鐐� + if(isAll || checkButton.contains(node.getOid())){ + PLTabButton obj = (PLTabButton)childNode.getData(); value += (long)Math.pow(2, obj.plSeq);//绱鍔犱笂鍚勪釜鎿嶄綔鐨勬潈闄愬�� } } -- Gitblit v1.9.3