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.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 查询运单DTO
 *
 * Company: 湖北普罗格科技股份有限公司
 *
 * @author zhangsj
 * @since 2022/7/20 16:16
 */
@Data
@ApiModel("待提交-查询运单DTO")
public class PendingSubmitQueryDTO implements Serializable {

	private static final long serialVersionUID = 8428322766451988776L;

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

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

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

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

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

	@ApiModelProperty(value = "货主ID")
	private Long 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 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 estimatedPickupStartTime;
	@ApiModelProperty(value = "发货方类型 数据字典SHIPPER_TYPE:1客户 2仓库 3供应商")
	private Integer shipperType;

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

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

	@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 shipperContact;

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

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

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

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

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

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

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

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

	@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 consigneeContact;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	@ApiModelProperty(value = "运单状态 数据字典SHIPBILL_STATUS:0已作废 10初始化 20已提交 5已回退")
	private Integer status;

	@ApiModelProperty(value = "运单状态 数据字典SHIPBILL_STATUS:0已作废 10初始化 20已提交 5已回退")
	private String statusName;

	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@ApiModelProperty(value = "创建时间")
	private Date createtime;

	@ApiModelProperty(value = "运单对应的包裹明细集合")
	List<PendingSubmitQueryPackageDTO> pendingSubmitQueryPackageDTOS = new ArrayList<PendingSubmitQueryPackageDTO>();

	@ApiModelProperty(value = "运单对应的商品明细集合")
	List<PendingSubmitQueryItemDTO> pendingSubmitQueryDetailDTOS = new ArrayList<PendingSubmitQueryItemDTO>();

}
