package cn.iocoder.yudao.module.order.vo.orderSplitItem;

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.*;

import java.math.BigDecimal;
import java.util.*;
import io.swagger.annotations.*;
import javax.validation.constraints.*;

/**
* 订单拆单产品项 Base VO，提供给添加、修改、详细的子 VO 使用
* 如果子 VO 存在差异的字段，请不要添加到这里，影响 Swagger 文档生成
*/
@Data
public class OrderSplitItemBaseVO {

    @ApiModelProperty(value = "拆单id")
    private Long orderSplitId;

    @ApiModelProperty(value = "订单项id")
    private Long orderItemId;

    @ApiModelProperty(value = "商品ID", required = true)
    @NotNull(message = "商品ID不能为空")
    private Long prodId;

    @ApiModelProperty(value = "产品类型")
    private Integer prodType;

    @ApiModelProperty(value = "产品中文标题")
    private String prodTitleZh;

    @ApiModelProperty(value = "产品英文标题")
    private String prodTitleEn;

    @ApiModelProperty(value = "品牌")
    private String brand;

    @ApiModelProperty(value = "0 无牌 1 有牌 2 中性", required = true)
    @NotNull(message = "0 无牌 1 有牌 2 中性不能为空")
    private Integer brandType;

    /**
     * 费用模式：无牌价0，有牌价1，中性品牌价2
     */

    @ApiModelProperty(value = "费用模式：无牌价0，有牌价1，中性品牌价2")
    private Integer feeType;

    @ApiModelProperty(value = "件数")
    private Integer num;

    @ApiModelProperty(value = "数量")
    private Integer quantity;

    @ApiModelProperty(value = "单位")
    private String unit;

    @ApiModelProperty(value = "箱规")
    private String boxGauge;

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

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

    @ApiModelProperty(value = "收费重量")
    private BigDecimal chargeWeight;

    @ApiModelProperty(value = "收费体积")
    private BigDecimal chargeVolume;

    @ApiModelProperty(value = "收费个数")
    private BigDecimal chargeQuantity;

    @ExcelProperty("货值")
    @ApiModelProperty(value = "货值")
    private BigDecimal worth;

    @ApiModelProperty(value = "是否拆单自定义价格")
    private Boolean splitCustomPriceType;

    @ApiModelProperty(value = "原运费成交单价")
    private BigDecimal orgOneSeaFreight = BigDecimal.ZERO;

    @ApiModelProperty(value = "原运费货币单位ID")
    private Integer orgSeaFreightCurrency;

    @ApiModelProperty(value = "原运费计量单位")
    private Long orgSeaFreightVolume;

    @ApiModelProperty(value = "原清关费单价(成交)")
    private BigDecimal orgOneClearanceFreight = BigDecimal.ZERO;

    @ApiModelProperty(value = "原清关费货币单位ID")
    private Integer orgClearanceFreightCurrency;

    @ApiModelProperty(value = "原清关费计量单位")
    private Long orgClearanceFreightVolume;

    @ApiModelProperty(value = "原计费方式：0 运费/清关费 1 全包价")
    private Integer orgCharging;

    @ApiModelProperty(value = "运费成交单价")
    private BigDecimal oneSeaFreight = BigDecimal.ZERO;

    @ApiModelProperty(value = "运费货币单位ID")
    private Integer seaFreightCurrency;

    @ApiModelProperty(value = "运费计量单位")
    private Long seaFreightVolume;

    @ApiModelProperty(value = "清关费单价(成交)")
    private BigDecimal oneClearanceFreight = BigDecimal.ZERO;

    @ApiModelProperty(value = "清关费货币单位ID")
    private Integer clearanceFreightCurrency;

    @ApiModelProperty(value = "清关费计量单位")
    private Long clearanceFreightVolume;

    @ApiModelProperty(value = "计费方式：0 运费/清关费 1 全包价")
    private Integer charging;

    /**
     * 规格记录
     */
    private String specsRecord;

    @ApiModelProperty(value = "规格记录")
    private List<OrderSpiltItemSpecsRecordVO> specsRecordVOList;

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

}
