/*
 * Oceanengine Open Api
 * 巨量引擎开放平台 Open Api
 *
 * The version of the OpenAPI document: 1.1.19
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


package com.bytedance.ads.model;

import java.util.Objects;
import java.util.Arrays;
import com.bytedance.ads.model.LocalReportMaterialGetV30DataMaterialListMaterialType;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;
import org.openapitools.jackson.nullable.JsonNullable;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.reflect.TypeToken;
import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;

import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import com.bytedance.ads.JSON;

/**
 * LocalReportMaterialGetV30ResponseDataMaterialListInner
 */
@javax.annotation.Generated(value = "com.org.bytedance.ad_open_sdk.JavacusGenerator", date = "2024-09-10T15:29:00.246104612+08:00[Asia/Shanghai]")
public class LocalReportMaterialGetV30ResponseDataMaterialListInner {
  public static final String SERIALIZED_NAME_ATTRIBUTION_CLUE_MESSAGE_CNT = "attribution_clue_message_cnt";
  @SerializedName(SERIALIZED_NAME_ATTRIBUTION_CLUE_MESSAGE_CNT)
  private Long attributionClueMessageCnt = null;

  public static final String SERIALIZED_NAME_ATTRIBUTION_CLUE_PAY_ORDER_CNT = "attribution_clue_pay_order_cnt";
  @SerializedName(SERIALIZED_NAME_ATTRIBUTION_CLUE_PAY_ORDER_CNT)
  private Long attributionCluePayOrderCnt = null;

  public static final String SERIALIZED_NAME_ATTRIBUTION_CONVERSION_RATE = "attribution_conversion_rate";
  @SerializedName(SERIALIZED_NAME_ATTRIBUTION_CONVERSION_RATE)
  private Double attributionConversionRate = null;

  public static final String SERIALIZED_NAME_ATTRIBUTION_CONVERT_CNT = "attribution_convert_cnt";
  @SerializedName(SERIALIZED_NAME_ATTRIBUTION_CONVERT_CNT)
  private Long attributionConvertCnt = null;

  public static final String SERIALIZED_NAME_ATTRIBUTION_CONVERT_COST = "attribution_convert_cost";
  @SerializedName(SERIALIZED_NAME_ATTRIBUTION_CONVERT_COST)
  private Double attributionConvertCost = null;

  public static final String SERIALIZED_NAME_ATTRIBUTION_FORM_CNT = "attribution_form_cnt";
  @SerializedName(SERIALIZED_NAME_ATTRIBUTION_FORM_CNT)
  private Long attributionFormCnt = null;

  public static final String SERIALIZED_NAME_ATTRIBUTION_INTENTION_FORM_CNT = "attribution_intention_form_cnt";
  @SerializedName(SERIALIZED_NAME_ATTRIBUTION_INTENTION_FORM_CNT)
  private Long attributionIntentionFormCnt = null;

  public static final String SERIALIZED_NAME_ATTRIBUTION_INTENTION_MESSAGE_CLUE_CNT = "attribution_intention_message_clue_cnt";
  @SerializedName(SERIALIZED_NAME_ATTRIBUTION_INTENTION_MESSAGE_CLUE_CNT)
  private Long attributionIntentionMessageClueCnt = null;

  public static final String SERIALIZED_NAME_ATTRIBUTION_INTENTION_PHONE_CNT = "attribution_intention_phone_cnt";
  @SerializedName(SERIALIZED_NAME_ATTRIBUTION_INTENTION_PHONE_CNT)
  private Long attributionIntentionPhoneCnt = null;

  public static final String SERIALIZED_NAME_ATTRIBUTION_MESSAGE_ACTION_CNT = "attribution_message_action_cnt";
  @SerializedName(SERIALIZED_NAME_ATTRIBUTION_MESSAGE_ACTION_CNT)
  private Long attributionMessageActionCnt = null;

  public static final String SERIALIZED_NAME_ATTRIBUTION_PHONE_CONFIRM_CNT = "attribution_phone_confirm_cnt";
  @SerializedName(SERIALIZED_NAME_ATTRIBUTION_PHONE_CONFIRM_CNT)
  private Long attributionPhoneConfirmCnt = null;

  public static final String SERIALIZED_NAME_ATTRIBUTION_PHONE_CONNECT_CNT = "attribution_phone_connect_cnt";
  @SerializedName(SERIALIZED_NAME_ATTRIBUTION_PHONE_CONNECT_CNT)
  private Long attributionPhoneConnectCnt = null;

  public static final String SERIALIZED_NAME_CLICK_CNT = "click_cnt";
  @SerializedName(SERIALIZED_NAME_CLICK_CNT)
  private Long clickCnt = null;

  public static final String SERIALIZED_NAME_CLUE_MESSAGE_COUNT = "clue_message_count";
  @SerializedName(SERIALIZED_NAME_CLUE_MESSAGE_COUNT)
  private Long clueMessageCount = null;

  public static final String SERIALIZED_NAME_CLUE_PAY_ORDER_CNT = "clue_pay_order_cnt";
  @SerializedName(SERIALIZED_NAME_CLUE_PAY_ORDER_CNT)
  private Long cluePayOrderCnt = null;

  public static final String SERIALIZED_NAME_CONVERSION_COST = "conversion_cost";
  @SerializedName(SERIALIZED_NAME_CONVERSION_COST)
  private Double conversionCost = null;

  public static final String SERIALIZED_NAME_CONVERSION_RATE = "conversion_rate";
  @SerializedName(SERIALIZED_NAME_CONVERSION_RATE)
  private Double conversionRate = null;

  public static final String SERIALIZED_NAME_CONVERT_CNT = "convert_cnt";
  @SerializedName(SERIALIZED_NAME_CONVERT_CNT)
  private Long convertCnt = null;

  public static final String SERIALIZED_NAME_CPC_PLATFORM = "cpc_platform";
  @SerializedName(SERIALIZED_NAME_CPC_PLATFORM)
  private Double cpcPlatform = null;

  public static final String SERIALIZED_NAME_CPM_PLATFORM = "cpm_platform";
  @SerializedName(SERIALIZED_NAME_CPM_PLATFORM)
  private Double cpmPlatform = null;

  public static final String SERIALIZED_NAME_CTR = "ctr";
  @SerializedName(SERIALIZED_NAME_CTR)
  private Double ctr = null;

  public static final String SERIALIZED_NAME_DY_COLLECT = "dy_collect";
  @SerializedName(SERIALIZED_NAME_DY_COLLECT)
  private Long dyCollect = null;

  public static final String SERIALIZED_NAME_DY_COMMENT = "dy_comment";
  @SerializedName(SERIALIZED_NAME_DY_COMMENT)
  private Long dyComment = null;

  public static final String SERIALIZED_NAME_DY_FOLLOW = "dy_follow";
  @SerializedName(SERIALIZED_NAME_DY_FOLLOW)
  private Long dyFollow = null;

  public static final String SERIALIZED_NAME_DY_LIKE = "dy_like";
  @SerializedName(SERIALIZED_NAME_DY_LIKE)
  private Long dyLike = null;

  public static final String SERIALIZED_NAME_DY_LIKE_RATE = "dy_like_rate";
  @SerializedName(SERIALIZED_NAME_DY_LIKE_RATE)
  private Double dyLikeRate = null;

  public static final String SERIALIZED_NAME_DY_SHARE = "dy_share";
  @SerializedName(SERIALIZED_NAME_DY_SHARE)
  private Long dyShare = null;

  public static final String SERIALIZED_NAME_FORM_CNT = "form_cnt";
  @SerializedName(SERIALIZED_NAME_FORM_CNT)
  private Long formCnt = null;

  public static final String SERIALIZED_NAME_INTENTION_FORM_CNT = "intention_form_cnt";
  @SerializedName(SERIALIZED_NAME_INTENTION_FORM_CNT)
  private Long intentionFormCnt = null;

  public static final String SERIALIZED_NAME_INTENTION_MESSAGE_CLUE_CNT = "intention_message_clue_cnt";
  @SerializedName(SERIALIZED_NAME_INTENTION_MESSAGE_CLUE_CNT)
  private Long intentionMessageClueCnt = null;

  public static final String SERIALIZED_NAME_INTENTION_PHONE_CNT = "intention_phone_cnt";
  @SerializedName(SERIALIZED_NAME_INTENTION_PHONE_CNT)
  private Long intentionPhoneCnt = null;

  public static final String SERIALIZED_NAME_LIVE_WATCH_ONE_MINUTE_COUNT = "live_watch_one_minute_count";
  @SerializedName(SERIALIZED_NAME_LIVE_WATCH_ONE_MINUTE_COUNT)
  private Long liveWatchOneMinuteCount = null;

  public static final String SERIALIZED_NAME_LUBAN_LIVE_COMMENT_CNT = "luban_live_comment_cnt";
  @SerializedName(SERIALIZED_NAME_LUBAN_LIVE_COMMENT_CNT)
  private Long lubanLiveCommentCnt = null;

  public static final String SERIALIZED_NAME_LUBAN_LIVE_ENTER_CNT = "luban_live_enter_cnt";
  @SerializedName(SERIALIZED_NAME_LUBAN_LIVE_ENTER_CNT)
  private Long lubanLiveEnterCnt = null;

  public static final String SERIALIZED_NAME_LUBAN_LIVE_SHARE_CNT = "luban_live_share_cnt";
  @SerializedName(SERIALIZED_NAME_LUBAN_LIVE_SHARE_CNT)
  private Long lubanLiveShareCnt = null;

  public static final String SERIALIZED_NAME_MATERIAL_ID = "material_id";
  @SerializedName(SERIALIZED_NAME_MATERIAL_ID)
  private Long materialId = null;

  public static final String SERIALIZED_NAME_MATERIAL_NAME = "material_name";
  @SerializedName(SERIALIZED_NAME_MATERIAL_NAME)
  private String materialName = null;

  public static final String SERIALIZED_NAME_MATERIAL_TYPE = "material_type";
  @SerializedName(SERIALIZED_NAME_MATERIAL_TYPE)
  private LocalReportMaterialGetV30DataMaterialListMaterialType materialType = null;

  public static final String SERIALIZED_NAME_MESSAGE_ACTION_CNT = "message_action_cnt";
  @SerializedName(SERIALIZED_NAME_MESSAGE_ACTION_CNT)
  private Long messageActionCnt = null;

  public static final String SERIALIZED_NAME_PHONE_CONFIRM_CNT = "phone_confirm_cnt";
  @SerializedName(SERIALIZED_NAME_PHONE_CONFIRM_CNT)
  private Long phoneConfirmCnt = null;

  public static final String SERIALIZED_NAME_PHONE_CONNECT_CNT = "phone_connect_cnt";
  @SerializedName(SERIALIZED_NAME_PHONE_CONNECT_CNT)
  private Long phoneConnectCnt = null;

  public static final String SERIALIZED_NAME_PLAY25_FEED_BREAK = "play_25_feed_break";
  @SerializedName(SERIALIZED_NAME_PLAY25_FEED_BREAK)
  private Long play25FeedBreak = null;

  public static final String SERIALIZED_NAME_PLAY50_FEED_BREAK = "play_50_feed_break";
  @SerializedName(SERIALIZED_NAME_PLAY50_FEED_BREAK)
  private Long play50FeedBreak = null;

  public static final String SERIALIZED_NAME_PLAY75_FEED_BREAK = "play_75_feed_break";
  @SerializedName(SERIALIZED_NAME_PLAY75_FEED_BREAK)
  private Long play75FeedBreak = null;

  public static final String SERIALIZED_NAME_PLAY_DURATION3S = "play_duration_3s";
  @SerializedName(SERIALIZED_NAME_PLAY_DURATION3S)
  private Long playDuration3s = null;

  public static final String SERIALIZED_NAME_PLAY_DURATION5S = "play_duration_5s";
  @SerializedName(SERIALIZED_NAME_PLAY_DURATION5S)
  private Long playDuration5s = null;

  public static final String SERIALIZED_NAME_PLAY_DURATION5S_SHOW_CNT_RATE = "play_duration_5s_show_cnt_rate";
  @SerializedName(SERIALIZED_NAME_PLAY_DURATION5S_SHOW_CNT_RATE)
  private Double playDuration5sShowCntRate = null;

  public static final String SERIALIZED_NAME_PLAY_OVER = "play_over";
  @SerializedName(SERIALIZED_NAME_PLAY_OVER)
  private Long playOver = null;

  public static final String SERIALIZED_NAME_PLAY_OVER_RATE = "play_over_rate";
  @SerializedName(SERIALIZED_NAME_PLAY_OVER_RATE)
  private Double playOverRate = null;

  public static final String SERIALIZED_NAME_SHOW_CNT = "show_cnt";
  @SerializedName(SERIALIZED_NAME_SHOW_CNT)
  private Long showCnt = null;

  public static final String SERIALIZED_NAME_STAT_COST = "stat_cost";
  @SerializedName(SERIALIZED_NAME_STAT_COST)
  private Double statCost = null;

  public static final String SERIALIZED_NAME_STAT_TIME_DAY = "stat_time_day";
  @SerializedName(SERIALIZED_NAME_STAT_TIME_DAY)
  private String statTimeDay = null;

  public static final String SERIALIZED_NAME_STAT_TIME_HOUR = "stat_time_hour";
  @SerializedName(SERIALIZED_NAME_STAT_TIME_HOUR)
  private String statTimeHour = null;

  public static final String SERIALIZED_NAME_TOTAL_PLAY = "total_play";
  @SerializedName(SERIALIZED_NAME_TOTAL_PLAY)
  private Long totalPlay = null;

  public LocalReportMaterialGetV30ResponseDataMaterialListInner() {
  }

  public LocalReportMaterialGetV30ResponseDataMaterialListInner attributionClueMessageCnt(Long attributionClueMessageCnt) {
    
    this.attributionClueMessageCnt = attributionClueMessageCnt;
    return this;
  }

   /**
   * 私信留资数(计费时间)
   * @return attributionClueMessageCnt
  **/
  @javax.annotation.Nullable
  public Long getAttributionClueMessageCnt() {
    return attributionClueMessageCnt;
  }


  public void setAttributionClueMessageCnt(Long attributionClueMessageCnt) {
    this.attributionClueMessageCnt = attributionClueMessageCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner attributionCluePayOrderCnt(Long attributionCluePayOrderCnt) {
    
    this.attributionCluePayOrderCnt = attributionCluePayOrderCnt;
    return this;
  }

   /**
   * 团购线索数(计费时间)
   * @return attributionCluePayOrderCnt
  **/
  @javax.annotation.Nullable
  public Long getAttributionCluePayOrderCnt() {
    return attributionCluePayOrderCnt;
  }


  public void setAttributionCluePayOrderCnt(Long attributionCluePayOrderCnt) {
    this.attributionCluePayOrderCnt = attributionCluePayOrderCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner attributionConversionRate(Double attributionConversionRate) {
    
    this.attributionConversionRate = attributionConversionRate;
    return this;
  }

   /**
   * 转化率(计费时间)
   * @return attributionConversionRate
  **/
  @javax.annotation.Nullable
  public Double getAttributionConversionRate() {
    return attributionConversionRate;
  }


  public void setAttributionConversionRate(Double attributionConversionRate) {
    this.attributionConversionRate = attributionConversionRate;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner attributionConvertCnt(Long attributionConvertCnt) {
    
    this.attributionConvertCnt = attributionConvertCnt;
    return this;
  }

   /**
   * 转化数(计费时间)
   * @return attributionConvertCnt
  **/
  @javax.annotation.Nullable
  public Long getAttributionConvertCnt() {
    return attributionConvertCnt;
  }


  public void setAttributionConvertCnt(Long attributionConvertCnt) {
    this.attributionConvertCnt = attributionConvertCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner attributionConvertCost(Double attributionConvertCost) {
    
    this.attributionConvertCost = attributionConvertCost;
    return this;
  }

   /**
   * 转化成本(元)(计费时间)
   * @return attributionConvertCost
  **/
  @javax.annotation.Nullable
  public Double getAttributionConvertCost() {
    return attributionConvertCost;
  }


  public void setAttributionConvertCost(Double attributionConvertCost) {
    this.attributionConvertCost = attributionConvertCost;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner attributionFormCnt(Long attributionFormCnt) {
    
    this.attributionFormCnt = attributionFormCnt;
    return this;
  }

   /**
   * 表单提交数(计费时间)
   * @return attributionFormCnt
  **/
  @javax.annotation.Nullable
  public Long getAttributionFormCnt() {
    return attributionFormCnt;
  }


  public void setAttributionFormCnt(Long attributionFormCnt) {
    this.attributionFormCnt = attributionFormCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner attributionIntentionFormCnt(Long attributionIntentionFormCnt) {
    
    this.attributionIntentionFormCnt = attributionIntentionFormCnt;
    return this;
  }

   /**
   * 意向表单数(计费时间)
   * @return attributionIntentionFormCnt
  **/
  @javax.annotation.Nullable
  public Long getAttributionIntentionFormCnt() {
    return attributionIntentionFormCnt;
  }


  public void setAttributionIntentionFormCnt(Long attributionIntentionFormCnt) {
    this.attributionIntentionFormCnt = attributionIntentionFormCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner attributionIntentionMessageClueCnt(Long attributionIntentionMessageClueCnt) {
    
    this.attributionIntentionMessageClueCnt = attributionIntentionMessageClueCnt;
    return this;
  }

   /**
   * 意向咨询数(计费时间)
   * @return attributionIntentionMessageClueCnt
  **/
  @javax.annotation.Nullable
  public Long getAttributionIntentionMessageClueCnt() {
    return attributionIntentionMessageClueCnt;
  }


  public void setAttributionIntentionMessageClueCnt(Long attributionIntentionMessageClueCnt) {
    this.attributionIntentionMessageClueCnt = attributionIntentionMessageClueCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner attributionIntentionPhoneCnt(Long attributionIntentionPhoneCnt) {
    
    this.attributionIntentionPhoneCnt = attributionIntentionPhoneCnt;
    return this;
  }

   /**
   * 意向话单数(计费时间)
   * @return attributionIntentionPhoneCnt
  **/
  @javax.annotation.Nullable
  public Long getAttributionIntentionPhoneCnt() {
    return attributionIntentionPhoneCnt;
  }


  public void setAttributionIntentionPhoneCnt(Long attributionIntentionPhoneCnt) {
    this.attributionIntentionPhoneCnt = attributionIntentionPhoneCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner attributionMessageActionCnt(Long attributionMessageActionCnt) {
    
    this.attributionMessageActionCnt = attributionMessageActionCnt;
    return this;
  }

   /**
   * 私信咨询数(计费时间)
   * @return attributionMessageActionCnt
  **/
  @javax.annotation.Nullable
  public Long getAttributionMessageActionCnt() {
    return attributionMessageActionCnt;
  }


  public void setAttributionMessageActionCnt(Long attributionMessageActionCnt) {
    this.attributionMessageActionCnt = attributionMessageActionCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner attributionPhoneConfirmCnt(Long attributionPhoneConfirmCnt) {
    
    this.attributionPhoneConfirmCnt = attributionPhoneConfirmCnt;
    return this;
  }

   /**
   * 电话拨打数(计费时间)
   * @return attributionPhoneConfirmCnt
  **/
  @javax.annotation.Nullable
  public Long getAttributionPhoneConfirmCnt() {
    return attributionPhoneConfirmCnt;
  }


  public void setAttributionPhoneConfirmCnt(Long attributionPhoneConfirmCnt) {
    this.attributionPhoneConfirmCnt = attributionPhoneConfirmCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner attributionPhoneConnectCnt(Long attributionPhoneConnectCnt) {
    
    this.attributionPhoneConnectCnt = attributionPhoneConnectCnt;
    return this;
  }

   /**
   * 电话接通数(计费时间)
   * @return attributionPhoneConnectCnt
  **/
  @javax.annotation.Nullable
  public Long getAttributionPhoneConnectCnt() {
    return attributionPhoneConnectCnt;
  }


  public void setAttributionPhoneConnectCnt(Long attributionPhoneConnectCnt) {
    this.attributionPhoneConnectCnt = attributionPhoneConnectCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner clickCnt(Long clickCnt) {
    
    this.clickCnt = clickCnt;
    return this;
  }

   /**
   * 点击次数
   * @return clickCnt
  **/
  @javax.annotation.Nullable
  public Long getClickCnt() {
    return clickCnt;
  }


  public void setClickCnt(Long clickCnt) {
    this.clickCnt = clickCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner clueMessageCount(Long clueMessageCount) {
    
    this.clueMessageCount = clueMessageCount;
    return this;
  }

   /**
   * 私信留资数
   * @return clueMessageCount
  **/
  @javax.annotation.Nullable
  public Long getClueMessageCount() {
    return clueMessageCount;
  }


  public void setClueMessageCount(Long clueMessageCount) {
    this.clueMessageCount = clueMessageCount;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner cluePayOrderCnt(Long cluePayOrderCnt) {
    
    this.cluePayOrderCnt = cluePayOrderCnt;
    return this;
  }

   /**
   * 团购线索数
   * @return cluePayOrderCnt
  **/
  @javax.annotation.Nullable
  public Long getCluePayOrderCnt() {
    return cluePayOrderCnt;
  }


  public void setCluePayOrderCnt(Long cluePayOrderCnt) {
    this.cluePayOrderCnt = cluePayOrderCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner conversionCost(Double conversionCost) {
    
    this.conversionCost = conversionCost;
    return this;
  }

   /**
   * 转化成本(元)
   * @return conversionCost
  **/
  @javax.annotation.Nullable
  public Double getConversionCost() {
    return conversionCost;
  }


  public void setConversionCost(Double conversionCost) {
    this.conversionCost = conversionCost;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner conversionRate(Double conversionRate) {
    
    this.conversionRate = conversionRate;
    return this;
  }

   /**
   * 转化率
   * @return conversionRate
  **/
  @javax.annotation.Nullable
  public Double getConversionRate() {
    return conversionRate;
  }


  public void setConversionRate(Double conversionRate) {
    this.conversionRate = conversionRate;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner convertCnt(Long convertCnt) {
    
    this.convertCnt = convertCnt;
    return this;
  }

   /**
   * 转化数
   * @return convertCnt
  **/
  @javax.annotation.Nullable
  public Long getConvertCnt() {
    return convertCnt;
  }


  public void setConvertCnt(Long convertCnt) {
    this.convertCnt = convertCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner cpcPlatform(Double cpcPlatform) {
    
    this.cpcPlatform = cpcPlatform;
    return this;
  }

   /**
   * 点击均价(元)
   * @return cpcPlatform
  **/
  @javax.annotation.Nullable
  public Double getCpcPlatform() {
    return cpcPlatform;
  }


  public void setCpcPlatform(Double cpcPlatform) {
    this.cpcPlatform = cpcPlatform;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner cpmPlatform(Double cpmPlatform) {
    
    this.cpmPlatform = cpmPlatform;
    return this;
  }

   /**
   * 平均千次展示费用(元)
   * @return cpmPlatform
  **/
  @javax.annotation.Nullable
  public Double getCpmPlatform() {
    return cpmPlatform;
  }


  public void setCpmPlatform(Double cpmPlatform) {
    this.cpmPlatform = cpmPlatform;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner ctr(Double ctr) {
    
    this.ctr = ctr;
    return this;
  }

   /**
   * 点击率
   * @return ctr
  **/
  @javax.annotation.Nullable
  public Double getCtr() {
    return ctr;
  }


  public void setCtr(Double ctr) {
    this.ctr = ctr;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner dyCollect(Long dyCollect) {
    
    this.dyCollect = dyCollect;
    return this;
  }

   /**
   * 视频收藏次数
   * @return dyCollect
  **/
  @javax.annotation.Nullable
  public Long getDyCollect() {
    return dyCollect;
  }


  public void setDyCollect(Long dyCollect) {
    this.dyCollect = dyCollect;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner dyComment(Long dyComment) {
    
    this.dyComment = dyComment;
    return this;
  }

   /**
   * 视频评论次数
   * @return dyComment
  **/
  @javax.annotation.Nullable
  public Long getDyComment() {
    return dyComment;
  }


  public void setDyComment(Long dyComment) {
    this.dyComment = dyComment;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner dyFollow(Long dyFollow) {
    
    this.dyFollow = dyFollow;
    return this;
  }

   /**
   * 粉丝量
   * @return dyFollow
  **/
  @javax.annotation.Nullable
  public Long getDyFollow() {
    return dyFollow;
  }


  public void setDyFollow(Long dyFollow) {
    this.dyFollow = dyFollow;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner dyLike(Long dyLike) {
    
    this.dyLike = dyLike;
    return this;
  }

   /**
   * 视频点赞次数
   * @return dyLike
  **/
  @javax.annotation.Nullable
  public Long getDyLike() {
    return dyLike;
  }


  public void setDyLike(Long dyLike) {
    this.dyLike = dyLike;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner dyLikeRate(Double dyLikeRate) {
    
    this.dyLikeRate = dyLikeRate;
    return this;
  }

   /**
   * 视频点赞率
   * @return dyLikeRate
  **/
  @javax.annotation.Nullable
  public Double getDyLikeRate() {
    return dyLikeRate;
  }


  public void setDyLikeRate(Double dyLikeRate) {
    this.dyLikeRate = dyLikeRate;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner dyShare(Long dyShare) {
    
    this.dyShare = dyShare;
    return this;
  }

   /**
   * 视频分享次数
   * @return dyShare
  **/
  @javax.annotation.Nullable
  public Long getDyShare() {
    return dyShare;
  }


  public void setDyShare(Long dyShare) {
    this.dyShare = dyShare;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner formCnt(Long formCnt) {
    
    this.formCnt = formCnt;
    return this;
  }

   /**
   * 表单提交数
   * @return formCnt
  **/
  @javax.annotation.Nullable
  public Long getFormCnt() {
    return formCnt;
  }


  public void setFormCnt(Long formCnt) {
    this.formCnt = formCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner intentionFormCnt(Long intentionFormCnt) {
    
    this.intentionFormCnt = intentionFormCnt;
    return this;
  }

   /**
   * 意向表单数
   * @return intentionFormCnt
  **/
  @javax.annotation.Nullable
  public Long getIntentionFormCnt() {
    return intentionFormCnt;
  }


  public void setIntentionFormCnt(Long intentionFormCnt) {
    this.intentionFormCnt = intentionFormCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner intentionMessageClueCnt(Long intentionMessageClueCnt) {
    
    this.intentionMessageClueCnt = intentionMessageClueCnt;
    return this;
  }

   /**
   * 意向咨询数
   * @return intentionMessageClueCnt
  **/
  @javax.annotation.Nullable
  public Long getIntentionMessageClueCnt() {
    return intentionMessageClueCnt;
  }


  public void setIntentionMessageClueCnt(Long intentionMessageClueCnt) {
    this.intentionMessageClueCnt = intentionMessageClueCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner intentionPhoneCnt(Long intentionPhoneCnt) {
    
    this.intentionPhoneCnt = intentionPhoneCnt;
    return this;
  }

   /**
   * 意向话单数
   * @return intentionPhoneCnt
  **/
  @javax.annotation.Nullable
  public Long getIntentionPhoneCnt() {
    return intentionPhoneCnt;
  }


  public void setIntentionPhoneCnt(Long intentionPhoneCnt) {
    this.intentionPhoneCnt = intentionPhoneCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner liveWatchOneMinuteCount(Long liveWatchOneMinuteCount) {
    
    this.liveWatchOneMinuteCount = liveWatchOneMinuteCount;
    return this;
  }

   /**
   * 直播间超1分钟停留次数
   * @return liveWatchOneMinuteCount
  **/
  @javax.annotation.Nullable
  public Long getLiveWatchOneMinuteCount() {
    return liveWatchOneMinuteCount;
  }


  public void setLiveWatchOneMinuteCount(Long liveWatchOneMinuteCount) {
    this.liveWatchOneMinuteCount = liveWatchOneMinuteCount;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner lubanLiveCommentCnt(Long lubanLiveCommentCnt) {
    
    this.lubanLiveCommentCnt = lubanLiveCommentCnt;
    return this;
  }

   /**
   * 直播间评论次数
   * @return lubanLiveCommentCnt
  **/
  @javax.annotation.Nullable
  public Long getLubanLiveCommentCnt() {
    return lubanLiveCommentCnt;
  }


  public void setLubanLiveCommentCnt(Long lubanLiveCommentCnt) {
    this.lubanLiveCommentCnt = lubanLiveCommentCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner lubanLiveEnterCnt(Long lubanLiveEnterCnt) {
    
    this.lubanLiveEnterCnt = lubanLiveEnterCnt;
    return this;
  }

   /**
   * 直播间观看次数
   * @return lubanLiveEnterCnt
  **/
  @javax.annotation.Nullable
  public Long getLubanLiveEnterCnt() {
    return lubanLiveEnterCnt;
  }


  public void setLubanLiveEnterCnt(Long lubanLiveEnterCnt) {
    this.lubanLiveEnterCnt = lubanLiveEnterCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner lubanLiveShareCnt(Long lubanLiveShareCnt) {
    
    this.lubanLiveShareCnt = lubanLiveShareCnt;
    return this;
  }

   /**
   * 直播间分享次数
   * @return lubanLiveShareCnt
  **/
  @javax.annotation.Nullable
  public Long getLubanLiveShareCnt() {
    return lubanLiveShareCnt;
  }


  public void setLubanLiveShareCnt(Long lubanLiveShareCnt) {
    this.lubanLiveShareCnt = lubanLiveShareCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner materialId(Long materialId) {
    
    this.materialId = materialId;
    return this;
  }

   /**
   * 素材ID
   * @return materialId
  **/
  @javax.annotation.Nullable
  public Long getMaterialId() {
    return materialId;
  }


  public void setMaterialId(Long materialId) {
    this.materialId = materialId;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner materialName(String materialName) {
    
    this.materialName = materialName;
    return this;
  }

   /**
   * 素材名称
   * @return materialName
  **/
  @javax.annotation.Nullable
  public String getMaterialName() {
    return materialName;
  }


  public void setMaterialName(String materialName) {
    this.materialName = materialName;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner materialType(LocalReportMaterialGetV30DataMaterialListMaterialType materialType) {
    
    this.materialType = materialType;
    return this;
  }

   /**
   * Get materialType
   * @return materialType
  **/
  @javax.annotation.Nullable
  public LocalReportMaterialGetV30DataMaterialListMaterialType getMaterialType() {
    return materialType;
  }


  public void setMaterialType(LocalReportMaterialGetV30DataMaterialListMaterialType materialType) {
    this.materialType = materialType;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner messageActionCnt(Long messageActionCnt) {
    
    this.messageActionCnt = messageActionCnt;
    return this;
  }

   /**
   * 私信咨询数
   * @return messageActionCnt
  **/
  @javax.annotation.Nullable
  public Long getMessageActionCnt() {
    return messageActionCnt;
  }


  public void setMessageActionCnt(Long messageActionCnt) {
    this.messageActionCnt = messageActionCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner phoneConfirmCnt(Long phoneConfirmCnt) {
    
    this.phoneConfirmCnt = phoneConfirmCnt;
    return this;
  }

   /**
   * 电话拨打数
   * @return phoneConfirmCnt
  **/
  @javax.annotation.Nullable
  public Long getPhoneConfirmCnt() {
    return phoneConfirmCnt;
  }


  public void setPhoneConfirmCnt(Long phoneConfirmCnt) {
    this.phoneConfirmCnt = phoneConfirmCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner phoneConnectCnt(Long phoneConnectCnt) {
    
    this.phoneConnectCnt = phoneConnectCnt;
    return this;
  }

   /**
   * 电话接通数
   * @return phoneConnectCnt
  **/
  @javax.annotation.Nullable
  public Long getPhoneConnectCnt() {
    return phoneConnectCnt;
  }


  public void setPhoneConnectCnt(Long phoneConnectCnt) {
    this.phoneConnectCnt = phoneConnectCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner play25FeedBreak(Long play25FeedBreak) {
    
    this.play25FeedBreak = play25FeedBreak;
    return this;
  }

   /**
   * 视频25%进度播放次数
   * @return play25FeedBreak
  **/
  @javax.annotation.Nullable
  public Long getPlay25FeedBreak() {
    return play25FeedBreak;
  }


  public void setPlay25FeedBreak(Long play25FeedBreak) {
    this.play25FeedBreak = play25FeedBreak;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner play50FeedBreak(Long play50FeedBreak) {
    
    this.play50FeedBreak = play50FeedBreak;
    return this;
  }

   /**
   * 视频50%进度播放次数
   * @return play50FeedBreak
  **/
  @javax.annotation.Nullable
  public Long getPlay50FeedBreak() {
    return play50FeedBreak;
  }


  public void setPlay50FeedBreak(Long play50FeedBreak) {
    this.play50FeedBreak = play50FeedBreak;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner play75FeedBreak(Long play75FeedBreak) {
    
    this.play75FeedBreak = play75FeedBreak;
    return this;
  }

   /**
   * 视频75%进度播放次数
   * @return play75FeedBreak
  **/
  @javax.annotation.Nullable
  public Long getPlay75FeedBreak() {
    return play75FeedBreak;
  }


  public void setPlay75FeedBreak(Long play75FeedBreak) {
    this.play75FeedBreak = play75FeedBreak;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner playDuration3s(Long playDuration3s) {
    
    this.playDuration3s = playDuration3s;
    return this;
  }

   /**
   * 视频3s播放次数
   * @return playDuration3s
  **/
  @javax.annotation.Nullable
  public Long getPlayDuration3s() {
    return playDuration3s;
  }


  public void setPlayDuration3s(Long playDuration3s) {
    this.playDuration3s = playDuration3s;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner playDuration5s(Long playDuration5s) {
    
    this.playDuration5s = playDuration5s;
    return this;
  }

   /**
   * 视频5s播放次数
   * @return playDuration5s
  **/
  @javax.annotation.Nullable
  public Long getPlayDuration5s() {
    return playDuration5s;
  }


  public void setPlayDuration5s(Long playDuration5s) {
    this.playDuration5s = playDuration5s;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner playDuration5sShowCntRate(Double playDuration5sShowCntRate) {
    
    this.playDuration5sShowCntRate = playDuration5sShowCntRate;
    return this;
  }

   /**
   * 视频5s播放率
   * @return playDuration5sShowCntRate
  **/
  @javax.annotation.Nullable
  public Double getPlayDuration5sShowCntRate() {
    return playDuration5sShowCntRate;
  }


  public void setPlayDuration5sShowCntRate(Double playDuration5sShowCntRate) {
    this.playDuration5sShowCntRate = playDuration5sShowCntRate;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner playOver(Long playOver) {
    
    this.playOver = playOver;
    return this;
  }

   /**
   * 视频播放完成次数
   * @return playOver
  **/
  @javax.annotation.Nullable
  public Long getPlayOver() {
    return playOver;
  }


  public void setPlayOver(Long playOver) {
    this.playOver = playOver;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner playOverRate(Double playOverRate) {
    
    this.playOverRate = playOverRate;
    return this;
  }

   /**
   * 视频完播率
   * @return playOverRate
  **/
  @javax.annotation.Nullable
  public Double getPlayOverRate() {
    return playOverRate;
  }


  public void setPlayOverRate(Double playOverRate) {
    this.playOverRate = playOverRate;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner showCnt(Long showCnt) {
    
    this.showCnt = showCnt;
    return this;
  }

   /**
   * 展示次数
   * @return showCnt
  **/
  @javax.annotation.Nullable
  public Long getShowCnt() {
    return showCnt;
  }


  public void setShowCnt(Long showCnt) {
    this.showCnt = showCnt;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner statCost(Double statCost) {
    
    this.statCost = statCost;
    return this;
  }

   /**
   * 消耗(元)
   * @return statCost
  **/
  @javax.annotation.Nullable
  public Double getStatCost() {
    return statCost;
  }


  public void setStatCost(Double statCost) {
    this.statCost = statCost;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner statTimeDay(String statTimeDay) {
    
    this.statTimeDay = statTimeDay;
    return this;
  }

   /**
   * 时间-天
   * @return statTimeDay
  **/
  @javax.annotation.Nullable
  public String getStatTimeDay() {
    return statTimeDay;
  }


  public void setStatTimeDay(String statTimeDay) {
    this.statTimeDay = statTimeDay;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner statTimeHour(String statTimeHour) {
    
    this.statTimeHour = statTimeHour;
    return this;
  }

   /**
   * 时间-小时
   * @return statTimeHour
  **/
  @javax.annotation.Nullable
  public String getStatTimeHour() {
    return statTimeHour;
  }


  public void setStatTimeHour(String statTimeHour) {
    this.statTimeHour = statTimeHour;
  }


  public LocalReportMaterialGetV30ResponseDataMaterialListInner totalPlay(Long totalPlay) {
    
    this.totalPlay = totalPlay;
    return this;
  }

   /**
   * 视频播放次数
   * @return totalPlay
  **/
  @javax.annotation.Nullable
  public Long getTotalPlay() {
    return totalPlay;
  }


  public void setTotalPlay(Long totalPlay) {
    this.totalPlay = totalPlay;
  }



  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    LocalReportMaterialGetV30ResponseDataMaterialListInner localReportMaterialGetV30ResponseDataMaterialListInner = (LocalReportMaterialGetV30ResponseDataMaterialListInner) o;
    return Objects.equals(this.attributionClueMessageCnt, localReportMaterialGetV30ResponseDataMaterialListInner.attributionClueMessageCnt) &&
        Objects.equals(this.attributionCluePayOrderCnt, localReportMaterialGetV30ResponseDataMaterialListInner.attributionCluePayOrderCnt) &&
        Objects.equals(this.attributionConversionRate, localReportMaterialGetV30ResponseDataMaterialListInner.attributionConversionRate) &&
        Objects.equals(this.attributionConvertCnt, localReportMaterialGetV30ResponseDataMaterialListInner.attributionConvertCnt) &&
        Objects.equals(this.attributionConvertCost, localReportMaterialGetV30ResponseDataMaterialListInner.attributionConvertCost) &&
        Objects.equals(this.attributionFormCnt, localReportMaterialGetV30ResponseDataMaterialListInner.attributionFormCnt) &&
        Objects.equals(this.attributionIntentionFormCnt, localReportMaterialGetV30ResponseDataMaterialListInner.attributionIntentionFormCnt) &&
        Objects.equals(this.attributionIntentionMessageClueCnt, localReportMaterialGetV30ResponseDataMaterialListInner.attributionIntentionMessageClueCnt) &&
        Objects.equals(this.attributionIntentionPhoneCnt, localReportMaterialGetV30ResponseDataMaterialListInner.attributionIntentionPhoneCnt) &&
        Objects.equals(this.attributionMessageActionCnt, localReportMaterialGetV30ResponseDataMaterialListInner.attributionMessageActionCnt) &&
        Objects.equals(this.attributionPhoneConfirmCnt, localReportMaterialGetV30ResponseDataMaterialListInner.attributionPhoneConfirmCnt) &&
        Objects.equals(this.attributionPhoneConnectCnt, localReportMaterialGetV30ResponseDataMaterialListInner.attributionPhoneConnectCnt) &&
        Objects.equals(this.clickCnt, localReportMaterialGetV30ResponseDataMaterialListInner.clickCnt) &&
        Objects.equals(this.clueMessageCount, localReportMaterialGetV30ResponseDataMaterialListInner.clueMessageCount) &&
        Objects.equals(this.cluePayOrderCnt, localReportMaterialGetV30ResponseDataMaterialListInner.cluePayOrderCnt) &&
        Objects.equals(this.conversionCost, localReportMaterialGetV30ResponseDataMaterialListInner.conversionCost) &&
        Objects.equals(this.conversionRate, localReportMaterialGetV30ResponseDataMaterialListInner.conversionRate) &&
        Objects.equals(this.convertCnt, localReportMaterialGetV30ResponseDataMaterialListInner.convertCnt) &&
        Objects.equals(this.cpcPlatform, localReportMaterialGetV30ResponseDataMaterialListInner.cpcPlatform) &&
        Objects.equals(this.cpmPlatform, localReportMaterialGetV30ResponseDataMaterialListInner.cpmPlatform) &&
        Objects.equals(this.ctr, localReportMaterialGetV30ResponseDataMaterialListInner.ctr) &&
        Objects.equals(this.dyCollect, localReportMaterialGetV30ResponseDataMaterialListInner.dyCollect) &&
        Objects.equals(this.dyComment, localReportMaterialGetV30ResponseDataMaterialListInner.dyComment) &&
        Objects.equals(this.dyFollow, localReportMaterialGetV30ResponseDataMaterialListInner.dyFollow) &&
        Objects.equals(this.dyLike, localReportMaterialGetV30ResponseDataMaterialListInner.dyLike) &&
        Objects.equals(this.dyLikeRate, localReportMaterialGetV30ResponseDataMaterialListInner.dyLikeRate) &&
        Objects.equals(this.dyShare, localReportMaterialGetV30ResponseDataMaterialListInner.dyShare) &&
        Objects.equals(this.formCnt, localReportMaterialGetV30ResponseDataMaterialListInner.formCnt) &&
        Objects.equals(this.intentionFormCnt, localReportMaterialGetV30ResponseDataMaterialListInner.intentionFormCnt) &&
        Objects.equals(this.intentionMessageClueCnt, localReportMaterialGetV30ResponseDataMaterialListInner.intentionMessageClueCnt) &&
        Objects.equals(this.intentionPhoneCnt, localReportMaterialGetV30ResponseDataMaterialListInner.intentionPhoneCnt) &&
        Objects.equals(this.liveWatchOneMinuteCount, localReportMaterialGetV30ResponseDataMaterialListInner.liveWatchOneMinuteCount) &&
        Objects.equals(this.lubanLiveCommentCnt, localReportMaterialGetV30ResponseDataMaterialListInner.lubanLiveCommentCnt) &&
        Objects.equals(this.lubanLiveEnterCnt, localReportMaterialGetV30ResponseDataMaterialListInner.lubanLiveEnterCnt) &&
        Objects.equals(this.lubanLiveShareCnt, localReportMaterialGetV30ResponseDataMaterialListInner.lubanLiveShareCnt) &&
        Objects.equals(this.materialId, localReportMaterialGetV30ResponseDataMaterialListInner.materialId) &&
        Objects.equals(this.materialName, localReportMaterialGetV30ResponseDataMaterialListInner.materialName) &&
        Objects.equals(this.materialType, localReportMaterialGetV30ResponseDataMaterialListInner.materialType) &&
        Objects.equals(this.messageActionCnt, localReportMaterialGetV30ResponseDataMaterialListInner.messageActionCnt) &&
        Objects.equals(this.phoneConfirmCnt, localReportMaterialGetV30ResponseDataMaterialListInner.phoneConfirmCnt) &&
        Objects.equals(this.phoneConnectCnt, localReportMaterialGetV30ResponseDataMaterialListInner.phoneConnectCnt) &&
        Objects.equals(this.play25FeedBreak, localReportMaterialGetV30ResponseDataMaterialListInner.play25FeedBreak) &&
        Objects.equals(this.play50FeedBreak, localReportMaterialGetV30ResponseDataMaterialListInner.play50FeedBreak) &&
        Objects.equals(this.play75FeedBreak, localReportMaterialGetV30ResponseDataMaterialListInner.play75FeedBreak) &&
        Objects.equals(this.playDuration3s, localReportMaterialGetV30ResponseDataMaterialListInner.playDuration3s) &&
        Objects.equals(this.playDuration5s, localReportMaterialGetV30ResponseDataMaterialListInner.playDuration5s) &&
        Objects.equals(this.playDuration5sShowCntRate, localReportMaterialGetV30ResponseDataMaterialListInner.playDuration5sShowCntRate) &&
        Objects.equals(this.playOver, localReportMaterialGetV30ResponseDataMaterialListInner.playOver) &&
        Objects.equals(this.playOverRate, localReportMaterialGetV30ResponseDataMaterialListInner.playOverRate) &&
        Objects.equals(this.showCnt, localReportMaterialGetV30ResponseDataMaterialListInner.showCnt) &&
        Objects.equals(this.statCost, localReportMaterialGetV30ResponseDataMaterialListInner.statCost) &&
        Objects.equals(this.statTimeDay, localReportMaterialGetV30ResponseDataMaterialListInner.statTimeDay) &&
        Objects.equals(this.statTimeHour, localReportMaterialGetV30ResponseDataMaterialListInner.statTimeHour) &&
        Objects.equals(this.totalPlay, localReportMaterialGetV30ResponseDataMaterialListInner.totalPlay);
  }

  private static <T> boolean equalsNullable(JsonNullable<T> a, JsonNullable<T> b) {
    return a == b || (a != null && b != null && a.isPresent() && b.isPresent() && Objects.deepEquals(a.get(), b.get()));
  }

  @Override
  public int hashCode() {
    return Objects.hash(attributionClueMessageCnt, attributionCluePayOrderCnt, attributionConversionRate, attributionConvertCnt, attributionConvertCost, attributionFormCnt, attributionIntentionFormCnt, attributionIntentionMessageClueCnt, attributionIntentionPhoneCnt, attributionMessageActionCnt, attributionPhoneConfirmCnt, attributionPhoneConnectCnt, clickCnt, clueMessageCount, cluePayOrderCnt, conversionCost, conversionRate, convertCnt, cpcPlatform, cpmPlatform, ctr, dyCollect, dyComment, dyFollow, dyLike, dyLikeRate, dyShare, formCnt, intentionFormCnt, intentionMessageClueCnt, intentionPhoneCnt, liveWatchOneMinuteCount, lubanLiveCommentCnt, lubanLiveEnterCnt, lubanLiveShareCnt, materialId, materialName, materialType, messageActionCnt, phoneConfirmCnt, phoneConnectCnt, play25FeedBreak, play50FeedBreak, play75FeedBreak, playDuration3s, playDuration5s, playDuration5sShowCntRate, playOver, playOverRate, showCnt, statCost, statTimeDay, statTimeHour, totalPlay);
  }

  private static <T> int hashCodeNullable(JsonNullable<T> a) {
    if (a == null) {
      return 1;
    }
    return a.isPresent() ? Arrays.deepHashCode(new Object[]{a.get()}) : 31;
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class LocalReportMaterialGetV30ResponseDataMaterialListInner {\n");
    sb.append("    attributionClueMessageCnt: ").append(toIndentedString(attributionClueMessageCnt)).append("\n");
    sb.append("    attributionCluePayOrderCnt: ").append(toIndentedString(attributionCluePayOrderCnt)).append("\n");
    sb.append("    attributionConversionRate: ").append(toIndentedString(attributionConversionRate)).append("\n");
    sb.append("    attributionConvertCnt: ").append(toIndentedString(attributionConvertCnt)).append("\n");
    sb.append("    attributionConvertCost: ").append(toIndentedString(attributionConvertCost)).append("\n");
    sb.append("    attributionFormCnt: ").append(toIndentedString(attributionFormCnt)).append("\n");
    sb.append("    attributionIntentionFormCnt: ").append(toIndentedString(attributionIntentionFormCnt)).append("\n");
    sb.append("    attributionIntentionMessageClueCnt: ").append(toIndentedString(attributionIntentionMessageClueCnt)).append("\n");
    sb.append("    attributionIntentionPhoneCnt: ").append(toIndentedString(attributionIntentionPhoneCnt)).append("\n");
    sb.append("    attributionMessageActionCnt: ").append(toIndentedString(attributionMessageActionCnt)).append("\n");
    sb.append("    attributionPhoneConfirmCnt: ").append(toIndentedString(attributionPhoneConfirmCnt)).append("\n");
    sb.append("    attributionPhoneConnectCnt: ").append(toIndentedString(attributionPhoneConnectCnt)).append("\n");
    sb.append("    clickCnt: ").append(toIndentedString(clickCnt)).append("\n");
    sb.append("    clueMessageCount: ").append(toIndentedString(clueMessageCount)).append("\n");
    sb.append("    cluePayOrderCnt: ").append(toIndentedString(cluePayOrderCnt)).append("\n");
    sb.append("    conversionCost: ").append(toIndentedString(conversionCost)).append("\n");
    sb.append("    conversionRate: ").append(toIndentedString(conversionRate)).append("\n");
    sb.append("    convertCnt: ").append(toIndentedString(convertCnt)).append("\n");
    sb.append("    cpcPlatform: ").append(toIndentedString(cpcPlatform)).append("\n");
    sb.append("    cpmPlatform: ").append(toIndentedString(cpmPlatform)).append("\n");
    sb.append("    ctr: ").append(toIndentedString(ctr)).append("\n");
    sb.append("    dyCollect: ").append(toIndentedString(dyCollect)).append("\n");
    sb.append("    dyComment: ").append(toIndentedString(dyComment)).append("\n");
    sb.append("    dyFollow: ").append(toIndentedString(dyFollow)).append("\n");
    sb.append("    dyLike: ").append(toIndentedString(dyLike)).append("\n");
    sb.append("    dyLikeRate: ").append(toIndentedString(dyLikeRate)).append("\n");
    sb.append("    dyShare: ").append(toIndentedString(dyShare)).append("\n");
    sb.append("    formCnt: ").append(toIndentedString(formCnt)).append("\n");
    sb.append("    intentionFormCnt: ").append(toIndentedString(intentionFormCnt)).append("\n");
    sb.append("    intentionMessageClueCnt: ").append(toIndentedString(intentionMessageClueCnt)).append("\n");
    sb.append("    intentionPhoneCnt: ").append(toIndentedString(intentionPhoneCnt)).append("\n");
    sb.append("    liveWatchOneMinuteCount: ").append(toIndentedString(liveWatchOneMinuteCount)).append("\n");
    sb.append("    lubanLiveCommentCnt: ").append(toIndentedString(lubanLiveCommentCnt)).append("\n");
    sb.append("    lubanLiveEnterCnt: ").append(toIndentedString(lubanLiveEnterCnt)).append("\n");
    sb.append("    lubanLiveShareCnt: ").append(toIndentedString(lubanLiveShareCnt)).append("\n");
    sb.append("    materialId: ").append(toIndentedString(materialId)).append("\n");
    sb.append("    materialName: ").append(toIndentedString(materialName)).append("\n");
    sb.append("    materialType: ").append(toIndentedString(materialType)).append("\n");
    sb.append("    messageActionCnt: ").append(toIndentedString(messageActionCnt)).append("\n");
    sb.append("    phoneConfirmCnt: ").append(toIndentedString(phoneConfirmCnt)).append("\n");
    sb.append("    phoneConnectCnt: ").append(toIndentedString(phoneConnectCnt)).append("\n");
    sb.append("    play25FeedBreak: ").append(toIndentedString(play25FeedBreak)).append("\n");
    sb.append("    play50FeedBreak: ").append(toIndentedString(play50FeedBreak)).append("\n");
    sb.append("    play75FeedBreak: ").append(toIndentedString(play75FeedBreak)).append("\n");
    sb.append("    playDuration3s: ").append(toIndentedString(playDuration3s)).append("\n");
    sb.append("    playDuration5s: ").append(toIndentedString(playDuration5s)).append("\n");
    sb.append("    playDuration5sShowCntRate: ").append(toIndentedString(playDuration5sShowCntRate)).append("\n");
    sb.append("    playOver: ").append(toIndentedString(playOver)).append("\n");
    sb.append("    playOverRate: ").append(toIndentedString(playOverRate)).append("\n");
    sb.append("    showCnt: ").append(toIndentedString(showCnt)).append("\n");
    sb.append("    statCost: ").append(toIndentedString(statCost)).append("\n");
    sb.append("    statTimeDay: ").append(toIndentedString(statTimeDay)).append("\n");
    sb.append("    statTimeHour: ").append(toIndentedString(statTimeHour)).append("\n");
    sb.append("    totalPlay: ").append(toIndentedString(totalPlay)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }


  public static HashSet<String> openapiFields;
  public static HashSet<String> openapiRequiredFields;

  static {
    // a set of all properties/fields (JSON key names)
    openapiFields = new HashSet<String>();
    openapiFields.add("attribution_clue_message_cnt");
    openapiFields.add("attribution_clue_pay_order_cnt");
    openapiFields.add("attribution_conversion_rate");
    openapiFields.add("attribution_convert_cnt");
    openapiFields.add("attribution_convert_cost");
    openapiFields.add("attribution_form_cnt");
    openapiFields.add("attribution_intention_form_cnt");
    openapiFields.add("attribution_intention_message_clue_cnt");
    openapiFields.add("attribution_intention_phone_cnt");
    openapiFields.add("attribution_message_action_cnt");
    openapiFields.add("attribution_phone_confirm_cnt");
    openapiFields.add("attribution_phone_connect_cnt");
    openapiFields.add("click_cnt");
    openapiFields.add("clue_message_count");
    openapiFields.add("clue_pay_order_cnt");
    openapiFields.add("conversion_cost");
    openapiFields.add("conversion_rate");
    openapiFields.add("convert_cnt");
    openapiFields.add("cpc_platform");
    openapiFields.add("cpm_platform");
    openapiFields.add("ctr");
    openapiFields.add("dy_collect");
    openapiFields.add("dy_comment");
    openapiFields.add("dy_follow");
    openapiFields.add("dy_like");
    openapiFields.add("dy_like_rate");
    openapiFields.add("dy_share");
    openapiFields.add("form_cnt");
    openapiFields.add("intention_form_cnt");
    openapiFields.add("intention_message_clue_cnt");
    openapiFields.add("intention_phone_cnt");
    openapiFields.add("live_watch_one_minute_count");
    openapiFields.add("luban_live_comment_cnt");
    openapiFields.add("luban_live_enter_cnt");
    openapiFields.add("luban_live_share_cnt");
    openapiFields.add("material_id");
    openapiFields.add("material_name");
    openapiFields.add("material_type");
    openapiFields.add("message_action_cnt");
    openapiFields.add("phone_confirm_cnt");
    openapiFields.add("phone_connect_cnt");
    openapiFields.add("play_25_feed_break");
    openapiFields.add("play_50_feed_break");
    openapiFields.add("play_75_feed_break");
    openapiFields.add("play_duration_3s");
    openapiFields.add("play_duration_5s");
    openapiFields.add("play_duration_5s_show_cnt_rate");
    openapiFields.add("play_over");
    openapiFields.add("play_over_rate");
    openapiFields.add("show_cnt");
    openapiFields.add("stat_cost");
    openapiFields.add("stat_time_day");
    openapiFields.add("stat_time_hour");
    openapiFields.add("total_play");

    // a set of required properties/fields (JSON key names)
    openapiRequiredFields = new HashSet<String>();
  }


  public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
    @SuppressWarnings("unchecked")
    @Override
    public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
       if (!LocalReportMaterialGetV30ResponseDataMaterialListInner.class.isAssignableFrom(type.getRawType())) {
         return null; // this class only serializes 'LocalReportMaterialGetV30ResponseDataMaterialListInner' and its subtypes
       }
       final TypeAdapter<JsonElement> elementAdapter = gson.getAdapter(JsonElement.class);
       final TypeAdapter<LocalReportMaterialGetV30ResponseDataMaterialListInner> thisAdapter
                        = gson.getDelegateAdapter(this, TypeToken.get(LocalReportMaterialGetV30ResponseDataMaterialListInner.class));

       return (TypeAdapter<T>) new TypeAdapter<LocalReportMaterialGetV30ResponseDataMaterialListInner>() {
           @Override
           public void write(JsonWriter out, LocalReportMaterialGetV30ResponseDataMaterialListInner value) throws IOException {
             JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject();
             elementAdapter.write(out, obj);
           }

           @Override
           public LocalReportMaterialGetV30ResponseDataMaterialListInner read(JsonReader in) throws IOException {
             JsonElement jsonElement = elementAdapter.read(in);
             return thisAdapter.fromJsonTree(jsonElement);
           }

       }.nullSafe();
    }
  }

 /**
  * Create an instance of LocalReportMaterialGetV30ResponseDataMaterialListInner given an JSON string
  *
  * @param jsonString JSON string
  * @return An instance of LocalReportMaterialGetV30ResponseDataMaterialListInner
  * @throws IOException if the JSON string is invalid with respect to LocalReportMaterialGetV30ResponseDataMaterialListInner
  */
  public static LocalReportMaterialGetV30ResponseDataMaterialListInner fromJson(String jsonString) throws IOException {
    return JSON.getGson().fromJson(jsonString, LocalReportMaterialGetV30ResponseDataMaterialListInner.class);
  }

 /**
  * Convert an instance of LocalReportMaterialGetV30ResponseDataMaterialListInner to an JSON string
  *
  * @return JSON string
  */
  public String toJson() {
    return JSON.getGson().toJson(this);
  }
}

