UserTools.java 2.64 KB
package com.objecteye.utils;

import com.alibaba.fastjson.JSONArray;
import com.objecteye.entity.PageResult;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class UserTools {

    public static JSONArray getJSONArrayByList(List list) {
        JSONArray jsonArray = new JSONArray();
        if (list == null || list.isEmpty()) {
            return jsonArray;
        }
        jsonArray.addAll(list);
        return jsonArray;
    }

    public static String nowToDate() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.format(new Date());
    }

    /**
     * 统一手动分页
     *
     * @param baseList    原始数据集合
     * @param currentPage 页码
     * @param pageVolume  页面容量
     * @return 结果集
     */
    public static PageResult makePageResultByBaseList(List baseList, int currentPage, int pageVolume) {
        return new PageResult<>(getPageTotalByBaseList(baseList, pageVolume),
                getPagedResultByBaseList(baseList, currentPage, pageVolume));
    }

    /**
     * 手动分页获取页码数量
     *
     * @param baseList   原始数据集合
     * @param pageVolume 页面容量
     * @return 页数
     */
    public static int getPageTotalByBaseList(List baseList, int pageVolume) {
        return getPageTotalByBaseList(baseList.size(), pageVolume);
    }

    /**
     * 手动分页获取页码数量
     *
     * @param size       集合数量
     * @param pageVolume 页面容量
     * @return 页数
     */
    public static int getPageTotalByBaseList(int size, int pageVolume) {
        return (size / pageVolume) + ((size % pageVolume > 0) ? 1 : 0);
    }

    /**
     * 手动获取分页对应页面的数据
     *
     * @param baseList    原始数据集合
     * @param currentPage 页码
     * @param pageVolume  页面容量
     * @return 数据集合
     */
    public static List getPagedResultByBaseList(List baseList, int currentPage, int pageVolume) {
        int pageTotal = getPageTotalByBaseList(baseList, pageVolume);
        int fromIndex = (currentPage - 1) * pageVolume;
        int toIndex;
        if (currentPage == pageTotal) {
            toIndex = baseList.size();
        } else if (pageTotal == 0) {
            return new ArrayList<>();
        } else {
            toIndex = currentPage * pageVolume;
            if (toIndex > baseList.size()) {
                toIndex = baseList.size();
            }
            if (fromIndex >= toIndex) {
                return new ArrayList<>();
            }
        }
        return baseList.subList(fromIndex, toIndex);
    }
}