package com.mortals.xhx.module.product.model;
import java.util.List;
import java.util.ArrayList;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.product.model.vo.ProductVo;
/**
* 产品实体对象
*
* @author zxfei
* @date 2021-11-22
*/

public class ProductEntity extends ProductVo {
    private static final long serialVersionUID = 1L;

    /**
    * 用户ID
    */
    private Long customerId;
    /**
    * 产品名称，为产品命名。产品名称在账号内具有唯一性。例如，可以填写为产品型号。支持中文、英文字母、日文、数字、下划线（_）、短划线（-）、at（@）和英文圆括号，长度限制4~30个字符。
    */
    private String productName;
    /**
    * 所属品类，相当于产品模板。1，标准品类：2，其它品类
    */
    private Integer productType;
    /**
    * 数据格式，设备上下行的数据格式。1，标准数据格式：是平台为开发者提供的设备与云端的数据交换协议，采用JSON格式
    */
    private Integer dataType;
    /**
    * 认证方式，设备接入平台的安全认证方式。产品创建成功后，认证方式不可变更。1，设备密钥：使用物联网平台为设备生成的DeviceSecret进行设备认证签名计算。使用DeviceSecret签名计算
    */
    private Integer authType;
    /**
    * 产品备注
    */
    private String productRemark;
    /**
    * 平台为产品颁发的全局唯一标识符
    */
    private String productKey;
    /**
    * 产品状态，（1.开发中，2.发布）
    */
    private Integer productStatus;



    public ProductEntity(){}
    /**
    * 获取 用户ID
    * @return Long
    */
    public Long getCustomerId(){
        return customerId;
    }
    /**
    * 设置 用户ID
    * @param customerId
    */
    public void setCustomerId(Long customerId){
        this.customerId = customerId;
    }
    /**
    * 获取 产品名称，为产品命名。产品名称在账号内具有唯一性。例如，可以填写为产品型号。支持中文、英文字母、日文、数字、下划线（_）、短划线（-）、at（@）和英文圆括号，长度限制4~30个字符。
    * @return String
    */
    public String getProductName(){
        return productName;
    }
    /**
    * 设置 产品名称，为产品命名。产品名称在账号内具有唯一性。例如，可以填写为产品型号。支持中文、英文字母、日文、数字、下划线（_）、短划线（-）、at（@）和英文圆括号，长度限制4~30个字符。
    * @param productName
    */
    public void setProductName(String productName){
        this.productName = productName;
    }
    /**
    * 获取 所属品类，相当于产品模板。1，标准品类：2，其它品类
    * @return Integer
    */
    public Integer getProductType(){
        return productType;
    }
    /**
    * 设置 所属品类，相当于产品模板。1，标准品类：2，其它品类
    * @param productType
    */
    public void setProductType(Integer productType){
        this.productType = productType;
    }
    /**
    * 获取 数据格式，设备上下行的数据格式。1，标准数据格式：是平台为开发者提供的设备与云端的数据交换协议，采用JSON格式
    * @return Integer
    */
    public Integer getDataType(){
        return dataType;
    }
    /**
    * 设置 数据格式，设备上下行的数据格式。1，标准数据格式：是平台为开发者提供的设备与云端的数据交换协议，采用JSON格式
    * @param dataType
    */
    public void setDataType(Integer dataType){
        this.dataType = dataType;
    }
    /**
    * 获取 认证方式，设备接入平台的安全认证方式。产品创建成功后，认证方式不可变更。1，设备密钥：使用物联网平台为设备生成的DeviceSecret进行设备认证签名计算。使用DeviceSecret签名计算
    * @return Integer
    */
    public Integer getAuthType(){
        return authType;
    }
    /**
    * 设置 认证方式，设备接入平台的安全认证方式。产品创建成功后，认证方式不可变更。1，设备密钥：使用物联网平台为设备生成的DeviceSecret进行设备认证签名计算。使用DeviceSecret签名计算
    * @param authType
    */
    public void setAuthType(Integer authType){
        this.authType = authType;
    }
    /**
    * 获取 产品备注
    * @return String
    */
    public String getProductRemark(){
        return productRemark;
    }
    /**
    * 设置 产品备注
    * @param productRemark
    */
    public void setProductRemark(String productRemark){
        this.productRemark = productRemark;
    }
    /**
    * 获取 平台为产品颁发的全局唯一标识符
    * @return String
    */
    public String getProductKey(){
        return productKey;
    }
    /**
    * 设置 平台为产品颁发的全局唯一标识符
    * @param productKey
    */
    public void setProductKey(String productKey){
        this.productKey = productKey;
    }
    /**
    * 获取 产品状态，（1.开发中，2.发布）
    * @return Integer
    */
    public Integer getProductStatus(){
        return productStatus;
    }
    /**
    * 设置 产品状态，（1.开发中，2.发布）
    * @param productStatus
    */
    public void setProductStatus(Integer productStatus){
        this.productStatus = productStatus;
    }




    @Override
    public int hashCode() {
         return this.getId().hashCode();
    }
    @Override
    public boolean equals(Object obj) {
        if (obj == null) return false;
        if (obj instanceof ProductEntity) {
            ProductEntity tmp = (ProductEntity) obj;
            if (this.getId() == tmp.getId()) {
                 return true;
            }
        }
        return false;
    }

    public String toString(){
        StringBuilder sb = new StringBuilder("");
        sb.append(",customerId:").append(getCustomerId());
        sb.append(",productName:").append(getProductName());
        sb.append(",productType:").append(getProductType());
        sb.append(",dataType:").append(getDataType());
        sb.append(",authType:").append(getAuthType());
        sb.append(",productRemark:").append(getProductRemark());
        sb.append(",productKey:").append(getProductKey());
        sb.append(",productStatus:").append(getProductStatus());
        return sb.toString();
    }

    public void initAttrValue(){
            this.customerId = null;
            this.productName = null;
            this.productType = null;
            this.dataType = null;
            this.authType = null;
            this.productRemark = null;
            this.productKey = null;
            this.productStatus = null;
    }
}