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

import lombok.Data;
import lombok.EqualsAndHashCode;
import org.ta.pddserver.model.pddjy.request.JYBaseRequestModel;

import java.io.Serial;
import java.io.Serializable;
import java.util.List;

@EqualsAndHashCode(callSuper = true)
@Data
public class PddServiceConsoPackageQueryResponse extends JYBaseRequestModel implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 包裹信息列表（非必填）
     */
    private List<PackageInfo> packageInfos;


    /**
     * 包裹信息
     */
    @Data
    public static class PackageInfo {
        /**
         * 集运仓code（必填）
         */
        private String consoWarehouseCode;

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

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

        /**
         * 包裹状态信息（必填）
         * <p>received：已接收未签收（含未签收无主件）；signed：已签收；rejected：已拒签</p>
         * <p>inbound：已入库；destroy：销毁；start_pick：随合包单开始拣货</p>
         * <p>finish_pick：随合包单完成拣货；has_outbound：已出库（含逆向）；cancel：已取消</p>
         */
        private String packageStatus;

        /**
         * 入库实操时间（必填，格式：yyyy-MM-dd HH:mm:ss）
         */
        private String inBoundExecuteTime;

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

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

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

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

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

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

        /**
         * 拓展字段（非必填，JSON格式字符串，如{"key1":"value1","key2":"value2"}）
         */
        private String attributes;
    }
}
