package com.fs.erp.dto;


import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.List;

/**
 * 商品查询请求DTO
 *
 * @author xdd
 * @version 1.0
 * @since 2025-02-27
 */
@Data
@Accessors(chain = true)
@ApiModel(value = "商品查询请求对象", description = "商品查询请求参数")
public class ProductQueryRequestDTO {

    /**
     * 第几页，从第一页开始，默认1
     */
    @ApiModelProperty(value = "第几页，从第一页开始，默认1", example = "1")
    private Integer pageIndex;

    /**
     * 每页多少条，默认30，最大100
     */
    @ApiModelProperty(value = "每页多少条，默认30，最大100", example = "10")
    private Integer pageSize;

    /**
     * 修改起始时间
     */
    @ApiModelProperty(value = "修改起始时间，和结束时间必须同时存在，时间间隔不能超过七天", example = "2021-12-01 18:34:13")
    private String modifiedBegin;

    /**
     * 修改结束时间
     */
    @ApiModelProperty(value = "修改结束时间，和起始时间必须同时存在，时间间隔不能超过七天", example = "2021-12-08 18:34:13")
    private String modifiedEnd;

    /**
     * 商品编码列表，最多20个
     */
    @ApiModelProperty(value = "商品编码，与修改时间不能同时为空，最多20个", example = "D0005J15101,D0005J20101")
    private String skuIds;

    /**
     * 商品名称(精确搜索)
     */
    @ApiModelProperty(value = "商品名称，与修改时间不能同时为空，仅支持传一个名称（精确搜索）", example = "A01")
    private String exactlyName;

    /**
     * 商品名称(模糊查询)
     */
    @ApiModelProperty(value = "商品名称，与修改时间不能同时为空，仅支持传一个名称（模糊查询）")
    private String name;

    /**
     * 品牌列表
     */
    @ApiModelProperty(value = "品牌列表")
    private List<String> brand;

    /**
     * 款式编码列表
     */
    @ApiModelProperty(value = "款式编码列表")
    private List<String> iIds;

    /**
     * 查询字段类型
     */
    @ApiModelProperty(value = "可传created,modified。默认按照modified查询")
    private String dateField;

    /**
     * 自定义查询字段，多个字段用逗号分开
     */
    @ApiModelProperty(value = "可传：purchase_price 采购价，多个字段用逗号分开")
    private String flds;

    /**
     * 辅助码
     */
    @ApiModelProperty(value = "辅助码，与修改时间不能同时为空")
    private String skuCodes;

    /**
     * 包含标签列表
     */
    @ApiModelProperty(value = "包含标签列表")
    private List<String> labels;

    /**
     * 排除标签列表
     */
    @ApiModelProperty(value = "排除标签列表")
    private List<String> notLabels;

    /**
     * 是否查询库容信息
     */
    @ApiModelProperty(value = "是否查询库容信息")
    private Boolean loadSkuBin;
}
