weaver-hrm-organization/src/com/engine/organization/util/page/PageInfo.java

69 lines
2.1 KiB
Java
Raw Normal View History

2022-05-07 10:18:50 +08:00
package com.engine.organization.util.page;
import com.engine.organization.annotation.TableTitle;
import lombok.Data;
2023-06-21 11:42:21 +08:00
import lombok.EqualsAndHashCode;
2022-05-07 10:18:50 +08:00
import lombok.ToString;
2024-05-31 17:02:16 +08:00
import weaver.hrm.User;
import weaver.systeminfo.SystemEnv;
2022-05-07 10:18:50 +08:00
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
@Data
@ToString
2024-05-31 17:02:16 +08:00
@EqualsAndHashCode(callSuper = false)
2022-05-07 10:18:50 +08:00
public class PageInfo<T> extends com.github.pagehelper.PageInfo<T> {
Class<T> clazz;
public void setColumns(List<Column> columns) {
this.columns.addAll(columns);
}
List<Column> columns = new ArrayList<>();
List<DataSource> dataSource = new ArrayList<>();
public PageInfo() {
}
2024-05-31 17:02:16 +08:00
public PageInfo(User user, Class<T> clazz) {
2022-05-07 10:18:50 +08:00
this.clazz = clazz;
2024-05-31 17:02:16 +08:00
this.columns = buildColumns(user);
2022-05-07 10:18:50 +08:00
}
public PageInfo(List<T> list) {
super(list);
}
2024-05-31 17:02:16 +08:00
public PageInfo(User user, List<T> list, Class<T> clazz) {
2022-05-07 10:18:50 +08:00
super(list);
this.clazz = clazz;
2024-05-31 17:02:16 +08:00
this.columns = buildColumns(user);
2022-05-07 10:18:50 +08:00
}
2024-05-31 17:02:16 +08:00
public List<Column> buildColumns(User user) {
2022-06-23 09:14:19 +08:00
if (clazz == null) {
2022-05-07 10:18:50 +08:00
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();
2022-06-23 09:14:19 +08:00
String width = annotation.width();
boolean sorter = annotation.sorter();
2024-05-31 11:34:09 +08:00
int labelId = annotation.labelId();
2024-05-31 17:02:16 +08:00
Column column = Column.builder().sorter(sorter).width(width).title(-1 != labelId ? SystemEnv.getHtmlLabelName(labelId, user.getLanguage()) : title).dataIndex(dataIndex).key(key).display(display).build();
2022-05-07 10:18:50 +08:00
columns.add(column);
}
}
return columns;
}
}