Files
contract-manager/common/src/main/java/com/ecep/contract/PageArgument.java
songqq 422994efcd refactor: 重构服务依赖注入和上下文管理
移除硬编码的服务注入,改为使用缓存机制动态获取Bean
优化上下文类结构,统一服务获取方式
添加PageContent类支持分页数据封装
实现异步数据加载功能
2025-09-12 12:20:15 +08:00

82 lines
2.5 KiB
Java

package com.ecep.contract;
import java.util.List;
import java.util.stream.Collectors;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.domain.Sort.NullHandling;
import org.springframework.data.domain.Sort.Order;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class PageArgument {
private boolean paged = false;
private int pageNumber = 0;
private int pageSize = 0;
private long offset = 0;
private List<OrderArgument> orders;
public static PageArgument of(Pageable pageable) {
PageArgument page = new PageArgument();
page.setPaged(pageable.isPaged());
if (page.isPaged()) {
page.setPageNumber(pageable.getPageNumber());
page.setPageSize(pageable.getPageSize());
page.setOffset(pageable.getOffset());
}
Sort sort = pageable.getSort();
if (sort != null && sort.isSorted()) {
page.setOrders(sort.stream().map(OrderArgument::of).collect(Collectors.toList()));
}
return page;
}
public Pageable toPageable() {
Sort sort = null;
if (orders != null && !orders.isEmpty()) {
sort = Sort.by(orders.stream().map(order -> new Order(order.getDirection(), order.getProperty(),
order.isIgnoreCase(), order.getNullHandling()))
.collect(Collectors.toList()));
} else {
sort = Sort.unsorted();
}
if (isPaged()) {
return PageRequest.of(pageNumber, pageSize, sort);
}
return Pageable.unpaged(sort);
}
@JsonIgnore
public boolean isUnpaged() {
return !isPaged();
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class OrderArgument {
private Direction direction;
private String property;
private boolean ignoreCase;
private NullHandling nullHandling;
public static OrderArgument of(Order order) {
return new OrderArgument(order.getDirection(), order.getProperty(), order.isIgnoreCase(),
order.getNullHandling());
}
}
}