package com.shkj.wms.domain;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
/**
 * 接收面单对象
 *
 * @author tyl
 * @date 2022-12-25
 */
@Data
@JsonIgnoreProperties
@NoArgsConstructor
@Accessors(chain = true)
public class KdEOrder implements Serializable {
    /**
     * ERP 系统、电商平台等系统或
     * 平台类型用户的会员 ID 或店
     * 铺账号等唯一性标识，用于区
     * 分其用户
     * 汇霖速运或汇森速运
     * (ShipperCode为HUILIN56或
     * HSSY 时)必填
     */
    @JsonProperty("MemberID")
    private String MemberID;
    /**
     * 客户代码
     */
    @JsonProperty("CustomerName")
    private String CustomerName;
    /**
     * 接口密码
     */
    @JsonProperty("CustomerPwd")
    private String CustomerPwd;
    /**
     * 归属网点
     */
    @JsonProperty("SendSite")
    private String SendSite;
    /**
     * 快递公司编码
     */
    @JsonProperty("ShipperCode")
    private String ShipperCode;
    /**
     *快递单号
     */
    @NotBlank(message = "类型不得为空")
    @JsonProperty("LogisticCode")
    private String LogisticCode;
    /**
     * 第三方平台订单号（菜鸟必
     * 填）(ShipperCode 为 JD 且
     * ExpType 为 1 时必填，
     * ShipperCode 为 CN-快递公司
     * 时必填）
     */
    @JsonProperty("ThrOrderCode")
    private String ThrOrderCode;
    /**
     * 订单编号(自定义，不可重复)
     */
    @JsonProperty("OrderCode")
    private String OrderCode;
    /**
     * 月结号(选填)
     */
    @JsonProperty("MonthCode")
    private String MonthCode;
    /**
     * 运费支付方式：
     * 1：现付
     * 2：到付
     * 3：月结
     * 4：第三方付(仅 SF、KYSY 支
     * 持)
     * 京运达支付方式
     * （ShipperCode 为 JYD）：
     * 1：现付
     * 2：提付
     * 3：月结
     * 4：回单付
     */
    @JsonProperty("PayType")
    private String PayType;
    /**
     * 详细快递类型
     */
    @JsonProperty("ExpType")
    private String ExpType;
    /**
     * 是否要求签回单
     * 0：不要求
     * 1：要求
     */
    @JsonProperty("IsReturnSignBill")
    private Long IsReturnSignBill;
    /**
     * 签回单操作要求(如：签名、盖
     * 章、身份证复印件等)
     */
    @JsonProperty("OperateRequire")
    private String OperateRequire;
    /**
     * 快递运费（ShipperCode 为
     * KZWL 时必填）
     */
    @JsonProperty("Cost")
    private Long Cost;
    /**
     * 其他费用
     */
    @JsonProperty("OtherCost")
    private Long OtherCost;

    /**
     * 收件信息
     */
    private Receiver receiver;

    /**
     * 发件信息
     */
    private Sender sender;

    /**
     * 是否通知快递员上门揽件
     * 0：通知，1：不通知，不填则
     * 默认为 1
     */
    @JsonProperty("IsNotice")
    private Long IsNotice;
    /**
     * 上门揽件开始时间，示例：
     * 2021-01-01 09:00:00
     */
    @JsonProperty("StartDate")
    private String StartDate;
    /**
     * 上门揽件结束时间，示例：
     * 2021-01-01 17:00:00
     */
    @JsonProperty("EndDate")
    private String EndDate;
    /**
     * 包裹总重量 kg
     * 1、 当为快运的订单时必填；
     * 2、 （ShipperCode 为 KZWL
     * 时必填）
     */
    @JsonProperty("Weight")
    private Long Weight;
    /**
     * 包裹数(最多支持 300 件) 一个包裹对应一个运单号，如
     * 果是大于 1 个包裹，返回则按
     * 照子母件的方式返回母运单
     * 号和子运单号
     */
    @JsonProperty("Quantity")
    private Long Quantity;
    /**
     * 包裹总体积 m3
     * 1、 当为快运的订单时必填；
     * 2、 （ShipperCode 为 KZWL
     * 时必填）
     */
    @JsonProperty("Volume")
    private Long Volume;
    /**
     * 备注
     */
    @JsonProperty("Remark")
    private String Remark;
    /**
     * 增值服务
     */
    @JsonProperty("AddService")
    private String AddService;

    /**
     * 商品信息
     */
    private List<Commodity> commodity;

    /**
     * 是否返回电子面单模板：（不
     * 填默认为 0）
     * 0：不需要
     * 1：需要
     */
    @JsonProperty("IsReturnPrintTemplate")
    private Long IsReturnPrintTemplate;
    /**
     * 是否订阅短信：（不填默认为
     * 0）
     * 0：不需要
     * 1：需要
     */
    @JsonProperty("IsSendMessage")
    private Long IsSendMessage;
    /**
     * 是否订阅轨迹推送（不填默认
     * 为 1）
     * 0：不订阅
     * 1：订阅
     */
    @JsonProperty("TemplateSize")
    private Long TemplateSize;

}
