package com.prolog.rdc.tms.model.dto.intelligent;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.List;

/**
 * @author hongbo.pan
 * @date 2023/8/24
 */
@Data
public class IntelligentShipBillDTO {

    @ApiModelProperty(value = "运单ID")
    private String shipbillId;

    @ApiModelProperty(value = "运单编号")
    private String shipbillNo;

    @ApiModelProperty(value = "仓库ID")
    private String branchId;

    @ApiModelProperty(value = "仓库编码")
    private String branchCode;

    @ApiModelProperty(value = "仓库名称")
    private String branchName;

    @ApiModelProperty(value = "货主ID")
    private String cargoOwnerId;

    @ApiModelProperty(value = "货主编码")
    private String cargoOwnerCode;

    @ApiModelProperty(value = "货主名称")
    private String cargoOwnerName;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "订单日期")
    private String orderDate;

    @ApiModelProperty(value = "订单类型 数据字典ORDER_TYPE：1普通 2紧急 3加急")
    private String orderType;

    @ApiModelProperty(value = "订单业务类型 数据字典ORDER_BUSINESS_TYPE：1销售订单-直送  2销售订单-供应商配送 3采购订单-供应商配送 4采购订单-自提 5销售退货 6采购退货 7调拨")
    private String orderBusinessType;

    @ApiModelProperty(value = "配送方式 数据字典DELIVERY_METHOD_TYPE：1配送 2自提")
    private String deliveryMethodType;

    @ApiModelProperty(value = "温度要求 数据字典TEMPERATURE_REQUIREMENT：1常温 2冷藏 3冷冻 4恒温")
    private String temperatureRequirement;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "预计提货开始时间")
    private String estimatedPickupStartTime;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "预计提货结束时间")
    private String estimatedPickupEndTime;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "预计送达开始时间")
    private String estimatedDeliveryStartTime;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "预计结束开始时间")
    private String estimatedDeliveryEndTime;

    @ApiModelProperty(value = "运输时效")
    private String transportAging;

    @ApiModelProperty(value = "发货方类型 数据字典SHIPPER_TYPE:1客户 2仓库 3供应商")
    private String shipperType;

    @ApiModelProperty(value = "发货方单位ID")
    private String shipperUnitId;

    @ApiModelProperty(value = "发货方单位编码")
    private String shipperUnitCode;

    @ApiModelProperty(value = "发货方单位名称")
    private String shipperUnitName;

    @ApiModelProperty(value = "发货方ID")
    private String shipperId;

    @ApiModelProperty(value = "发货方编码")
    private String shipperCode;

    @ApiModelProperty(value = "发货方名称")
    private String shipperName;

    @ApiModelProperty(value = "发货方省编码")
    private String shipperProvince;

    @ApiModelProperty(value = "发货方省名称")
    private String shipperProvinceName;

    @ApiModelProperty(value = "发货方市编码")
    private String shipperCity;

    @ApiModelProperty(value = "发货方市名称")
    private String shipperCityName;

    @ApiModelProperty(value = "发货方区/县编码")
    private String shipperDistrict;

    @ApiModelProperty(value = "发货方区/县名称")
    private String shipperDistrictName;

    @ApiModelProperty(value = "发货方详细地址")
    private String shipperAddress;

    @ApiModelProperty(value = "发货方经度")
    private String shipperLongitude;

    @ApiModelProperty(value = "发货方纬度")
    private String shipperLatitude;

    @ApiModelProperty(value = "收货方类型 数据字典CONSIGNEE_TYPE:1客户 2仓库 3供应商")
    private String consigneeType;

    @ApiModelProperty(value = "收货方单位ID")
    private String consigneeUnitId;

    @ApiModelProperty(value = "收货方单位编码")
    private String consigneeUnitCode;

    @ApiModelProperty(value = "收货方单位名称")
    private String consigneeUnitName;

    @ApiModelProperty(value = "收货方ID")
    private String consigneeId;

    @ApiModelProperty(value = "收货方编码")
    private String consigneeCode;

    @ApiModelProperty(value = "收货方名称")
    private String consigneeName;

    @ApiModelProperty(value = "收货方省编码")
    private String consigneeProvince;

    @ApiModelProperty(value = "收货方省名称")
    private String consigneeProvinceName;

    @ApiModelProperty(value = "收货方市编码")
    private String consigneeCity;

    @ApiModelProperty(value = "收货方市名称")
    private String consigneeCityName;

    @ApiModelProperty(value = "收货方区/县编码")
    private String consigneeDistrict;

    @ApiModelProperty(value = "收货方区/县名称")
    private String consigneeDistrictName;

    @ApiModelProperty(value = "收货方详细地址")
    private String consigneeAddress;

    @ApiModelProperty(value = "收货方经度")
    private String consigneeLongitude;

    @ApiModelProperty(value = "收货方纬度")
    private String consigneeLatitude;

    @ApiModelProperty(value = "线路ID")
    private String lineId;

    @ApiModelProperty(value = "线路编码")
    private String lineCode;

    @ApiModelProperty(value = "线路名称")
    private String lineName;

    @ApiModelProperty(value = "总件数")
    private String totalPcs;

    @ApiModelProperty(value = "总体积")
    private String totalVolume;

    @ApiModelProperty(value = "总重量")
    private String totalWeight;

    @ApiModelProperty(value = "包裹整件数")
    private String packageWholePiece;

    @ApiModelProperty(value = "包裹拼箱数")
    private String packageLclPiece;

    @ApiModelProperty(value = "包裹总体积")
    private String packageTotalVolume;

    @ApiModelProperty(value = "包裹总重量")
    private String packageTotalWeight;

    @ApiModelProperty(value = "承运方(调度)类型 数据字典LINE_CARRIER_TYPE:1.承运商  2.司机")
    private String carrierType;

    @ApiModelProperty(value = "承运商ID")
    private String carrierId;

    @ApiModelProperty(value = "承运商编码")
    private String carrierCode;

    @ApiModelProperty(value = "承运商名称")
    private String carrierName;

    @ApiModelProperty(value = "商品明细")
    private List<IntelligentShipBillDetailDTO> details;

}
