package com.prolog.rdc.tms.app.model.dto.business;

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

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @author hongbo.pan
 * @date 2022/12/6
 */
@Data
@ApiModel("装车扫描运单DTO")
public class LoadingScanShipBillInfoDTO {

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

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

    @ApiModelProperty(value = "装车单ID")
    private String loadingBillId;

    @ApiModelProperty(value = "装车单编号")
    private String loadingBillNo;

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

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

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

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

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

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

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

    @ApiModelProperty(value = "发货方联系人")
    private String shipperContact;

    @ApiModelProperty(value = "发货方手机号")
    private String shipperPhoneNumber;

    @ApiModelProperty(value = "发货方座机号")
    private String shipperLandlineNumber;

    @ApiModelProperty(value = "发货方邮箱")
    private String shipperEmail;

    @ApiModelProperty(value = "发货方关联手机号")
    private String shipperRelatedPhoneNumber;

    @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 BigDecimal shipperLongitude;

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

    @ApiModelProperty(value = "发货方备注")
    private String shipperMemo;

    @ApiModelProperty(value = "提货签到 数据字典WHETHER:0否，1是")
    private Integer shipperPickUpSign;

    @ApiModelProperty(value = "自动提货签到 数据字典WHETHER:0否，1是")
    private Integer shipperAutoPickUpSign;

    @ApiModelProperty(value = "提货图片 数据字典WHETHER:0否，1是")
    private Integer shipperPickUpPicture;

    @ApiModelProperty(value = "默认提货围栏(km)")
    private BigDecimal shipperPickUpRail;

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

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

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

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

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

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

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

    @ApiModelProperty(value = "收货方联系人")
    private String consigneeContact;

    @ApiModelProperty(value = "收货方手机号")
    private String consigneePhoneNumber;

    @ApiModelProperty(value = "收货方座机号")
    private String consigneeLandlineNumber;

    @ApiModelProperty(value = "收货方邮箱")
    private String consigneeEmail;

    @ApiModelProperty(value = "收货方关联手机号")
    private String consigneeRelatedPhoneNumber;

    @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 BigDecimal consigneeLongitude;

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

    @ApiModelProperty(value = "收货方备注")
    private String consigneeMemo;

    @ApiModelProperty(value = "送达签到 数据字典WHETHER:0否，1是")
    private Integer consigneeDeliverySign;

    @ApiModelProperty(value = "自动送达签到 数据字典WHETHER:0否，1是")
    private Integer consigneeAutoDeliverySign;

    @ApiModelProperty(value = "送货图片 数据字典WHETHER:0否，1是")
    private Integer consigneeDeliveryPicture;

    @ApiModelProperty(value = "默认送货围栏(km)")
    private BigDecimal consigneeDeliveryRail;

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

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

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

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

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

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

    @ApiModelProperty(value = "实际总件数")
    private BigDecimal actualTotalPcs;

    @ApiModelProperty(value = "实际总体积")
    private BigDecimal actualTotalVolume;

    @ApiModelProperty(value = "实际总重量")
    private BigDecimal actualTotalWeight;

    @ApiModelProperty(value = "总发货件数")
    private BigDecimal totalDeliveryPcs;

    @ApiModelProperty(value = "总发货体积")
    private BigDecimal totalDeliveryVolume;

    @ApiModelProperty(value = "总发货重量")
    private BigDecimal totalDeliveryWeight;

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

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

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

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

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

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

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

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

    @ApiModelProperty(value = "运单明细信息")
    private List<LoadingScanShipBillDetailInfoDTO> detailInfoDTOList;
}
