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

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

import org.springframework.format.annotation.DateTimeFormat;

import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.prolog.product.core.easyexcel.annotation.ValidationPropertyExt;
import com.prolog.product.core.easyexcel.support.DropdownPropExtConverter;
import com.prolog.product.core.easyexcel.util.ValidationCellEnum;

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

@Data
@ApiModel("运单导入VO")
public class BmsShipBillImportVO implements Serializable {

	private static final long serialVersionUID = -2207392178303970499L;

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

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

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

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

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

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

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

	@ExcelProperty(value = "订单类型", converter = DropdownPropExtConverter.class)
	@ValidationPropertyExt(dropdownValues = { "1", "2", "3" }, dropdownNames = { "普通", "紧急", "加急" }, cellType = ValidationCellEnum.LIST)
	private String orderType;

	@ExcelProperty(value = "订单业务类型", converter = DropdownPropExtConverter.class)
	@ValidationPropertyExt(dropdownValues = { "1", "2", "3", "4", "5", "6", "7" }, dropdownNames = { "销售订单-直送", "销售订单-供应商配送", "采购订单-供应商配送", "采购订单-自提", "销售退货", "采购退货", "调拨" }, cellType = ValidationCellEnum.LIST)
	private String orderBusinessType;

	@ExcelProperty(value = "配送方式", converter = DropdownPropExtConverter.class)
	@ValidationPropertyExt(dropdownValues = { "1", "2" }, dropdownNames = { "配送", "自提" }, cellType = ValidationCellEnum.LIST)
	private String deliveryMethodType;

	@ExcelProperty(value = "运输模式", converter = DropdownPropExtConverter.class)
	@ValidationPropertyExt(dropdownValues = { "1", "2" }, dropdownNames = { "整车", "零担" }, cellType = ValidationCellEnum.LIST)
	private String transportType;

	@ExcelProperty(value = "温度要求", converter = DropdownPropExtConverter.class)
	@ValidationPropertyExt(dropdownValues = { "1", "2", "3", "4" }, dropdownNames = { "常温", "冷藏", "冷冻", "恒温" }, cellType = ValidationCellEnum.LIST)
	private String temperatureRequirement;

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

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

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

	@ExcelProperty(value = "发货方类型", converter = DropdownPropExtConverter.class)
	@ValidationPropertyExt(dropdownValues = { "1", "2", "3" }, dropdownNames = { "客户", "仓库", "供应商" }, cellType = ValidationCellEnum.LIST)
	private String shipperType;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	@ExcelProperty(value = "收货方类型", converter = DropdownPropExtConverter.class)
	@ValidationPropertyExt(dropdownValues = { "1", "2", "3" }, dropdownNames = { "客户", "仓库", "供应商" }, cellType = ValidationCellEnum.LIST)
	private String consigneeType;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	@ExcelProperty(value = "承运方类型", converter = DropdownPropExtConverter.class)
	@ValidationPropertyExt(dropdownValues = { "1", "2" }, dropdownNames = { "承运商", "司机" }, cellType = ValidationCellEnum.LIST)
	private Integer carrierType;

	@ExcelProperty(value = "承运商ID")
	private Long carrierId;

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

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

	@ExcelProperty(value = "司机ID")
	private Long driverId;

	@ExcelProperty(value = "司机编号")
	private String driverCode;

	@ExcelProperty(value = "司机名称")
	private String driverName;

	@ExcelProperty(value = "司机手机号")
	private String driverPhoneNumber;

	@ExcelProperty(value = "车辆ID")
	private Long vehicleTypeId;

	@ExcelProperty(value = "车辆编号")
	private String vehicleTypeCode;

	@ExcelProperty(value = "车辆名称")
	private String vehicleTypeName;

	@ExcelProperty(value = "配载重量装载率")
	private String weightLoadingRate;

	@ExcelProperty(value = "隶属机构ID")
	private Long affiliationId;

	@ExcelProperty(value = "隶属机构编码")
	private String affiliationCode;

	@ExcelProperty(value = "隶属机构名称")
	private String affiliationName;

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

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

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

	@ExcelProperty(value = "明细行号")
	private Integer seqNo;

	@ExcelProperty(value = "商品编码")
	private String itemCode;

	@ExcelProperty(value = "商品名称")
	private String itemName;

	@ExcelProperty(value = "商品品类编码")
	private String itemCategoryCode;

	@ExcelProperty(value = "商品品类名称")
	private String itemCategoryName;

	@ExcelProperty(value = "包装类型", converter = DropdownPropExtConverter.class)
	@ValidationPropertyExt(dropdownValues = { "1", "2" }, dropdownNames = { "纸箱", "包装袋" }, cellType = ValidationCellEnum.LIST)
	private String packType;

	@ExcelProperty(value = "货物温层", converter = DropdownPropExtConverter.class)
	@ValidationPropertyExt(dropdownValues = { "1", "2", "3" }, dropdownNames = { "常温", "冷藏", "冷冻" }, cellType = ValidationCellEnum.LIST)
	private String cargoThermosphere;

	@ExcelProperty(value = "件数")
	private BigDecimal pcs;

	@ExcelProperty(value = "体积")
	private BigDecimal volume;

	@ExcelProperty(value = "重量")
	private BigDecimal weight;

	@ApiModelProperty(value = "库存件数")
	private Integer inventoryPcs;

	@ApiModelProperty(value = "暂存位")
	private String stagingLocation;

	@ExcelProperty(value = "商品备注")
	private String itemMemo;

}