package com.wms_main.model.dto.query;

import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.wms_main.repository.utils.StringUtils;
import lombok.Data;

import java.util.List;

/**
 * 带分页的查询
 */
@Data
public class PageQuery {
    /**
     * 页码
     */
    @JsonProperty("pageNo")
    private Long pageNo = 1L;
    /**
     * 每页行数
     */
    @JsonProperty("pageSize")
    private Long pageSize = 10L;
    /**
     * 排序字段
     */
    @JsonProperty("sortBy")
    private List<OrderItem> sortBy;
    /**
     * 站台号
     */
    @JsonProperty("standId")
    private String standId;
    /**
     * 请求用户名
     */
    @JsonProperty("userName")
    private String userName;

    /**
     * 将前端查询转换为数据库查询可用的分页查询
     * @return 分页查询
     * @param <PO> 实体类PO
     */
    public <PO> Page<PO> toMpPage(){
        Page<PO> page = Page.of(pageNo, pageSize);
        if (sortBy != null && !sortBy.isEmpty()) {
            sortBy.forEach(item -> {
                if (StringUtils.isNotEmpty(item.getColumn())) {
                    page.addOrder(item);
                }
            });
        }
        return page;
    }
}
