package com.sckw.usual.entity.req;

import jakarta.validation.Valid;
import jakarta.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * @desc: 普货订单请求入参
 * @author: lt
 * @date: 2024/3/28 9:41
 */
@Getter
@Setter
@Accessors(chain = true)
public class OrderGeneralTransportReq implements Serializable {

    private static final long serialVersionUID = 1L;

    /*
    订单来源
     */
    private Integer orderSource;

    /*
    托运企业id
     */
    @NotNull(message = "托运企业id不能是空")
    private Long tyCompanyId;

    /**
     * 托运企业
     */
    @NotBlank(message = "托运企业不能是空")
    private String tyCompany;

    /**
     * 托运联系方式
     */
    private String tyPhone;

    @NotNull(message = "发货企业id不能是空")
    private Long fhCompanyId;

    /**
     * 发货企业
     */
    @NotBlank(message = "发货企业不能是空")
    private String fhCompany;

    /**
     * fh_phone
     */
    private String fhPhone;

    /*
    承运物流公司id
     */
    @NotNull(message = "承运企业id不能是空")
    private Long cyCompanyId;

    /**
     * 承运物流有限公司
     */
    @NotBlank(message = "承运物流公司不能是空")
    private String cyCompany;

    /**
     * 承运联系方式
     */
    private String cyPhone;

    /*
    收货企业id
     */
    @NotNull(message = "收货企业id不能是空")
    private Long shCompanyId;

    /**
     * 收货企业
     */
    private String shCompany;

    /**
     * 收货联系方式
     */
    private String shPhone;

    /*
    货物单位
     */
    private String goodsUnit;

    /*
    装卸类型
     */
    private Integer typeHandling;

    /*
    前置订单号
     */
    private String qzOrder;

    private BigDecimal amount;

    /*
    剩余代运量
     */
    private Double remainNum;

    /**
     * status
     */
    private Integer status;

    /**
     * create_by
     */
    private String createBy;

    /**
     * update_by
     */
    private String updateBy;

    /**
     * 地址信息
     */
    @NotEmpty(message = "装货地址信息必选")
    @Size(min = 1, message = "装货地址信息至少需要一个元素")
    @Valid
    List<kwOrderUsualLandTransportAddressReq> addressList;

    /**
     * 卸货地址
     */
    @NotEmpty(message = "卸货地址信息必选")
    @Size(min = 1, message = "卸货地址信息至少需要一个元素")
    @Valid
    List<kwOrderUsualLandTransportAddressReq> unLoadAddressList;

    /*
    货物信息
     */
    @Valid
    kwOrderUsualLandTransportGoodsReq goodsReq;

    /*
    履约信息
     */
    @Valid
    KwOrderUsualTransportPerReq perReq;

    /*
    扣亏货信息
     */
    @Valid
    KwOrderUsualLandTransportDefGoodsReq defGoods;

    /*
    更多信息
     */
    @Valid
    KwOrderUsualLandTransportMoreReq orderMore;



}
