package com.sckw.transport.model.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.*;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;


/**
 * @author PC
 */
@Data
public class AddLogisticOrderDTO implements Serializable {
    @Serial
    private static final long serialVersionUID = 6529826978061848338L;
    //物流信息
    private List<LogisticData> logisticInfo;
    /**
     * 1-原矿转运订单
     */
    private Integer orderType;

    /**
     * 企业id
     */
    private Long entId;
    /**
     * 用户id
     */
    private Long userId;
    /**
     * 交易订单id
     */
    private Long tradeOrderId;
    /**
     * 交易订单号
     */
    @NotBlank(message = "订单编号不能为空")
    private String tradeOrderNo;
    /**
     * 非托运方单位
     */
    @NotBlank(message = "非托运方单位名称不能为空")
    private String nonConsignCompany;
    /**
     * 非托运方单位id
     */
    @NotBlank(message = "非托运方单位id不能为空")
    private Long nonConsignCompanyId;
    /**
     * 非托运方联系电话
     */
    @NotBlank(message = "非托运方联系电话不能为空")
    private String nonConsignContactPhone;
    /**
     * 非托运方联系人
     */
    @NotBlank(message = "非托运方联系人不能为空")
    private String nonConsignContacts;
    /**
     * 非托运方联系人id
     */
    @NotBlank(message = "非托运方联系人id不能为空")
    private Long nonConsignContactsId;

    /**
     * 托运单位
     */
    @NotBlank(message = "托运单位名称不能为空")
    private String consignCompany;
    /**
     * 托运单位id
     */
    @NotBlank(message = "托运单位id不能为空")
    private Long consignCompanyId;

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

    /**
     * 托运联系人
     */
    @NotBlank(message = "托运联系人不能为空")
    private String consignContacts;

    /**
     * 托运联系人id
     */
    @NotBlank(message = "托运联系人id不能为空")
    private Long consignContactsId;



    /**
    * 货物id
    */
    @NotNull(message = "货物id不能为空")
    private Long goodsId;
    /**
     * 货物名称
     */
    @NotNull(message = "货物名称不能为空")
    private String goodsName;

    /**
     * 货物类型
     */
    @NotBlank(message = "货物类型不能为空")
    private String goodsType;


    /**
     * 商品价值（扣亏货值）
     */
    private BigDecimal goodsPrice;
    /**
     * 商品价值（扣亏货值）单位
     */
    private String goodsPriceUnit;


    /**
     *装货地址名称
     */
    private String loadName;

    /**
     * 装货城市编码
     */
    private Integer loadCityCode;

    /**
     * 装货城市名称
     */
    private String loadCityName;

    /**
     * 装货联系人
     */
    @NotBlank(message = "装货联系人不能为空")
    private String loadContacts;

    /**
     * 装货联系电话
     */
    @NotBlank(message = "装货联系电话不能为空")
    private String loadPhone;

    /**
     * 装货详细地址
     */
    @NotBlank(message = "装货详细地址不能为空")
    private String loadDetailAddress;

    /**
     *卸货地址id
     */
    private Long unloadId;

    /**
     *卸货地址名称
     */
    private String unloadName;

    /**
     * 卸货城市编码
     */
    @NotNull(message = "卸货城市编码不能为空")
    @Min(value = 0, message = "卸货城市编码必须大于等于{value}")
    @Max(value = 1000000, message = "卸货城市编码必须小于等于{value}")
    private Integer unloadCityCode;

    /**
     * 卸货城市名称
     */
    @NotBlank(message = "卸货城市名称不能为空")
    private String unloadCityName;
    /**
     * 卸货详细地址
     */
    @NotBlank(message = "卸货详细地址不能为空")
    private String unLoadDetailAddress;
    /**
     * 卸货联系人
     */
    @NotBlank(message = "卸货联系人不能为空")
    private String unloadContacts;
    /**
     * 卸货联系电话
     */
    @NotBlank(message = "卸货联系电话不能为空")
    private String unloadPhone;

    /**
     * 装货纬度
     */
    @NotBlank(message = "纬度不能为空")
    private String loadLat;

    /**
     * 装货 经度
     */
    @NotBlank(message = "经度不能为空")
    private String loadLng;

    /**
     * 卸货纬度
     */
    @NotBlank(message = "纬度不能为空")
    private String unloadLat;

    /**
     * 卸货经度
     */
    @NotBlank(message = "经度不能为空")
    private String unloadLng;
    /**
     * 计费方式
     */
    private String billingMode;
    /**
     * 计量方式
     */
    private Integer measurementWay;

    /**
     * 计划卸货时间
     */
    @NotNull(message = "计划卸货时间不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDate endTime;

    /**
     * 计划发货时间
     */
    @NotNull(message = "计划发货时间不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDate startTime;

    /**
     * 派车方式
     */
    @NotNull(message = "派车方式不能为空")
    private Integer dispatchWay;

    /**
     * 平台实际派车数
     */
    @NotNull(message = "平台实际派车数")
    private Integer actualDisPatch;
    /**
     * 商品单位
     */
    private String goodsUnit;
}
