| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652 |
- package cn.com.lzt.common.service.impl;
- import cn.com.lzt.common.dao.DataPermissionMinidao;
- import cn.com.lzt.common.dto.RoleDto;
- import cn.com.lzt.common.dto.RoleUserDto;
- import cn.com.lzt.common.dto.VisibleRangeDto;
- import cn.com.lzt.common.dto.VisibleUserDto;
- import cn.com.lzt.common.pmenum.Flag;
- import cn.com.lzt.common.service.DataPermissionServiceI;
- import org.jeecgframework.core.common.service.impl.CommonServiceImpl;
- import org.jeecgframework.core.util.ContextHolderUtils;
- import org.jeecgframework.web.system.pojo.base.TSDepart;
- import org.jeecgframework.web.system.pojo.base.TSUser;
- import org.jeecgframework.web.system.pojo.base.TSUserOrg;
- import org.jeecgframework.web.system.service.DepartServiceI;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import javax.servlet.http.HttpSession;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- @Service("dataPermissionService")
- @Transactional
- public class DataPermissionServiceImpl extends CommonServiceImpl implements DataPermissionServiceI{
-
- @Autowired
- private DepartServiceI departService;
- @Autowired
- private DataPermissionMinidao dataPermissionMinidao;
-
- /**
- * 数据过滤
- */
- public <T> List<T> dataFilter(List<T> list) {
- HttpSession session = ContextHolderUtils.getSession();
- TSUser user = (TSUser)session.getAttribute("LOCAL_CLINET_USER");
-
- String sql = "SELECT r.id, r.rolename, r.self_roleweight_code, r.visible_roleweight_code FROM t_s_role r WHERE r.id IN ( SELECT ru.roleid FROM t_s_role_user ru WHERE ru.userid = ?)";
- List<Map<String, Object>> rolemap = this.findForJdbc(sql, user.getId());
- for(int i=0; i<rolemap.size(); i++){
- rolemap.get(i).get("rolename");
- }
- return list;
- }
-
- /**
- * 获取当前用户可见的userid列表
- */
- public VisibleUserDto getVisibleUserList(){
-
- // 获取当前登录用户
- HttpSession session = ContextHolderUtils.getSession();
- TSUser user = (TSUser)session.getAttribute("LOCAL_CLINET_USER");
-
- // 获取当前登录用户的所有角色列表
- String sql = "SELECT r.id roleid, r.rolecode, r.rolename, r.self_roleweight_code, r.visible_roleweight_code FROM t_s_role r WHERE r.id IN ( SELECT ru.roleid FROM t_s_role_user ru WHERE ru.userid = ?)";
- List<Map<String, Object>> rolemap = this.findForJdbc(sql, user.getId());
-
- // 封装Dto
- List<RoleDto> roleDtoList = new ArrayList<RoleDto>();
- for(int i=0; i<rolemap.size(); i++){
- RoleDto dto = new RoleDto();
- dto.setRoleid((String) rolemap.get(i).get("roleid"));
- dto.setRolecode((String) rolemap.get(i).get("rolecode"));
- dto.setRolename((String) rolemap.get(i).get("rolename"));
- dto.setSelf_roleweight_code(Integer.parseInt((String) rolemap.get(i).get("self_roleweight_code")));
- dto.setVisible_roleweight_code((String) rolemap.get(i).get("visible_roleweight_code"));
- roleDtoList.add(dto);
- }
-
- // 获取当前登录用户的最大角色
- RoleDto biggestRole = this.getBiggestRole(roleDtoList);
- // System.out.println("BiggestRole:" + biggestRole.toString());
-
- //String rolecode = biggestRole.getRolecode();//角色编码
- //Integer self_roleweight_code = biggestRole.getSelf_roleweight_code();// 自身权值编码
- String visible_roleweight_code = biggestRole.getVisible_roleweight_code();// 可见权限范围
-
- VisibleUserDto dto = new VisibleUserDto();//
- if(visible_roleweight_code != null && !"".equals(visible_roleweight_code.trim())){
- if(visible_roleweight_code.trim().equalsIgnoreCase("ALL")){
- dto.setFlag(Flag.ALL);
- return dto;
- }else if(visible_roleweight_code.trim().equalsIgnoreCase("NONE")){
- dto.setFlag(Flag.NONE);
- return dto;
- }else{
- List<String> rangeCodeList = this.pretreatment(visible_roleweight_code.trim());// 预处理可见范围编码
- List<VisibleRangeDto> rangeList = this.getVisibleRangeList(rangeCodeList);// 获取可见范围值列表
- List<String> useridList = this.getInvisibleUseridList(rangeList, biggestRole);// 获取可见的userid列表
-
- dto.setUseridList(useridList);
- dto.setFlag(Flag.PART);
- return dto;
- }
-
- }
- return dto;
- }
-
-
- /**
- * 比较角色的大小,并返回权限最大的角色
- */
- private RoleDto getBiggestRole(List<RoleDto> roleDtoList){
- if(roleDtoList != null){
- if(roleDtoList.size() == 1){
- return roleDtoList.get(0);
- }else if(roleDtoList.size()>1){
- RoleDto max = roleDtoList.get(0);
- for(int i=1; i<roleDtoList.size(); i++){
- RoleDto dto = roleDtoList.get(i);
- if(max.getRolecode().substring(0, 1).equals(dto.getRolecode().substring(0, 1))
- && max.getRolecode().substring(1, 2).equals("_")
- && dto.getRolecode().substring(1, 2).equals("_")){
- if(max.getSelf_roleweight_code() < dto.getSelf_roleweight_code()){
- max = dto;
- }
- if(max.getRolecode().equals("admin")){
- max = dto;
- }
- }else{
- if(dto.getRolecode().startsWith("M_")){
- max = dto;
- }else if(dto.getRolecode().startsWith("A_")){
- if(max.getRolecode().startsWith("P_")){
- max = dto;
- }
- }
- if(max.getRolecode().equals("admin")){
- max = dto;
- }
-
- }
-
- }
- return max;
- }
-
- }
- return null;
- }
-
-
- /**
- * 预处理可见范围编码rangeCodeStrs
- *
- * @param rangeCodeStrs:可见范围编码组合字符串
- * @return
- */
- private List<String> pretreatment(String rangeCodeStrs){
- List<String> rangeCodeList = new ArrayList<String>();
- String [] arr0 = rangeCodeStrs.split(";");
- for(int i=0; i<arr0.length; i++){
- String aa = arr0[i].trim();
- String [] arr1 = aa.split(";");
- for(int j=0; j<arr1.length; j++){
- rangeCodeList.add(arr1[j].trim());
- }
- }
- // System.out.println("rangeCodeList:" + rangeCodeList);
- return rangeCodeList;
- }
-
- /**
- * 获取可见范围值列表
- *
- * @param rangeCodeList:
- * @return
- */
- private List<VisibleRangeDto> getVisibleRangeList(List<String> rangeCodeList){
- List<VisibleRangeDto> rangeList = new ArrayList<VisibleRangeDto>();
-
- for(String rangeCode : rangeCodeList){
- if(rangeCode.contains(":") || rangeCode.contains(":")){
- String [] arr1 = rangeCode.split(":");// 半角分隔
- if(arr1.length > 1){
- String code = arr1[0].trim();
- String rangeVal = arr1[1].trim();
-
- if(rangeVal.contains("-") || rangeVal.contains("-")){
- String[] r1 = rangeVal.split("-");// 半角分隔
- if(r1.length > 1){
- VisibleRangeDto rangeDto = new VisibleRangeDto();
- rangeDto.setCode(code);
- rangeDto.setLeftVal(Integer.parseInt(r1[0].trim()));
- rangeDto.setRightVal(Integer.parseInt(r1[1].trim()));
- rangeDto.setRangeVal(rangeVal);
- rangeList.add(rangeDto);
- }else{
- String[] r2 = rangeCode.split("-");// 全角分隔
- if(r2.length > 1){
- VisibleRangeDto rangeDto = new VisibleRangeDto();
- rangeDto.setCode(code);
- rangeDto.setLeftVal(Integer.parseInt(r2[0].trim()));
- rangeDto.setRightVal(Integer.parseInt(r2[1].trim()));
- rangeDto.setRangeVal(rangeVal);
- rangeList.add(rangeDto);
- }
- }
- }
-
-
- }else{
- String [] arr2 = rangeCode.split(":");// 全角分隔
- if(arr2.length > 1){
- String code = arr2[0].trim();
- String rangeVal = arr2[1].trim();
-
- if(rangeVal.contains("-") || rangeVal.contains("-")){
- String[] r1 = rangeVal.split("-");// 半角分隔
- if(r1.length > 1){
- VisibleRangeDto rangeDto = new VisibleRangeDto();
- rangeDto.setCode(code);
- rangeDto.setLeftVal(Integer.parseInt(r1[0].trim()));
- rangeDto.setRightVal(Integer.parseInt(r1[1].trim()));
- rangeDto.setRangeVal(rangeVal);
- rangeList.add(rangeDto);
- }else{
- String[] r2 = rangeCode.split("-");// 全角分隔
- if(r2.length > 1){
- VisibleRangeDto rangeDto = new VisibleRangeDto();
- rangeDto.setCode(code);
- rangeDto.setLeftVal(Integer.parseInt(r2[0].trim()));
- rangeDto.setRightVal(Integer.parseInt(r2[1].trim()));
- rangeDto.setRangeVal(rangeVal);
- rangeList.add(rangeDto);
- }
- }
- }
-
- }
- }
- }else{
- if(rangeCode.contains("-") || rangeCode.contains("-")){
- String[] r1 = rangeCode.split("-");// 半角分隔
- if(r1.length > 1){
- VisibleRangeDto rangeDto = new VisibleRangeDto();
- rangeDto.setCode(null);
- rangeDto.setLeftVal(Integer.parseInt(r1[0].trim()));
- rangeDto.setRightVal(Integer.parseInt(r1[1].trim()));
- rangeDto.setRangeVal(rangeCode);
- rangeList.add(rangeDto);
- }else{
- String[] r2 = rangeCode.split("-");// 全角分隔
- if(r2.length > 1){
- VisibleRangeDto rangeDto = new VisibleRangeDto();
- rangeDto.setCode(null);
- rangeDto.setLeftVal(Integer.parseInt(r2[0].trim()));
- rangeDto.setRightVal(Integer.parseInt(r2[1].trim()));
- rangeDto.setRangeVal(rangeCode);
- rangeList.add(rangeDto);
- }
- }
- }
-
- }
-
- }
- // System.out.println("rangeList:" + rangeList);
- return rangeList;
- }
-
-
- /**
- * 获取可见的userid列表
- * @param rangeList
- * @return
- */
- private List<String> getInvisibleUseridList(List<VisibleRangeDto> rangeList, RoleDto biggestRole){
- List<String> visibleUseridList = new ArrayList<String>();
-
- // 获取当前登录用户
- HttpSession session = ContextHolderUtils.getSession();
- TSUser currentLoginUser = (TSUser)session.getAttribute("LOCAL_CLINET_USER");
-
- //查询当前登录用户所有的组织机构
- List<TSUserOrg> userOrgList = this.findHql("from TSUserOrg where tsUser.id=? order by intime desc", currentLoginUser.getId());
-
- // 得到当前登录用户的当前组织机构
- TSUserOrg currentUserOrg = null;
- if(userOrgList!=null && userOrgList.size()>0){
- currentUserOrg = userOrgList.get(0);//取出该用户最新的一条组织机构关系记录
- // System.out.println("currentUserOrgId:" + currentUserOrg.getTsDepart().getId());
- }
-
- for(int i=0; i<rangeList.size(); i++){
- VisibleRangeDto range = rangeList.get(i);
-
- if(range.getCode() != null){//code不为空,表示为其他部门的数据可见权限
-
- if(range.getCode().trim().equalsIgnoreCase("P") ||
- range.getCode().trim().equalsIgnoreCase("A") ||
- range.getCode().trim().equalsIgnoreCase("M")){
-
- StringBuffer sb = new StringBuffer("from TSDepart d where 1=1 and ");
-
- if(range.getCode().trim().equalsIgnoreCase("P")){
- sb.append("d.deptCode like 'P_%' OR ");
- sb.append("d.deptCode like 'p_%' OR ");
- sb.append("d.deptCode like 'P_%' OR ");
- sb.append("d.deptCode like 'p_%' ");
- }else if(range.getCode().trim().equalsIgnoreCase("A")){
- sb.append("d.deptCode like 'A_%' OR ");
- sb.append("d.deptCode like 'a_%' OR ");
- sb.append("d.deptCode like 'A_%' OR ");
- sb.append("d.deptCode like 'a_%' ");
- }else if(range.getCode().trim().equalsIgnoreCase("M")){
- sb.append("d.deptCode like 'M_%' OR ");
- sb.append("d.deptCode like 'm_%' OR ");
- sb.append("d.deptCode like 'M_%' OR ");
- sb.append("d.deptCode like 'm_%' ");
- }
- // 查询所有符合条件的组织机构列表
- List<TSDepart> departList = departService.findHql(sb.toString());
- if(departList != null && departList.size() > 0){
- for(TSDepart depart : departList){
- List<String> useridList = filterUserid(depart.getId(), range);
- visibleUseridList.addAll(useridList);
- }
- }
-
- }else if(range.getCode().trim().startsWith("P_") ||
- range.getCode().trim().startsWith("p_") ||
- range.getCode().trim().startsWith("P_") ||
- range.getCode().trim().startsWith("p_") ||
- range.getCode().trim().startsWith("A_") ||
- range.getCode().trim().startsWith("a_") ||
- range.getCode().trim().startsWith("A_") ||
- range.getCode().trim().startsWith("a_") ||
- range.getCode().trim().startsWith("M_") ||
- range.getCode().trim().startsWith("m_") ||
- range.getCode().trim().startsWith("M_") ||
- range.getCode().trim().startsWith("m_") ){
-
- // 查询指定编码的组织机构
- String hql = " from TSDepart d where 1=1 and d.deptCode = ?";
- List<TSDepart> departList = departService.findHql(hql.toString(), range.getCode().trim());
- if(departList != null && departList.size() > 0){
- TSDepart specificDepart = departList.get(0);
- List<String> useridList = filterUserid(specificDepart.getId(), range);
- visibleUseridList.addAll(useridList);
- }
-
- }
-
-
- }else{//code为空,表示本部门内的数据可见权限
- for(int j = 0; j < userOrgList.size(); j++) {
- TSUserOrg currentUserOrgTemp = userOrgList.get(j);
- List<String> useridList = new ArrayList<String>();
- useridList = filterUserid(currentUserOrgTemp.getTsDepart().getId(), range);
- visibleUseridList.addAll(useridList);
- }
- }
- }
-
-
- // 加入当前登陆人的userid
- if(!visibleUseridList.contains(currentLoginUser.getId())){
- visibleUseridList.add(currentLoginUser.getId());
- }
-
- // 滤除userid重复的数据,并转为Map
- Map<String, String> map = new HashMap<String, String>();
- for(String id : visibleUseridList){
- map.put(id, id);
- }
-
- // 将Map转为List,并赋给visibleUseridList
- List<String> list = new ArrayList<String>();
- for(String userid : map.values()){
- list.add(userid);
- }
- visibleUseridList = list;
-
- // System.out.println("visibleUseridList.totalSize:" + visibleUseridList.size());
-
- return visibleUseridList;
- }
-
-
-
- /**
- * 比较角色的大小,并返回权限最大的角色
- * 通过用户与角色的关系列表list比较
- */
- private RoleUserDto getLargerRoleByRoleUserRelationList(List<RoleUserDto> roleUserDtoList){
- if(roleUserDtoList != null){
- if(roleUserDtoList.size() == 1){
- return roleUserDtoList.get(0);
- }else if(roleUserDtoList.size()>1){
- RoleUserDto max = roleUserDtoList.get(0);
- for(int i=1; i<roleUserDtoList.size(); i++){
- RoleUserDto dto = roleUserDtoList.get(i);
- if(max.getRolecode().substring(0, 1).equals(dto.getRolecode().substring(0, 1))
- && max.getRolecode().substring(1, 2).equals("_")
- && dto.getRolecode().substring(1, 2).equals("_")){
- if(Integer.parseInt(max.getSelf_roleweight_code()) < Integer.parseInt(dto.getSelf_roleweight_code())){
- max = dto;
- }
- if(max.getRolecode().equals("admin")){
- max = dto;
- }
- }else{
- if(dto.getRolecode().startsWith("M_")){
- max = dto;
- }else if(dto.getRolecode().startsWith("A_")){
- if(max.getRolecode().startsWith("P_")){
- max = dto;
- }
- }
- if(max.getRolecode().equals("admin")){
- max = dto;
- }
-
- }
-
- }
- return max;
- }
-
- }
- return null;
- }
-
-
- /**
- * 比较角色的大小,并返回权限最大的角色
- * 通过用户与角色的关系列表Map比较
- */
- private List<RoleUserDto> getLargerRoleByRoleUserRelationMap(Map<String, List<RoleUserDto>> ruMap){
- if(ruMap!=null && ruMap.size()>0){
- List<RoleUserDto> ruList = new ArrayList<RoleUserDto>();//符合过滤条件的角色列表
-
- for (List<RoleUserDto> roleUserDtoList : ruMap.values()) {
- if(roleUserDtoList != null){
- if(roleUserDtoList.size() == 1){
- ruList.add(roleUserDtoList.get(0));
- continue;
- }else if(roleUserDtoList.size()>1){
- RoleUserDto max = roleUserDtoList.get(0);
- for(int i=1; i<roleUserDtoList.size(); i++){
- RoleUserDto dto = roleUserDtoList.get(i);
- if(max.getRolecode().substring(0, 1).equals(dto.getRolecode().substring(0, 1))
- && max.getRolecode().substring(1, 2).equals("_")
- && dto.getRolecode().substring(1, 2).equals("_")){
- if(Integer.parseInt(max.getSelf_roleweight_code()) < Integer.parseInt(dto.getSelf_roleweight_code())){
- max = dto;
- }
- if(max.getRolecode().equals("admin")){
- max = dto;
- }
- }else{
- if(dto.getRolecode().startsWith("M_")){
- max = dto;
- }else if(dto.getRolecode().startsWith("A_")){
- if(max.getRolecode().startsWith("P_")){
- max = dto;
- }
- }
- if(max.getRolecode().equals("admin")){
- max = dto;
- }
-
- }
-
- }
- ruList.add(max);
- }
-
- }
-
- }
- return ruList;
- }
-
- return null;
- }
-
-
-
- /**
- * 过滤
- * @param currentUserOrg
- * @param biggestRole
- * @return
- */
- /* private List<String> filterUserid(String departid, RoleDto biggestRole){
- List<String> visibleUseridList = new ArrayList<String>();
-
- // 通过组织机构id获取当前组织机构及其以下所有子孙机构的id的集合
- List<String> departidList = departService.getDePartIdAndallSonDepartIds(departid);
-
- // TODO 调试用
- for(String d : departidList){
- System.out.println("departidList:" + d);
- }
-
- // 根据组织机构idlist查询用户与角色的关系列表
- List<RoleUserDto> roleUserList = dataPermissionMinidao.getRoleUsers(departidList);
-
- // 构建用户与角色的关系Map key:userid, value:RoleUserDto
- Map<String, List<RoleUserDto>> ruMap = new HashMap<String, List<RoleUserDto>>();
- if(roleUserList != null && roleUserList.size() > 0){
- for(RoleUserDto dto : roleUserList){
- if(ruMap.containsKey(dto.getUserid())){
- ruMap.get(dto.getUserid()).add(dto);
- }else{
- List<RoleUserDto> dtoList = new ArrayList<RoleUserDto>();
- dtoList.add(dto);
- ruMap.put(dto.getUserid(), dtoList);
- }
- }
- }
- System.out.println("ruMap:" + ruMap);
- System.out.println("ruMap.size:" + ruMap.size());
- // 比较角色的大小,并返回权限最大的角色(通过用户与角色的关系Map比较)
- List<RoleUserDto> roleUserDtoList = this.getLargerRoleByRoleUserRelationMap(ruMap);
- System.out.println("roleUserDtoList.size:" + roleUserDtoList.size());
-
- if(roleUserDtoList != null && roleUserDtoList.size() > 0){
- String visible_roleweight_code = biggestRole.getVisible_roleweight_code();
- Integer leftVal = null;
- Integer rightVal = null;
-
- // 取出当前最大角色的范围值
- if(visible_roleweight_code.contains("-") || visible_roleweight_code.contains("-")){
- String[] r1 = visible_roleweight_code.split("-");// 半角分隔
- if(r1.length > 1){
- leftVal = Integer.parseInt(r1[0].trim());
- rightVal = Integer.parseInt(r1[1].trim());
- }else{
- String[] r2 = visible_roleweight_code.split("-");// 全角分隔
- if(r2.length > 1){
- leftVal = Integer.parseInt(r2[0].trim());
- rightVal = Integer.parseInt(r2[1].trim());
- }
- }
- }
-
- // 过滤出可见的userid,添加到list
- for(RoleUserDto dto : roleUserDtoList){
- Integer selfCode = Integer.parseInt(dto.getSelf_roleweight_code());
- if(selfCode >= leftVal && selfCode <= rightVal){
- visibleUseridList.add(dto.getUserid());
- }else{
- System.out.println("dto:" + dto);
- }
- }
-
- }
-
- return visibleUseridList;
- }*/
-
-
-
- /**
- * 过滤
- * @param currentUserOrg
- * @param biggestRole
- * @return
- */
- private List<String> filterUserid(String departid, VisibleRangeDto range){
- List<String> visibleUseridList = new ArrayList<String>();
-
- // 通过组织机构id获取当前组织机构及其以下所有子孙机构的id的集合
- List<String> departidList = departService.getDePartIdAndallSonDepartIds(departid);
-
- // // TODO 调试用
- // for(String d : departidList){
- // System.out.println("departidList:" + d);
- // }
-
- // 根据组织机构idlist查询用户与角色的关系列表
- List<RoleUserDto> roleUserList = dataPermissionMinidao.getRoleUsers(departidList);
-
- // 构建用户与角色的关系Map key:userid, value:RoleUserDto
- Map<String, List<RoleUserDto>> ruMap = new HashMap<String, List<RoleUserDto>>();
- if(roleUserList != null && roleUserList.size() > 0){
- for(RoleUserDto dto : roleUserList){
- if(ruMap.containsKey(dto.getUserid())){
- ruMap.get(dto.getUserid()).add(dto);
- }else{
- List<RoleUserDto> dtoList = new ArrayList<RoleUserDto>();
- dtoList.add(dto);
- ruMap.put(dto.getUserid(), dtoList);
- }
- }
- }
- // System.out.println("ruMap:" + ruMap);
- // System.out.println("ruMap.size:" + ruMap.size());
- // 比较角色的大小,并返回权限最大的角色(通过用户与角色的关系Map比较)
- List<RoleUserDto> roleUserDtoList = this.getLargerRoleByRoleUserRelationMap(ruMap);
-
- if(roleUserDtoList != null && roleUserDtoList.size() > 0){
- // System.out.println("roleUserDtoList.size:" + roleUserDtoList.size());
- // 过滤出可见的userid,添加到list
- for(RoleUserDto dto : roleUserDtoList){
- Integer selfCode = Integer.parseInt(dto.getSelf_roleweight_code());
-
- if(range.getCode() != null && range.getCode().length() > 0){
- if(range.getCode().length()==1){
- if(dto.getRolecode().substring(0, 1).equalsIgnoreCase(range.getCode())){
- if(selfCode >= range.getLeftVal() && selfCode <= range.getRightVal()){
- visibleUseridList.add(dto.getUserid());
- }
- }
- }else{
- boolean b = false;
- if( (range.getCode().trim().startsWith("P_") || range.getCode().trim().startsWith("p_") || range.getCode().trim().startsWith("P_") || range.getCode().trim().startsWith("p_")) &&
- (dto.getRolecode().trim().startsWith("P_")) ){
- b = true;
- }else if( (range.getCode().trim().startsWith("A_") || range.getCode().trim().startsWith("a_") || range.getCode().trim().startsWith("A_") || range.getCode().trim().startsWith("a_")) &&
- (dto.getRolecode().trim().startsWith("A_")) ){
- b = true;
- }else if((range.getCode().trim().startsWith("M_") || range.getCode().trim().startsWith("m_") || range.getCode().trim().startsWith("M_") || range.getCode().trim().startsWith("m_")) &&
- (dto.getRolecode().trim().startsWith("M_"))){
- b = true;
- }
- if(b){
- if(selfCode >= range.getLeftVal() && selfCode <= range.getRightVal()){
- visibleUseridList.add(dto.getUserid());
- }
- }
- }
- }else{
- if(selfCode >= range.getLeftVal() && selfCode <= range.getRightVal()){
- visibleUseridList.add(dto.getUserid());
- }else{
- // System.out.println("dto:" + dto);
- }
- }
-
- }
-
- }
-
- return visibleUseridList;
- }
-
-
-
-
- }
|