package com.sckw.contract.model.vo.req;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;

/**
 * @author czh
 * @desc 贸易合同基础信息
 * @date 2023/7/19
 */
@Data
public class TradeBaseInfoReqVo implements Serializable {

    @Serial
    private static final long serialVersionUID = -5828478625710244673L;

    /**
     * 采购单位id
     */
    @NotNull(message = "采购单位不能为空")
    private Long purchaseEntId;

    /**
     * 采购单位联系电话
     */
    @NotBlank(message = "采购单位联系电话不能为空")
    private String purchasePhone;

    /**
     * 付款方式 1预付款、2货到付款
     */
//    @NotNull(message = "付款方式不能为空")
    private Integer trading;

    /**
     * 供应单位id
     */
    @NotNull(message = "供应单位不能为空")
    private Long provideEntId;

    /**
     * 供应单位联系电话
     */
    @NotBlank(message = "供应单位联系电话不能为空")
    private String providePhone;

    /**
     * 合同编号
     */
    @NotBlank(message = "合同编号不能为空")
    @Size(max = 20, message = "合同编号超长")
    private String contractCode;

    /**
     * 合同名称
     */
    @NotBlank(message = "合同名称不能为空")
    @Size(max = 50, message = "合同编号超长")
    private String contractName;

    /**
     * 终止时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
    private Date endTime;

    /**
     * 签约方式（1线上签约、2线下签约）
     */
    @NotNull(message = "签约方式不能为空")
    private Integer signingWay;

    /**
     * 生效时间
     */
    @NotNull(message = "生效时间不能为空")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
    private Date startTime;

    /**
     * 结算方式 1-普通结算 2-预付制结算
     */
    @NotNull(message = "结算方式不能为空")
    private Integer settlement;

    /**
     * 派车方式
     */
    @Schema(description = "派车方式")
    private Integer dispatchWay;

    /**
     * 托运方式
     */
    @NotNull(message = "托运方式不能为空")
    private Integer consignment;
    /**
     * 卸货方式
     */
    @NotNull(message = "卸货方式不能为空")
    private Integer unloadWay;
    /**
     * 销售人员id
     */
    @NotNull(message = "销售人员不能为空")
    private Long salesmanId;
    /**
     * 销售联系电话
     */
    @NotBlank(message = "销售联系电话不能为空")
    private String salesmanPhone;
    /**
     * 计量方式
     */
    @Schema(description = "计量方式 1-地磅自动计算，2-司机填报")
    private Integer measurementWay;

}
