package com.storlead.sales.pojo.entity.sku;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.storlead.framework.common.dto.page.PageDTO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

@Data
@EqualsAndHashCode(callSuper = false)
@TableName("ssd_sku")
public class SsdSku extends PageDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 固态产品SKU主键
     */
    @TableId(value = "ssd_sku_id", type = IdType.AUTO)
    private Integer ssdSkuId;
    /**
     * (关联)产品类型ID
     */
    @TableField("ssd_product_type_id")
    @NotNull(message = "产品类型不能为空")
    private Integer ssdProductTypeId;
    /**
     * sku内部唯一编码
     */
    @TableField("ssd_sku_code")
    @NotNull(message = "内部编号不能为空")
    private String ssdSkuCode;

    /**
     * 规格备注
     */
    private String specificationRemarks;

    /**
     * 功能备注
     */
    private String functionRemarks;
    /**
     * 接口类型(SATA,mSATA,RSATA,SAS,PATA,Half Slim,M.2,CFAST,USB,SD,VPX)
     */
    @TableField("connector_type")
    @NotNull(message = "接口类型不能为空")
    private String connectorType;
    /**
     * 产品尺寸(1.8寸,2.5寸...)
     */
    @TableField("product_size")
    @NotNull(message = "产品尺寸不能为空")
    private String productSize;
    /**
     * 产品协议(SATA2,SATA3...)
     */
    @TableField("connector_protocol")
    @NotNull(message = "产品协议不能为空")
    private String connectorProtocol;
    /**
     * 主控类型(自主 非自主)
     */
    @TableField("core_chip_type")
    @NotNull(message = "主控类型不能为空")
    private String coreChipType;
    /**
     * 产品级别(工业 军工 商业)
     */
    @TableField("product_level")
    @NotNull(message = "产品级别不能为空")
    private String productLevel;
    /**
     * 闪存类型(SLC MLC TLC QLC)
     */
    @TableField("flash_chip_type")
    @NotNull(message = "闪存类型不能为空")
    private String flashChipType;
    /**
     * 容量(1GB 2GB 4GB 8GB 16GB 32GB 64GB 128GB 256GB 512GB 1TB 2TB 4TB 8TB)
     */
    @NotNull(message = "容量不能为空")
    private String capacity;
    /**
     * 物理销毁(1:开通 2:不开通)
     */
    @TableField("open_physical_destroy")
    @NotNull(message = "物理销毁不能为空")
    private Integer openPhysicalDestroy;
    /**
     * 强制开通物理销毁(0/false:非强制 1/true:强制 默认0/false)
     */
    @TableField("force_open_physical_destroy")
    private Boolean forceOpenPhysicalDestroy;
    /**
     * 逻辑销毁(1:开通 2:不开通)
     */
    @TableField("open_logic_destroy")
    @NotNull(message = "逻辑销毁不能为空")
    private Integer openLogicDestroy;
    /**
     * 强制开通逻辑销毁(0/false:非强制 1/true:强制 默认0/false)
     */
    @TableField("force_open_logic_destroy")
    private Boolean forceOpenLogicDestroy;
    /**
     * AES加密(1:开通 2:不开通)
     */
    @TableField("open_aes_encrypt")
    @NotNull(message = "AES加密不能为空")
    private Integer openAesEncrypt;
    /**
     * 强制开通AES加密(0/false:非强制 1/true:强制 默认0/false)
     */
    @TableField("force_open_aes_encrypt")
    private Boolean forceOpenAesEncrypt;
    /**
     * r-backup备份(1:开通 2:不开通)
     */
    @TableField("open_rapid_backup")
    @NotNull(message = "r-backup备份不能为空")
    private Integer openRapidBackup;
    /**
     * 强制开通快速备份(0/false:非强制 1/true:强制 默认0/false)
     */
    @TableField("force_open_rapid_backup")
    private Boolean forceOpenRapidBackup;
    /**
     * 规格书名称
     */
    @TableField("datasheet_name")
    @NotNull(message = "规格书名称L不能为空")
    private String datasheetName;
    /**
     * 规格书URL
     */
    @TableField("datasheet_url")
    @NotNull(message = "规格书URL不能为空")
    private String datasheetUrl;
    /**
     * 单片辅料定价
     */
    @TableField("material_pricing")
    private BigDecimal materialPricing;

    /**
     * 额外附加费
     */
    @TableField("additional_surcharges")
    private BigDecimal additionalSurcharges;
    /**
     * 单片加工(人工)定价
     */
    @TableField("processing_pricing")
    private BigDecimal processingPricing;
    /**
     * (关联)主控芯片ID
     */
    @TableField("ssd_core_chip_id")
    @NotNull(message = "主控型号不能为空")
    private Integer ssdCoreChipId;
    /**
     * 方便前端处理联动选择 后端不需要处理
     */
    @TableField("ssd_core_json")
    private String ssdCoreJson;
    /**
     * (关联)闪存芯片ID
     */
    @TableField("ssd_flash_chip_id")
    @NotNull(message = "Flash型号不能为空")
    private Integer ssdFlashChipId;
    /**
     * 方便前端处理联动选择 后端不需要处理
     */
    @TableField("ssd_flash_json")
    private String ssdFlashJson;
    /**
     * 闪存芯片数量
     */
    @TableField("flash_chip_count")
    @NotNull(message = "Flash数量不能为空")
    private Integer flashChipCount;
    /**
     * 物理销毁价格
     */
    @TableField("physical_destroy_price")
    private BigDecimal physicalDestroyPrice;
    /**
     * 逻辑销毁价格
     */
    @TableField("logic_destroy_price")
    private BigDecimal logicDestroyPrice;
    /**
     * AES加密价格
     */
    @TableField("aes_encrypt_price")
    private BigDecimal aesEncryptPrice;
    /**
     * RAPID_BACKUP价格
     */
    @TableField("rapid_backup_price")
    private BigDecimal rapidBackupPrice;
    /**
     * 老客户折扣 默认给100即 X 100/100 不打折 95折填写95(使用时需要除以100 再乘以 此字段值)
     */
    @TableField("customer_rate")
    private Integer customerRate;
    /**
     * 1:重复数据，管理后台报价专用数据类型 ，0 不是重复数据需要做数据重复校验
     */
    @TableField("repeat_data")
    private Boolean repeatData;
    /**
     * 备注
     */
    private String remark;
    /**
     * SKU状态(1:预上架 2:已上架 3:已下架 默认1)
     */
    private Integer status;
    /**
     * 创建人
     */
//    @TableField("created_by")
//    private Integer createdBy;
    /**
     * 创建时间
     */
//    @TableField("created_time")
//    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
//    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
//    @JSONField(format ="yyyy-MM-dd HH:mm:ss")
//    private Date createdTime;
    /**
     * 更新人
     */
//    @TableField("updated_by")
//    private Integer updatedBy;
    /**
     * 更新时间
     */
//    @TableField("updated_time")
//    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
//    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
//    @JSONField(format ="yyyy-MM-dd HH:mm:ss")
//    private Date updatedTime;


}

