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

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

import org.apache.poi.ss.usermodel.IndexedColors;
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 lombok.Data;

/**
 * 
 *
 * 运单导入VO
 *
 * @className :ShipbillImportVO
 * @author :fanzw
 * @creationTime :2022/05/09
 * @description :
 *
 * @modifier :fanzw
 * @modifyTime :2022/05/09
 * @reviseRemarks:
 *
 * @version :1.0.0
 *
 */
@Data
@ApiModel("运单导入VO")
public class ShipbillImportVO implements Serializable {

	private static final long serialVersionUID = 2655957903305704970L;

	@ExcelProperty(value = "序号")
	@ValidationPropertyExt(headFontColor = IndexedColors.RED)
	private String serialNumber;

	@ExcelProperty(value = "货主")
	@ValidationPropertyExt(headFontColor = IndexedColors.RED)
	private String cargoOwnerName;

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

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

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

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

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

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

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

	@ExcelProperty(value = "所属部门")
	@ValidationPropertyExt(headFontColor = IndexedColors.RED)
	private String departmentName;

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

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

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

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

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

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

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

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

	@ExcelProperty(value = "发货方单位")
	@ValidationPropertyExt(headFontColor = IndexedColors.RED)
	private String shipperUnitName;

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

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

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

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

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

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

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

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

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

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

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

	@ExcelProperty(value = "提货签到", converter = DropdownPropExtConverter.class)
	@ValidationPropertyExt(dropdownValues = { "0", "1" }, dropdownNames = { "否", "是" }, cellType = ValidationCellEnum.LIST)
	private String shipperPickUpSign;

	@ExcelProperty(value = "提货自动签到", converter = DropdownPropExtConverter.class)
	@ValidationPropertyExt(dropdownValues = { "0", "1" }, dropdownNames = { "否", "是" }, cellType = ValidationCellEnum.LIST)
	private String shipperAutoPickUpSign;

	@ExcelProperty(value = "提货可签到时间点", converter = DropdownPropExtConverter.class)
	@ValidationPropertyExt(dropdownValues = { "10", "20", "30", "40", "50", "60", "70" }, dropdownNames = { "预计提货开始时间", "预计提货结束时间", "下单时间", "提交时间", "审核时间", "调度时间", "调度审核时间" }, cellType = ValidationCellEnum.LIST)
	private String shipperSignTime;

	@ExcelProperty(value = "提货可签到时间区间")
	private Integer shipperSignTimeDura;

	@ExcelProperty(value = "提货可签到时间单位", converter = DropdownPropExtConverter.class)
	@ValidationPropertyExt(dropdownValues = { "1", "2", "3" }, dropdownNames = { "分钟", "小时", "天" }, cellType = ValidationCellEnum.LIST)
	private String shipperSignTimeUnit;

	@ExcelProperty(value = "提货图片", converter = DropdownPropExtConverter.class)
	@ValidationPropertyExt(dropdownValues = { "0", "1" }, dropdownNames = { "否", "是" }, cellType = ValidationCellEnum.LIST)
	private String shipperPickUpPicture;

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

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

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

	@ExcelProperty(value = "收货方单位")
	@ValidationPropertyExt(headFontColor = IndexedColors.RED)
	private String consigneeUnitName;

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

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

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

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

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

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

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

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

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

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

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

	@ExcelProperty(value = "送达签到", converter = DropdownPropExtConverter.class)
	@ValidationPropertyExt(dropdownValues = { "0", "1" }, dropdownNames = { "否", "是" }, cellType = ValidationCellEnum.LIST)
	private String consigneeDeliverySign;

	@ExcelProperty(value = "送达自动签到", converter = DropdownPropExtConverter.class)
	@ValidationPropertyExt(dropdownValues = { "0", "1" }, dropdownNames = { "否", "是" }, cellType = ValidationCellEnum.LIST)
	private String consigneeAutoDeliverySign;

	@ValidationPropertyExt(dropdownValues = { "10", "20", "30", "40", "50", "60", "70" }, dropdownNames = { "预计送达开始时间", "预计送达结束时间", "下单时间", "提交时间", "审核时间", "调度时间", "调度审核时间" }, cellType = ValidationCellEnum.LIST)
	@ExcelProperty(value = "送达可签到时间点", converter = DropdownPropExtConverter.class)
	private String consigneeSignTime;

	@ExcelProperty(value = "送达可签到时间区间")
	private Integer consigneeSignTimeDura;

	@ValidationPropertyExt(dropdownValues = { "1", "2", "3" }, dropdownNames = { "分钟", "小时", "天" }, cellType = ValidationCellEnum.LIST)
	@ExcelProperty(value = "送达可签到时间单位", converter = DropdownPropExtConverter.class)
	private String consigneeSignTimeUnit;

	@ExcelProperty(value = "送货图片", converter = DropdownPropExtConverter.class)
	@ValidationPropertyExt(dropdownValues = { "0", "1" }, dropdownNames = { "否", "是" }, cellType = ValidationCellEnum.LIST)
	private String consigneeDeliveryPicture;

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

	@ExcelProperty(value = "回单图片", converter = DropdownPropExtConverter.class)
	@ValidationPropertyExt(dropdownValues = { "0", "1" }, dropdownNames = { "否", "是" }, cellType = ValidationCellEnum.LIST)
	private String consigneeReturnOrderPicture;

	@ExcelProperty(value = "正本回单", converter = DropdownPropExtConverter.class)
	@ValidationPropertyExt(dropdownValues = { "0", "1" }, dropdownNames = { "否", "是" }, cellType = ValidationCellEnum.LIST)
	private String returnOrderFlag;

	@ExcelProperty(value = "回单期限(天)")
	private Integer returnOrderDeadline;

	@ExcelProperty(value = "标记")
	private String recordTagWord;

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

	@ExcelProperty(value = "商品名称")
	@ValidationPropertyExt(headFontColor = IndexedColors.RED)
	private String itemName;

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

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

	@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 = "件数")
	@ValidationPropertyExt(headFontColor = IndexedColors.RED)
	private BigDecimal pcs;

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

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

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

	@ExcelProperty(value = "温控区间（下限）")
	private BigDecimal temperatureCtlLowerLimit;

	@ExcelProperty(value = "温控区间（上限）")
	private BigDecimal temperatureCtlUpperLimit;

}
