当前位置:   article > 正文

对结果集 list 进行模糊查询分页排序_list分页模糊查询

list分页模糊查询
/**
 * 在线人员查看
 *
 * @param userBean
 * @param pageNum
 * @param pageSize
 * @return
 */
public PageInfo<OnlineUserManageBean> querySystemOnlineUser(Integer pageNum, Integer pageSize, String loginId) throws IOException {

    PageHelper.startPage(pageNum, pageSize);
    //查询所有用户排除帐号禁用用户
    List<ItsmSystemUserBean> itsmSystemUserBeans = this.userClient.queryLoginOutByUserAll();
    //缓存中在线的用户
    List<OnlineUserManageBean> beans = new ArrayList<OnlineUserManageBean>();
    for (ItsmSystemUserBean userBean : itsmSystemUserBeans) {
        String loginName = userBean.getLoginName();
        //根据用户登录id查询缓存
        String s = this.redisService.get(loginName);
        if (StringUtils.isNotBlank(s)) {
            beans.add(ReturnJsonObject.MAPPER.readValue(s, OnlineUserManageBean.class));
        }
    }

    //定义返回分页数据的list
    List<OnlineUserManageBean> subList = new ArrayList<OnlineUserManageBean>();
    //new分页对象
    PageInfo<OnlineUserManageBean> info = new PageInfo<OnlineUserManageBean>();
    //查询全部数据
    if (StringUtils.isBlank(loginId)) {
        //设置list分页,这里通用mapper返回分页有问题,
        return getOnlineUserManageBeanPageInfo(pageNum, pageSize, beans, info);
    } else { //根据登录id查询
        //定义查询list
        List<OnlineUserManageBean> listByLoginName = new ArrayList<OnlineUserManageBean>();
        for (int i = 0; i < beans.size(); i++) {
            //遍历数据的登录id对比索引,没有匹配移除返回的list
            if (((beans.get(i))).getLoginName().indexOf(loginId) > -1)
                //beans.remove(i);这里和=循环操作的是同一个集合遍历时size一直减少,遍历一半时结束
                listByLoginName.add((beans.get(i)));
        }
        if (listByLoginName.size() > 0) {
            //设置list分页,这里通用mapper返回分页有问题,
            return getOnlineUserManageBeanPageInfo(pageNum, pageSize, listByLoginName, info);
        } else {
            return getOnlineUserManageBeanPageInfo(pageNum, pageSize, subList, info);
        }

    }

}

private PageInfo<OnlineUserManageBean> getOnlineUserManageBeanPageInfo(Integer pageNum, Integer pageSize, List<OnlineUserManageBean> beans, PageInfo<OnlineUserManageBean> info) {
    List<OnlineUserManageBean> subList;
    int totalCount = beans.size();
    int pageCount = 0;
    int m = totalCount % pageSize;
    if (m > 0) {
        pageCount = totalCount / pageSize + 1;
    } else {
        pageCount = totalCount / pageSize;
    }
    //获取返回分页数据的list
    subList = getOnlineUserManageBeans(pageNum, pageSize, beans, totalCount, pageCount, m);
    //设置分页必需的参数
    info.setPageNum(pageNum);
    info.setPageSize(pageSize);
    info.setTotal(totalCount);
    info.setList(subList);
    info.setSize(pageCount);
    return info;
}

/**
 * 获取在线分页list
 *
 * @param pageNum    当前页
 * @param pageSize   每页数量
 * @param beans      需要截取分页的list
 * @param totalCount 总条数
 * @param pageCount  总页数
 * @param m          分页页面数量
 * @return
 */
private List<OnlineUserManageBean> getOnlineUserManageBeans(Integer pageNum, Integer pageSize, List<OnlineUserManageBean> beans, int totalCount, int pageCount, int m) {
//java.util  Collections
//static <T> void  sort(List<T> list, Comparator<? super T> c)
//根据指定比较器产生的顺序对指定列表进行排序。
SortClass sortClass = new SortClass();
Collections.sort(beans, sortClass);
List<OnlineUserManageBean> totalList = new ArrayList<OnlineUserManageBean>(); int currIdx = (pageNum > 1 ? (pageNum -1) * pageSize : 0); for (int i = 0; i < pageSize && i < beans.size() - currIdx; i++) { OnlineUserManageBean memberArticleBean = beans.get(currIdx + i); totalList.add(memberArticleBean); } return totalList;}
 
import java.util.Comparator;
//接口 Comparator<T>
//强行对某个对象 collection 进行整体排序 的比较函数。
//可以将 Comparator 传递给 sort 方法(如 Collections.sort  Arrays.sort),
//从而允许在排序顺序上实现精确控制

public class SortClass implements Comparator {

    @Override
    public int compare(Object o1, Object o2) {
        OnlineUserManageBean onlinBean = (OnlineUserManageBean) o1;
        OnlineUserManageBean bean = (OnlineUserManageBean) o2;
//      public int compareTo(String anotherString)
//      按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。
//      按字典顺序将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。
//      如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数。
//      如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。
//      如果这两个字符串相等,则结果为 0compareTo 只在方法 equals(Object) 返回 true 时才返回 0
        int flag = bean.getLastLoginTime().compareTo(onlinBean.getLastLoginTime());

        return flag;
    }

}
/**
 * list进行排序, 这里主要根据是否是组长进行排序
 *
 * @param list
 * @return
 */
public List<GroupUserBean> listSort(List<GroupUserBean> list) {

    Collections.sort(list, new Comparator<GroupUserBean>() {

        /*
         * int compare(Student o1, Student o2) 返回一个基本类型的整型,
         * 返回负数表示:o1 小于o2
         * 返回0 表示:o1o2相等,
         * 返回正数表示:o1大于o2
         */
        public int compare(GroupUserBean o1, GroupUserBean o2) {


            //按照组长进行升序排列
            if (o1.getIsLeader() < o2.getIsLeader()) {
                return 1;
            }
            if (o1.getIsLeader() == o2.getIsLeader()) {
                return 0;
            }
            return -1;
        }
    });
    return list;
}

 
 

                
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/1022305
推荐阅读
相关标签
  

闽ICP备14008679号