package cn.iocoder.yudao.module.order.vo.orderException;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import java.util.Date;
import java.util.List;

import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@Data
@ApiModel("管理后台 - 订单异常查询 VO")
public class OrderExceptionQueryVO {

    @ApiModelProperty(value = "运输方式id")
    private Integer transportId;

    @ApiModelProperty(value = "始发地")
    private String originId;

    @ApiModelProperty(value = "目的地")
    private List<String> destinationId;

    @ApiModelProperty(value = "订单id")
    private Long orderId;

    @ApiModelProperty(value = "订单号查询前缀:包含in,等于eq,不等于ne,不包含nt")
    @NotBlank(message = "订单号查询前缀不能为空")
    private String orderNoKey;

    @ApiModelProperty(value = "订单号")
    private String orderNo;

    @ApiModelProperty(value = "唛头查询前缀:包含in,等于eq,不等于ne,不包含nt")
    @NotBlank(message = "唛头查询前缀不能为空")
    private String marksKey;

    @ApiModelProperty(value = "唛头")
    private String marks;

    @ApiModelProperty(value = "是否控货")
    private Integer isCargoControl;

    @ApiModelProperty(value = "异常类型")
    private List<String> orderExceptionType;

    @ApiModelProperty(value = "异常状态")
    private Integer orderExceptionStatus;

    @ApiModelProperty(value = "发货人")
    private String consignor;

    @ApiModelProperty(value = "备案")
    private String productRecord;

    @ApiModelProperty(value = "1:入仓时间2:处理时间")
    private String dateType;

    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    @ApiModelProperty(value = "开始时间")
    private Date beginCreateTime;

    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    @ApiModelProperty(value = "结束时间")
    private Date endCreateTime;

    @ApiModelProperty(value = "品名查询前缀:包含in,等于eq,不等于ne,不包含nt")
    @NotBlank(message = "品名查询前缀不能为空")
    private String goodsNameKey;

    @ApiModelProperty(value = "品名")
    private String goodsName;

    @ApiModelProperty(value = "跟进人")
    private String salesmanId;

    @ApiModelProperty(value = "客户经理")
    private List<String> customerIds;

    @ApiModelProperty(value = "是否外部仓")
    private Boolean isExternalWarehouse;

    @ApiModelProperty(value = "发货人手机,email,公司名")
    private String consignorText;

    @ApiModelProperty(value = "收货人手机,email,公司名")
    private String consigneeText;

    @ApiModelProperty(value = "OrderId列表，通过多个orderId查询订单时使用")
    private List<Long> orderIdList;

    @ApiModelProperty(value = "有无客户经理")
    private Boolean isHaveCustomer;

    @ApiModelProperty(value = "订单状态")
    private String orderStatus;

    @ApiModelProperty(value = "特需")
    private String packageType;

    @ApiModelProperty(value = "渠道")
    private Long channelId;

}
