import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 可分页标识
* <p>
* 详情请参照 - PageableAop
*/
@SuppressWarnings("all")
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Pageable {
/**
* 自动触发分页 - 默认自动使用AOP进行分页
* <p>
* false表示不自动触发,
* 即aop跳过分页逻辑及导出逻辑,并将相关分页参数存入线程变量中,
* 同时,需要使用者显示调用AOP方法中的分页方法,在该方法中进行分页
* <p>
* 由于在复杂分页查询中,首次查询,一般不是目标查询,所以需要一种可手动调用的方式触发分页
*/
boolean autoTrigger() default true;
/**
* 排序类型
* <p>
* asc 正序
* <p>
* desc 倒序
*/
String sortType() default "asc";
/**
* 排序字段 - 可使用驼峰命名
*/
String sortBy() default "id";
/**
* 可导出标识,则需要显式指定导出的实体类是什么
*/
Excel exportable() default @Excel(Object.class);
/**
* Excel导出注解
*/
@interface Excel {
/**
* 导出表实体类型
*/
Class<?> value();
/**
* 设置文件名称
*/
String file() default "file";
/**
* 设置标题,空则不设置
*/
String title() default "";
/**
* 设置sheet名称
*/
String sheet() default "";
/**
* 导出表实体类型
*/
ExcelType excelType() default ExcelType.XSSF;
/**
* 是否需要表头,默认需要
*/
boolean needHeader() default true;
/**
* 列宽自适应
*/
boolean autoSize() default true;
}
}
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.hutool.core.lang.Pair;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageInfo;
import com.github.pagehelper.dialect.AbstractHelperDialect;
import com.ikas.ai.consts.Consts;
import com.ikas.ai.handle.JsonResult;
import com.ikas.ai.utils.NumUtil;
import com.ikas.ai.utils.PageUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Workbook;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotNull;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.Collections;
import java.util.List;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collectors;
@Component
@Aspect
@Slf4j
public class PageableAop {
@Resource
private HttpServletRequest request;
@Resource
private HttpServletResponse response;