package com.engine.organization.util.page; import com.engine.organization.annotation.TableTitle; import lombok.Data; import lombok.ToString; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; @Data @ToString public class PageInfo extends com.github.pagehelper.PageInfo { Class clazz; public void setColumns(List columns) { this.columns.addAll(columns); } List columns = new ArrayList<>(); List dataSource = new ArrayList<>(); public PageInfo() { } public PageInfo(Class clazz) { this.clazz = clazz; this.columns = buildColumns(); } public PageInfo(List list) { super(list); } public PageInfo(List list, Class clazz) { super(list); this.clazz = clazz; this.columns = buildColumns(); } public List buildColumns() { if(clazz==null){ return this.columns; } Field[] fields = clazz.getDeclaredFields(); for (Field f : fields) { boolean isanno = f.isAnnotationPresent(TableTitle.class); if (isanno) { TableTitle annotation = f.getAnnotation(TableTitle.class); String title = annotation.title(); String dataIndex = annotation.dataIndex(); String key = annotation.key(); boolean display = annotation.display(); Column column = Column.builder().title(title).dataIndex(dataIndex).key(key).display(display).build(); columns.add(column); } } return columns; } }