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

import lombok.*;

import java.math.BigDecimal;
import java.util.*;
import io.swagger.annotations.*;
import com.alibaba.excel.annotation.ExcelProperty;
import cn.iocoder.yudao.framework.excel.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.convert.DictConvert;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;

import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

/**
* 入仓货物详情 Response VO
* @author yanghao
*/
@Data
@ApiModel("管理后台 - 入仓货物详情 Response VO")
public class OrderWarehouseInBackVO {




    @ApiModelProperty(value = "订单ID", required = true)
    @NotNull(message = "订单ID不能为空")
    private Long orderId;


    @ApiModelProperty(value = "订单项ID", required = true)
    @NotNull(message = "订单项id不能为空")
    private Long orderItemId;


    /**
     * 商品ID
     */
    @ApiModelProperty(value = "订单项-商品id")
    private Long prodId;
    /**
     * 产品类型
     */
    @ApiModelProperty(value = "订单项-产品类型")
    private Integer prodType;
    /**
     * 产品中文标题
     */
    @ApiModelProperty(value = "订单项-产品中文标题")
    private String prodTitleZh;
    /**
     * 产品英文标题
     */
    @ApiModelProperty(value = "订单项-产品英文标题")
    private String prodTitleEn;
    /**
     * 品牌
     */
    @ApiModelProperty(value = "订单项-品牌")
    private Long brand;
    /**
     * 0 无牌 1 有牌 2 中性
     */
    @ApiModelProperty(value = "订单项-0 无牌 1 有牌 2 中性")
    private Integer brandType;

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


    @ApiModelProperty(value = "订单项-填单数量")
    private BigDecimal num;

    @ApiModelProperty(value = "订单项-填单体积")
    private BigDecimal volume;

    @ApiModelProperty(value = "订单项-填单重量")
    private BigDecimal weight;
    /**
     * 材质
     */
    @ApiModelProperty(value = "材质")
    private String material;
    /**
     * 商品特性(可选多个特性ID)
     */
    @ApiModelProperty(value = "商品特性(可选多个特性ID)")
    private String prodAttrIds;
    /**
     * 入仓商品特性(可选多个特性ID)
     */
    @ApiModelProperty(value = "入仓商品特性(可选多个特性ID)")
    private String warehouseInProdAttrIds;

    @ApiModelProperty(value = "用途")
    private String usageIds;


    @ApiModelProperty(value = "打包状态 见字典order_item_pack_status")
    private Integer packStatus;



    @ExcelProperty(value = "入库状态 见字典order_warehouse_in_status", converter = DictConvert.class)
    @DictFormat("order_warehouse_in_status") // TODO 代码优化：建议设置到对应的 XXXDictTypeConstants 枚举类中
    @ApiModelProperty(value = "入库状态 见字典order_warehouse_in_status")
    private Integer status;



    @ExcelProperty("箱/件数差")
    @ApiModelProperty(value = "箱/件数差", required = true)
    private Integer cartonsNumDiff;

    @ExcelProperty("数量差类型")
    @ApiModelProperty(value = "类型，多了还是少了，见字典order_warehouse_in_diff_status")
    private Integer diffType;


    @ExcelProperty("入仓时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    @ApiModelProperty(value = "入仓时间", required = true)
    private Date inTime;



    @ExcelProperty("更新时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    @ApiModelProperty(value = "更新时间", required = true)
    private Date updateTime;



    /**
     * 入仓货物信息
     */
    @ApiModelProperty(value = "入仓货物属性集合")
    @Valid
    private List<OrderWarehouseInBackItemDo> orderWarehouseInBackItemDoList;


    @ApiModelProperty(value = "入仓影像列表")
    private List<String> pictureUrls;

}
