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

import com.fasterxml.jackson.annotation.JsonFormat;
import com.sckw.core.utils.RegularUtils;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
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/13
 */
@Data
public class LogisticsBaseInfoReqVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1427836562492850217L;

    /**
     * 承运单位id
     */
    @NotNull(message = "承运单位不能为空")
    private Long carrierEntId;

    /**
     * 承运单位联系电话
     */
    @NotBlank(message = "承运单位联系电话不能为空")
    @Pattern(regexp = RegularUtils.PHONE_REG, message = "password只能是数字")
    private String carrierPhone;

    /**
     * 计费方式（1按装货量、2按卸货量、3按车次）
     */
//    @NotNull(message = "计费方式不能为空")
    private Integer charging;

    /**
     * 托运单位id
     */
    @NotNull(message = "托运单位不能为空")
    private Long checkedEntId;

    /**
     * 托运单位联系电话
     */
    @NotBlank(message = "托运单位联系电话不能为空")
    private String checkedPhone;

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

    /**
     * 合同名称
     */
    @NotBlank(message = "合同名称不能为空")
    @Size(max = 20, 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;

}
