package com.prolog.rdc.tms.model.vo;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.springframework.format.annotation.DateTimeFormat;

import com.fasterxml.jackson.annotation.JsonFormat;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 运单新增保存 VO
 *
 * Company: 湖北普罗格科技股份有限公司
 *
 * @author zhangsj
 * @since 2022/3/30 17:47
 */
@Data
@ApiModel("运单新增保存VO")
public class ShipbillHeaderSaveVO implements Serializable {

	private static final long serialVersionUID = 256384434799342313L;

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

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

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

	@ApiModelProperty(value = "订单ID")
	private String orderId;

	@ApiModelProperty(value = "订单编号")
	private String orderNo;

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

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

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

	@ApiModelProperty(value = "WMS单据ID")
	private String wmsOrderId;

	@ApiModelProperty(value = "WMS单据编号")
	private String wmsOrderNo;

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

	@ApiModelProperty(value = "运输类型(运输模式) 数据字典TRANSPORT_TYPE:1整车 2零担")
	private Integer transportType;

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

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

	@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 = "是否要求回单 数据字典WHETHER:0否，1是")
	private Integer returnOrderFlag;

	@ApiModelProperty(value = "回单期限 单位:天")
	private Integer returnOrderDeadline;

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

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

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

	@ApiModelProperty(value = "备注")
	private String memo;

	@ApiModelProperty(value = "所属组织ID")
	private Long organizationId;

	@ApiModelProperty(value = "所属组织编码")
	private String organizationCode;

	@ApiModelProperty(value = "所属组织名称")
	private String organizationName;

	@ApiModelProperty(value = "所属部门ID")
	private String departmentId;

	@ApiModelProperty(value = "所属部门编码")
	private String departmentCode;

	@ApiModelProperty(value = "所属部门名称")
	private String departmentName;

	@ApiModelProperty(value = "字符属性扩展1")
	private String extStr1;

	@ApiModelProperty(value = "字符属性扩展2")
	private String extStr2;

	@ApiModelProperty(value = "字符属性扩展3")
	private String extStr3;

	@ApiModelProperty(value = "字符属性扩展4")
	private String extStr4;

	@ApiModelProperty(value = "字符属性扩展5")
	private String extStr5;

	@ApiModelProperty(value = "数值属性扩展1")
	private BigDecimal extNum1;

	@ApiModelProperty(value = "数值属性扩展2")
	private BigDecimal extNum2;

	@ApiModelProperty(value = "数值属性扩展3")
	private BigDecimal extNum3;

	@ApiModelProperty(value = "数值属性扩展4")
	private BigDecimal extNum4;

	@ApiModelProperty(value = "数值属性扩展5")
	private BigDecimal extNum5;

	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@ApiModelProperty(value = "日期属性扩展1")
	private Date extDate1;

	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@ApiModelProperty(value = "日期属性扩展2")
	private Date extDate2;

	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@ApiModelProperty(value = "日期属性扩展3")
	private Date extDate3;

	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@ApiModelProperty(value = "日期属性扩展4")
	private Date extDate4;

	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@ApiModelProperty(value = "日期属性扩展5")
	private Date extDate5;

	@ApiModelProperty(value = "回单图片 数据字典WHETHER:0否，1是")
	private Integer consigneeReturnOrderPicture;

	@ApiModelProperty(value = "运单明细集合")
	private List<ShipbillDetailSaveVO> details = new ArrayList<ShipbillDetailSaveVO>();

	@ApiModelProperty(value = "发货方签到时间点 数据字典PICK_UP_SIGN_TIME 10预计提货开始时间 20预计提货结束时间 " +
			"30下单时间 40提交时间 50审核时间 60调度时间 70调度审核时间")
	private Integer shipperSignTime;

	@ApiModelProperty(value = "发货方签到时间期间")
	private Integer shipperSignTimeDura;

	@ApiModelProperty(value = "发货方签到时间单位 数据字典SIGN_TIME_UNIT 1分钟 2小时 3天")
	private Integer shipperSignTimeUnit;

	@ApiModelProperty(value = "收货方签到时间点 数据字典DELIVERY_SIGN_TIME 10预计送达开始时间 20预计送达结束时间 " +
			"30下单时间 40提交时间 50审核时间 60调度时间 70调度审核时间")
	private Integer consigneeSignTime;

	@ApiModelProperty(value = "收货方签到时间期间")
	private Integer consigneeSignTimeDura;

	@ApiModelProperty(value = "收货方签到时间单位 数据字典SIGN_TIME_UNIT 1分钟 2小时 3天")
	private Integer consigneeSignTimeUnit;

	@ApiModelProperty(value = "发货方站点ID")
	private Long shipperStationId;

	@ApiModelProperty(value = "发货方站点编号")
	private String shipperStationCode;

	@ApiModelProperty(value = "发货方站点名称")
	private String shipperStationName;

	@ApiModelProperty(value = "发货方站点区域")
	private String shipperStationAreas;

	@ApiModelProperty(value = "发货方配送顺序")
	private BigDecimal shipperDeliveryOrder;

	@ApiModelProperty(value = "收货方站点ID")
	private Long consigneeStationId;

	@ApiModelProperty(value = "收货方站点编号")
	private String consigneeStationCode;

	@ApiModelProperty(value = "收货方站点名称")
	private String consigneeStationName;

	@ApiModelProperty(value = "收货方站点区域")
	private String consigneeStationAreas;

	@ApiModelProperty(value = "收货方配送顺序")
	private BigDecimal consigneeDeliveryOrder;
}
