Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmRoleQueryServiceImpl.java
@@ -1,11 +1,14 @@
package com.vci.frameworkcore.compatibility.impl;
import com.vci.corba.common.PLException;
import com.vci.corba.common.data.UserEntityInfo;
import com.vci.corba.omd.data.BusinessObject;
import com.vci.frameworkcore.compatibility.SmRoleQueryServiceI;
import com.vci.frameworkcore.constant.FrameWorkBtmTypeConstant;
import com.vci.frameworkcore.enumpck.RoleClassifyEnum;
import com.vci.frameworkcore.enumpck.RoleControlAreaEnum;
import com.vci.frameworkcore.model.SmRoleForPlatform1;
import com.vci.frameworkcore.pagemodel.OrgDepartmentVO;
import com.vci.frameworkcore.pagemodel.SmRoleVO;
import com.vci.omd.utils.ObjectTool;
import com.vci.starter.web.constant.QueryOptionConstant;
@@ -18,6 +21,7 @@
import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
import com.vci.web.properties.WebProperties;
import com.vci.web.service.WebBoServiceI;
import com.vci.web.util.Func;
import com.vci.web.util.PlatformClientUtil;
import com.vci.web.util.WebUtil;
import org.apache.commons.lang3.StringUtils;
@@ -26,6 +30,7 @@
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
@@ -45,6 +50,12 @@
   private WebBoServiceI boService;
   /**
    * 平台调用客户端
    */
   @Autowired
   private PlatformClientUtil platformClientUtil;
   /**
     * 根据角色主键获取角色的信息
     * @param roleOid 角色主键
     * @return 角色的显示对象,如果角色不存在则返回null,不会抛出异常
@@ -61,6 +72,7 @@
      }
      return platformRole2SmRoleVO(role);
   }
   /**
     * 批量获取角色的信息 (根据角色主键)
     * @param roleOidCollections 角色主键的集合,可以超过1000个
@@ -84,6 +96,7 @@
      });
      return    platformRole2SmRoleVOs(roles);
   }
   /**
     * 获取角色的列表,默认会以角色名升序排列,角色的编辑页面列表不要使用这个接口
     * @param queryMap 查询条件
@@ -92,15 +105,13 @@
     * @throws VciBaseException 参数为空的时候会抛出异常
     */
   @Override
   public DataGrid<SmRoleVO> gridRoles(Map<String, String> queryMap,
                              PageHelper pageHelper) throws VciBaseException {
   public DataGrid<SmRoleVO> gridRoles(Map<String, String> queryMap, PageHelper pageHelper) throws VciBaseException {
      if(pageHelper == null){
         pageHelper = new PageHelper(-1);
      }
      pageHelper.addDefaultAsc("plname");
      VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(queryMap,SmRoleForPlatform1.class,pageHelper);
      //我们不能显示三员和管理员的角色
      queryWrapper.eq("pltype","2");
      //queryWrapper.eq("pltype","2");
      List<SmRoleForPlatform1> roleForPlatform1s = boService.selectByQueryWrapper(queryWrapper, SmRoleForPlatform1.class);
      DataGrid<SmRoleVO> dataGrid = new DataGrid<>();
      if(!CollectionUtils.isEmpty(roleForPlatform1s)){
@@ -109,6 +120,7 @@
      }
      return dataGrid;
   }
    /**
     * 根据角色主键获取角色的姓名
     * @param roleOid 角色主键
@@ -119,6 +131,7 @@
      WebUtil.alertNotNull(roleOid,"角色主键");
      return getRoleByRoleOid(roleOid).getName();
   }
    /**
     * 根据用户主键获取关联的角色
     * @param userOid 用户主键
@@ -170,6 +183,7 @@
      }
      return platformRole2SmRoleVOs(roles);
   }
     /**
     * 根据用户主键获取关联的角色
     * @param userOid 用户主键
@@ -210,6 +224,7 @@
      }
      return gridRoles(queryMap,pageHelper);
   }
    /**
     * 获取未关联某个用户的角色
     * @param userOid 用户主键
@@ -221,6 +236,7 @@
         Map<String, String> queryMap) {
      return listRoleByUserOid(userOid,queryMap,true);
   }
   /**
     * 获取未关联某个用户的角色
     * @param userOid 用户主键
@@ -233,6 +249,7 @@
         Map<String, String> queryMap, PageHelper pageHelper) {
      return gridRoleByUserOid(userOid,queryMap,pageHelper,true);
   }
     /**
     * 批量根据用户的主键来获取角色
     * @param userOidCollection 用户主键集合
@@ -255,16 +272,19 @@
            List<BusinessObject> cbos = boService.queryBySql(sql, null);
            if(!CollectionUtils.isEmpty(cbos)){
               cbos.stream().forEach(cbo->{
                  String userOid = ObjectTool.getBOAttributeValue(cbo,"pluseruid");
                  String userOid = ObjectTool.getNewBOAttributeValue(cbo,"pluseruid");
                  List<String> roleOids = userRoleOidMap.getOrDefault(userOid,new ArrayList<>());
                  roleOids.add(ObjectTool.getBOAttributeValue(cbo,"plroleuid"));
                  roleOids.add(ObjectTool.getNewBOAttributeValue(cbo,"plroleuid"));
                  userRoleOidMap.put(userOid,roleOids);
               });
            }
         }
      });
      if(!CollectionUtils.isEmpty(roleVOList)){
         Map<String, SmRoleVO> roleVOMap = roleVOList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
         //这儿应该对roleVOList做一次去重处理,因为肯定会有重复的角色被查出来
         Map<String, SmRoleVO> roleVOMap = roleVOList.stream()
               .collect(Collectors.toMap(SmRoleVO::getOid, Function.identity(), (existing, replacement) -> existing));
         //Map<String, SmRoleVO> roleVOMap = roleVOList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
         Map<String, List<SmRoleVO>> userRoleVOMap = new HashMap<>();
         userRoleOidMap.forEach((userOid,roleOids)->{
            List<SmRoleVO> roleVOS = new ArrayList<>();
@@ -279,6 +299,7 @@
      }
      return new HashMap<>();
   }
    /**
     * 根据权限主键获取关联的角色
     * @param functionOid 权限主键
@@ -444,6 +465,7 @@
      }
      return new HashMap<>();
   }
    /**
     * 参照角色的列表,三员管理的三个角色不会显示
     * @param queryMap 查询条件
@@ -457,6 +479,7 @@
      //老平台没有生效状态
      return gridRoles(queryMap, pageHelper);
   }
     /**
     * 角色的树形展示,常用于角色选择用户的页面使用
     * @param treeQueryObject 树查询对象
@@ -488,6 +511,19 @@
   }
   /**
    * 该方法只支持一次只允许单个用户分配多个角色,一对多
    * @param userOid
    * @param roleIds
    * @return
    */
   @Override
   public boolean saveRights(String userOid, String[] roleIds) throws PLException {
      VciBaseUtil.alertNotNull(userOid,"用户主键");
      //roleIds允许为空,为空时清空当前用户的权限
      return platformClientUtil.getFrameworkService().saveRights(roleIds,new String[]{userOid},new UserEntityInfo());
   }
   /**
    * 角色的转换,默认全部是bs控制的角色
    * @param roleForPlatform1List 原平台的角色
    * @return 角色的显示对象