赞
踩
/** * 在线人员查看 * * @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 对象位于参数字符串之后,则比较结果为一个正整数。 // 如果这两个字符串相等,则结果为 0;compareTo 只在方法 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 表示:o1和o2相等, * 返回正数表示: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; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。