package org.ta.pddserver.model.pddjy.request;

import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;
import java.io.Serializable;

@Data
public class PddServiceConsoInboundRequest implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 服务商code（必填）
     */
    private String providerCode;

    /**
     * 集运单号（必填）
     */
    private String logisticsOrderCode;

    /**
     * 业务发生时间（必填，格式：yyyy-MM-dd HH:mm:ss）
     */
    private String executeTime;

    /**
     * 时区（非必填，默认北京时区：UTC+8）
     */
    private String timeZone;

    /**
     * 入库状态（必填）
     * <p>PART_INBOUND:部分入库；FULL_INBOUND:全部入库</p>
     */
    private String status;

    /**
     * 包裹数量（非必填）
     * <p>包含本次入库的包裹累计数量，如第一个包裹入库传1，第二个传2，以此类推</p>
     */
    private Long packageQuantity;

    /**
     * 包裹信息（非必填）
     */
    private PackageInfo packageInfo;

    /**
     * 实操结果信息（必填）
     */
    private Result result;


    /**
     * 包裹信息
     */
    @Data
    public static class PackageInfo {
        /**
         * 运单号（必填）
         */
        private String mailNo;

        /**
         * 快递公司编码（必填）
         */
        private String expressCode;

        /**
         * 包裹长度（必填，单位：厘米，无数据传0）
         */
        private Long length;

        /**
         * 包裹宽度（必填，单位：厘米，无数据传0）
         */
        private Long width;

        /**
         * 包裹高度（必填，单位：厘米，无数据传0）
         */
        private Long height;

        /**
         * 计费重量（必填，单位：克）
         */
        private Long weight;

        /**
         * 实重重量（必填，单位：克）
         */
        private Long actualWeight;

        /**
         * 入库商品实际普特货类型（非必填，渠道区分普特货时必填）
         * <p>NORMAL-普货；SPECIAL-特货</p>
         */
        private String goodsType;
    }


    /**
     * 实操结果信息
     */
    @Data
    public static class Result {
        /**
         * 实操结果code（必填）
         * <p>0-入库成功；其他code-问题件异常上报（详见附录五）</p>
         */
        private Integer code;

        /**
         * 结果简要描述（非必填，code≠0时必填）
         */
        private String desc;

        /**
         * 结果信息描述（非必填，code≠0时必填）
         */
        private String remark;
    }


}
