ludc
2024-10-22 b73a1b5eb0c4a974cb5b16ccddb582f60347707c
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java
@@ -1776,18 +1776,20 @@
        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> selectTreeList2 = this.authTreeListConvert(selectTreeList);
            getSelectedRoleRightObjs_old(uiAuthorDTO.getRoleId(),selectTreeList2,allTreeMap,roleRightDTOList);
            SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
            String currentUserName = sessionInfo.getUserId();
            //boolean isDeveloper = rightControlUtil.isDeveloper(currentUserName);
@@ -1805,14 +1807,30 @@
    }
    /**
     * 获取筛选后的数据
     * @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_old(String roleOid, List<Tree> selectTreeList, HashMap<String,Tree> allTreeMap, List<RoleRightDTO> roleRightDTOList){
        Map<String,RoleRightDTO> roleRightDTOMap = new HashMap<>();
        if(!CollectionUtil.isEmpty(selectTreeList)){
            selectTreeList.stream().forEach(tree -> {
@@ -1844,7 +1862,7 @@
                                }else{
                                    roleRightDTO.setRightType((short) 2);
                                }
                                roleRightDTO.setRightValue(1);// 权限值,没有操作的模块权限值存储为0
                                roleRightDTO.setRightValue(countRightValue(parentNode,false));// 权限值,没有操作的模块权限值存储为0
                                roleRightDTO.setRoleId(roleOid);//角色ID
                                roleRightDTO.setCreateUser(currentUserName);//创建者
                                roleRightDTO.setCreateTime(VciDateUtil.date2Str(new Date(),""));//创建时间
@@ -1994,10 +2012,10 @@
     */
    private long countRightValue(Tree node,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();
            if(isAll || node.getData() instanceof PLTabButton ){
                PLTabButton obj = (PLTabButton)childNode.getData();
                value += (long)Math.pow(2, obj.plSeq);//累计加上各个操作的权限值
            }
        }