Bladeren bron

试玩报表

hcst_sunzhen 4 jaren geleden
bovenliggende
commit
0a429156f1

+ 108 - 1
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/controller/BytedanceInterfaceController.java

@@ -2,6 +2,8 @@ package cn.com.ctop.toutiao.modules.report.controller;
 
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceReportMaterialRetry;
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceReportPlayableRetry;
 import cn.com.ctop.toutiao.modules.report.service.IByteDanceVideoReportDailyService;
 import cn.com.ctop.toutiao.modules.report.service.IBytedanceAccountReportService;
 import cn.com.ctop.toutiao.modules.report.service.IBytedanceInterfaceService;
@@ -16,6 +18,10 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
 /**
  * Created by JQ.bi on 2020.6.5
  */
@@ -35,7 +41,7 @@ public class BytedanceInterfaceController {
 
 
     /**
-     * 头条视频素材报表--此接口仅有视频素材,单个accountId拉取数据
+     * 头条试玩报表--单个accountId拉取数据
      * @param startDate
      * @param endDate
      * @return
@@ -79,4 +85,105 @@ public class BytedanceInterfaceController {
         return result;
     }
 
+    //头条试玩报表
+    @GetMapping("/bytedancePlayableReport")
+    public Result bytedancePlayableReport(@RequestParam(name = "startDate") String startDate,
+                                          @RequestParam(name = "endDate") String endDate) {
+        Result result = new Result<>();
+        if (StringUtils.isBlank(startDate) || StringUtils.isBlank(endDate)){
+            result.error500("开始时间和结束时间不能为空");
+            return result;
+        }
+        try {
+            log.info("头条获取试玩报表数据任务执行开始");
+            Long starttime = System.currentTimeMillis();
+            List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
+            if (null == tokens || tokens.size() <= 0) {
+                log.info("头条获取试玩报表数据任务执行失败:未获取到可用的token");
+                return result;
+            }
+
+            final ExecutorService executorService = Executors.newFixedThreadPool(8);
+            tokens.forEach(token -> {
+                        executorService.submit(new Runnable() {
+                            @Override
+                            public void run() {
+                                try {
+                                    //间隔天数
+                                    Long days = DateUtils.getDiscrepantDays(startDate, endDate);
+                                    String start = null;
+                                    String end = null;
+                                    for (int i = 0; i <= days; i++) {
+                                        start = DateUtils.addDay(startDate, i);
+                                        end = start;
+                                        //获取头条试玩报表数据
+                                        bytedanceInterfaceService.bytedancePlayableReport(token, start, end);
+                                    }
+                                } catch (Exception e) {
+                                    e.printStackTrace();
+                                } finally {
+                                }
+                            }
+                        });
+                    }
+            );
+            ////
+            Long endtime = System.currentTimeMillis();
+            log.info("头条获取素材报表数据任务执行结束,执行耗时:{}秒", (endtime - starttime) / 1000);
+        } catch (Exception e) {
+            log.error("头条获取素材报表数据任务执行结失败");
+            e.printStackTrace();
+            result.setSuccess(false);
+        }
+        return result;
+    }
+
+    @GetMapping("/bytedancePlayableReporRetry")
+    public Result bytedancePlayableReporRetry() {
+        log.info("头条获取试玩报表失败数据任务重试开始");
+        Result result = new Result<>();
+        try {
+            List<BytedanceReportPlayableRetry> retryList = bytedanceInterfaceService.getRetryList();
+            final ExecutorService executorService = Executors.newFixedThreadPool(3);
+            retryList.forEach(retry -> {
+                executorService.submit(new Runnable() {
+                    @Override
+                    public void run() {
+                        try {
+                            Integer type = retry.getType();
+                            String startDate = retry.getStartDate();
+                            String endDate = retry.getEndDate();
+                            Long accountId = retry.getAccountId();
+                            CtopOauthToken token = tokenService.getOauthTokenByAccountId(String.valueOf(accountId));
+
+                            Long days = DateUtils.getDiscrepantDays(startDate, endDate); //间隔天数
+                            String start = null;
+                            String end = null;
+                            for (int i = 0; i <= days; i++) {
+                                start = DateUtils.addDay(startDate, i);
+                                end = start;
+                                //获取头条素材报表数据
+                                bytedanceInterfaceService.bytedancePlayableReportRetry(type, token, start, end);
+                            }
+
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                    }
+                });
+            });
+            ////
+
+        } catch (Exception e) {
+            log.error("头条获取试玩报表失败数据任务重试失败");
+            e.printStackTrace();
+            result.setSuccess(false);
+        }
+
+        return result;
+    }
+
+
+
+
 }

+ 160 - 125
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/entity/BytedanceReportPlayableDaily.java

@@ -1,6 +1,5 @@
 package cn.com.ctop.toutiao.modules.report.entity;
 
-import cn.com.ctop.common.module.utils.BigDecimalUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -14,7 +13,6 @@ import org.jeecg.common.util.DateUtils;
 import org.jeecgframework.poi.excel.annotation.Excel;
 
 import java.math.BigDecimal;
-import java.util.Date;
 
 /**
  * 头条视频素材日报表--仅包含视频素材
@@ -160,14 +158,14 @@ public class BytedanceReportPlayableDaily {
 	@Excel(name = "视频-有效播放1", width = 15)
 	@ApiModelProperty(value = "视频-有效播放1")
 	private Integer validPlay;
-	/**视频-wifi播放1*/
-	@Excel(name = "视频-wifi播放1", width = 15)
-	@ApiModelProperty(value = "视频-wifi播放1")
-	private Integer wifiPlay;
-	/**视频-播放时长,单位ms1*/
-	@Excel(name = "视频-播放时长,单位ms1", width = 15)
-	@ApiModelProperty(value = "视频-播放时长,单位ms1")
-	private Integer playDurationSum;
+	///**视频-wifi播放1*/
+	//@Excel(name = "视频-wifi播放1", width = 15)
+	//@ApiModelProperty(value = "视频-wifi播放1")
+	//private Integer wifiPlay;
+	///**视频-播放时长,单位ms1*/
+	//@Excel(name = "视频-播放时长,单位ms1", width = 15)
+	//@ApiModelProperty(value = "视频-播放时长,单位ms1")
+	//private Integer playDurationSum;
 	/**视频-播放25%进度总数1*/
 	@Excel(name = "视频-播放25%进度总数1", width = 15)
 	@ApiModelProperty(value = "视频-播放25%进度总数1")
@@ -224,30 +222,30 @@ public class BytedanceReportPlayableDaily {
 	@Excel(name = "次留数1", width = 15)
 	@ApiModelProperty(value = "次留数1")
 	private Integer nextDayOpen;
-	/**次留率1*/
-	@Excel(name = "次留率1", width = 15)
-	@ApiModelProperty(value = "次留率1")
-	private BigDecimal nextDayOpenRate;
-	/**次留成本*/
-	@Excel(name = "次留成本", width = 15)
-	@ApiModelProperty(value = "次留成本")
-	private BigDecimal nextDayOpenCost;
-	/**素材类型*/
-	@Excel(name = "素材类型", width = 15)
-	@ApiModelProperty(value = "素材类型")
-	private String imageMode;
-	/**素材id*/
-	@Excel(name = "素材id", width = 15)
-	@ApiModelProperty(value = "素材id")
-	private Long materialId;
-	/**投放位置*/
-	@Excel(name = "投放位置", width = 15)
-	@ApiModelProperty(value = "投放位置")
-	private String inventory;
-	/**activePayAmount*/
-	@Excel(name = "activePayAmount", width = 15)
-	@ApiModelProperty(value = "activePayAmount")
-	private Integer activePayAmount;
+	///**次留率1*/
+	//@Excel(name = "次留率1", width = 15)
+	//@ApiModelProperty(value = "次留率1")
+	//private BigDecimal nextDayOpenRate;
+	///**次留成本*/
+	//@Excel(name = "次留成本", width = 15)
+	//@ApiModelProperty(value = "次留成本")
+	//private BigDecimal nextDayOpenCost;
+	///**素材类型*/
+	//@Excel(name = "素材类型", width = 15)
+	//@ApiModelProperty(value = "素材类型")
+	//private String imageMode;
+	///**素材id*/
+	//@Excel(name = "素材id", width = 15)
+	//@ApiModelProperty(value = "素材id")
+	//private Long materialId;
+	///**投放位置*/
+	//@Excel(name = "投放位置", width = 15)
+	//@ApiModelProperty(value = "投放位置")
+	//private String inventory;
+	///**activePayAmount*/
+	//@Excel(name = "activePayAmount", width = 15)
+	//@ApiModelProperty(value = "activePayAmount")
+	//private Integer activePayAmount;
 	/**validPlayCost*/
 	@Excel(name = "validPlayCost", width = 15)
 	@ApiModelProperty(value = "validPlayCost")
@@ -268,14 +266,14 @@ public class BytedanceReportPlayableDaily {
 	@Excel(name = "download", width = 15)
 	@ApiModelProperty(value = "download")
 	private Integer download;
-	/**cpa*/
-	@Excel(name = "cpa", width = 15)
-	@ApiModelProperty(value = "cpa")
-	private BigDecimal cpa;
-	/**cpc*/
-	@Excel(name = "cpc", width = 15)
-	@ApiModelProperty(value = "cpc")
-	private BigDecimal cpc;
+	///**cpa*/
+	//@Excel(name = "cpa", width = 15)
+	//@ApiModelProperty(value = "cpa")
+	//private BigDecimal cpa;
+	///**cpc*/
+	//@Excel(name = "cpc", width = 15)
+	//@ApiModelProperty(value = "cpc")
+	//private BigDecimal cpc;
 	/**locationClick*/
 	@Excel(name = "locationClick", width = 15)
 	@ApiModelProperty(value = "locationClick")
@@ -288,10 +286,10 @@ public class BytedanceReportPlayableDaily {
 	@Excel(name = "ctr", width = 15)
 	@ApiModelProperty(value = "ctr")
 	private BigDecimal ctr;
-	/**cpm*/
-	@Excel(name = "cpm", width = 15)
-	@ApiModelProperty(value = "cpm")
-	private BigDecimal cpm;
+	///**cpm*/
+	//@Excel(name = "cpm", width = 15)
+	//@ApiModelProperty(value = "cpm")
+	//private BigDecimal cpm;
 	/**wifiPlayRate*/
 	@Excel(name = "wifiPlayRate", width = 15)
 	@ApiModelProperty(value = "wifiPlayRate")
@@ -320,14 +318,14 @@ public class BytedanceReportPlayableDaily {
 	@Excel(name = "activeRate", width = 15)
 	@ApiModelProperty(value = "activeRate")
 	private BigDecimal activeRate;
-	/**playDuration10s*/
-	@Excel(name = "playDuration10s", width = 15)
-	@ApiModelProperty(value = "playDuration10s")
-	private Integer playDuration_10s;
-	/**phoneEffective*/
-	@Excel(name = "phoneEffective", width = 15)
-	@ApiModelProperty(value = "phoneEffective")
-	private Integer phoneEffective;
+	///**playDuration10s*/
+	//@Excel(name = "playDuration10s", width = 15)
+	//@ApiModelProperty(value = "playDuration10s")
+	//private Integer playDuration_10s;
+	///**phoneEffective*/
+	//@Excel(name = "phoneEffective", width = 15)
+	//@ApiModelProperty(value = "phoneEffective")
+	//private Integer phoneEffective;
 	/**gameAddictionRate*/
 	@Excel(name = "gameAddictionRate", width = 15)
 	@ApiModelProperty(value = "gameAddictionRate")
@@ -336,18 +334,18 @@ public class BytedanceReportPlayableDaily {
 	@Excel(name = "activeRegisterRate", width = 15)
 	@ApiModelProperty(value = "activeRegisterRate")
 	private BigDecimal activeRegisterRate;
-	/**averageVideoPlay*/
-	@Excel(name = "averageVideoPlay", width = 15)
-	@ApiModelProperty(value = "averageVideoPlay")
-	private BigDecimal averageVideoPlay;
+	///**averageVideoPlay*/
+	//@Excel(name = "averageVideoPlay", width = 15)
+	//@ApiModelProperty(value = "averageVideoPlay")
+	//private BigDecimal averageVideoPlay;
 	/**downloadFinishCost*/
 	@Excel(name = "downloadFinishCost", width = 15)
 	@ApiModelProperty(value = "downloadFinishCost")
 	private BigDecimal downloadFinishCost;
-	/**playDuration3s*/
-	@Excel(name = "playDuration3s", width = 15)
-	@ApiModelProperty(value = "playDuration3s")
-	private Integer playDuration_3s;
+	///**playDuration3s*/
+	//@Excel(name = "playDuration3s", width = 15)
+	//@ApiModelProperty(value = "playDuration3s")
+	//private Integer playDuration_3s;
 	/**activeRegisterCost*/
 	@Excel(name = "activeRegisterCost", width = 15)
 	@ApiModelProperty(value = "activeRegisterCost")
@@ -376,10 +374,10 @@ public class BytedanceReportPlayableDaily {
 	@Excel(name = "couponSinglePage", width = 15)
 	@ApiModelProperty(value = "couponSinglePage")
 	private Integer couponSinglePage;
-	/**playOver*/
-	@Excel(name = "playOver", width = 15)
-	@ApiModelProperty(value = "playOver")
-	private Integer playOver;
+	///**playOver*/
+	//@Excel(name = "playOver", width = 15)
+	//@ApiModelProperty(value = "playOver")
+	//private Integer playOver;
 	/**downloadStartCost*/
 	@Excel(name = "downloadStartCost", width = 15)
 	@ApiModelProperty(value = "downloadStartCost")
@@ -388,10 +386,10 @@ public class BytedanceReportPlayableDaily {
 	@Excel(name = "message", width = 15)
 	@ApiModelProperty(value = "message")
 	private Integer message;
-	/**playDuration*/
-	@Excel(name = "playDuration", width = 15)
-	@ApiModelProperty(value = "playDuration")
-	private Integer playDuration;
+	///**playDuration*/
+	//@Excel(name = "playDuration", width = 15)
+	//@ApiModelProperty(value = "playDuration")
+	//private Integer playDuration;
 	/**validPlayRate*/
 	@Excel(name = "validPlayRate", width = 15)
 	@ApiModelProperty(value = "validPlayRate")
@@ -404,10 +402,10 @@ public class BytedanceReportPlayableDaily {
 	@Excel(name = "convertCost", width = 15)
 	@ApiModelProperty(value = "convertCost")
 	private BigDecimal convertCost;
-	/**convertShowRate*/
-	@Excel(name = "convertShowRate", width = 15)
-	@ApiModelProperty(value = "convertShowRate")
-	private BigDecimal convertShowRate;
+	///**convertShowRate*/
+	//@Excel(name = "convertShowRate", width = 15)
+	//@ApiModelProperty(value = "convertShowRate")
+	//private BigDecimal convertShowRate;
 	/**installFinishCost*/
 	@Excel(name = "installFinishCost", width = 15)
 	@ApiModelProperty(value = "installFinishCost")
@@ -419,43 +417,43 @@ public class BytedanceReportPlayableDaily {
 	private Long playableId;  //试玩素材ID
 	private String playablePreviewUrl; //试玩素材预览链接
 	private String playableOrientation; //试玩素材展示方向
-	private Long poi_address_click;  //落地页及门店数据-查看店铺地址
-	private BigDecimal attribution_convert_cost;  //转化数据(计费时间)-转化成本(计费时间)
+	private Long poiAddressClick;  //落地页及门店数据-查看店铺地址
+	private BigDecimal attributionConvertCost;  //转化数据(计费时间)-转化成本(计费时间)
 
-	private Long click_website;  //互动数据-主页内落地页访问量(主页官网访问量)
-	private Long message_action;  //互动数据-私信数
-	private Long advanced_creative_form_submit;  //附加创意-附加创意表单提交
-	private Long luban_live_slidecart_click_cnt;  //落地页及门店数据-直播间查看购物车数
-	private Long poi_collect;  //落地页及门店数据-店铺收藏
-	private Long luban_order_cnt;  //落地页及门店数据-鲁班订单量
-	private BigDecimal attribution_next_day_open_rate;  //应用下载广告数据-次留率
-	private Long attribution_next_day_open_cnt;  //应用下载广告数据-次留数
-	private BigDecimal loan_credit_rate;  //应用下载广告数据-授信率
-	private BigDecimal loan_credit_cost;  //应用下载广告数据-授信成本
-	private BigDecimal luban_order_stat_amount;  //落地页及门店数据-鲁班订单金额
-	private Long luban_live_enter_cnt;  //落地页及门店数据-直播间观看数
-	private Long click_landing_page;  //互动数据-推广页访问量
-	private Long luban_live_follow_cnt;  //落地页及门店数据-直播间关注数
-	private Long click_shopwindow;  //互动数据-主页商品橱窗访问量
-	private Long attribution_deep_convert;  //转化数据(计费时间)-深度转化数(计费时间)
-	private Long luban_live_pay_order_count ; //落地页及门店数据-直播间订单量
-	private BigDecimal luban_live_pay_order_stat_cost;  //落地页及门店数据-直播间订单金额
-	private Long card_show;  //视频数据3秒卡片展现
-	private Long pre_loan_credit;  //应用下载广告数据-预授信数
-	private Long redirect_to_shop; //落地页及门店数据-调起店铺
-	private BigDecimal attribution_deep_convert_cost;  //转化数据(计费时间)-深度转化成本(计费时间)
-	private BigDecimal pre_loan_credit_cost;  //应用下载广告数据-预授信成本
-	private BigDecimal avg_click_cost;  //展现数据-平均点击单价
-	private Long attribution_convert;  //转化数据(计费时间)-转化数(计费时间)
-	private BigDecimal attribution_next_day_open_cost;  //应用下载广告数据-次留成本
-	private BigDecimal loan_completion_rate;  //应用下载广告数据-完件率
-	private Long click_download;  //互动数据-主页下载链接点击量
-	private BigDecimal loan_completion_cost;  //应用下载广告数据-完件成本
-	private BigDecimal luban_order_roi;  //落地页及门店数据-鲁班ROI
-	private Long loan_completion;  //应用下载广告数据-完件数
-	private Long loan_credit; //应用下载广告数据-授信数
-	private BigDecimal avg_show_cost;  //展现数据-平均千次展现费用
-	private Long click_call_dy;  //互动数据-主页内电话拨打点击量
+	private Long clickWebsite;  //互动数据-主页内落地页访问量(主页官网访问量)
+	private Long messageAction;  //互动数据-私信数
+	private Long advancedCreativeFormSubmit;  //附加创意-附加创意表单提交
+	private Long lubanLiveSlidecartClickCnt;  //落地页及门店数据-直播间查看购物车数
+	private Long poiCollect;  //落地页及门店数据-店铺收藏
+	private Long lubanOrderCnt;  //落地页及门店数据-鲁班订单量
+	private BigDecimal attributionNextDayOpenRate;  //应用下载广告数据-次留率
+	private Long attributionNextDayOpenCnt;  //应用下载广告数据-次留数
+	private BigDecimal loanCreditRate;  //应用下载广告数据-授信率
+	private BigDecimal loanCreditCost;  //应用下载广告数据-授信成本
+	private BigDecimal lubanOrderStatAmount;  //落地页及门店数据-鲁班订单金额
+	private Long lubanLiveEnterCnt;  //落地页及门店数据-直播间观看数
+	private Long clickLandingPage;  //互动数据-推广页访问量
+	private Long lubanLiveFollowCnt;  //落地页及门店数据-直播间关注数
+	private Long clickShopwindow;  //互动数据-主页商品橱窗访问量
+	private Long attributionDeepConvert;  //转化数据(计费时间)-深度转化数(计费时间)
+	private Long lubanLivePayOrderCount ; //落地页及门店数据-直播间订单量
+	private BigDecimal lubanLivePayOrderStatCost;  //落地页及门店数据-直播间订单金额
+	private Long cardShow;  //视频数据3秒卡片展现
+	private Long preLoanCredit;  //应用下载广告数据-预授信数
+	private Long redirectToShop; //落地页及门店数据-调起店铺
+	private BigDecimal attributionDeepConvertCost;  //转化数据(计费时间)-深度转化成本(计费时间)
+	private BigDecimal preLoanCreditCost;  //应用下载广告数据-预授信成本
+	private BigDecimal avgClickCost;  //展现数据-平均点击单价
+	private Long attributionConvert;  //转化数据(计费时间)-转化数(计费时间)
+	private BigDecimal attributionNextDayOpenCost;  //应用下载广告数据-次留成本
+	private BigDecimal loanCompletionRate;  //应用下载广告数据-完件率
+	private Long clickDownload;  //互动数据-主页下载链接点击量
+	private BigDecimal loanCompletionCost;  //应用下载广告数据-完件成本
+	private BigDecimal lubanOrderRoi;  //落地页及门店数据-鲁班ROI
+	private Long loanCompletion;  //应用下载广告数据-完件数
+	private Long loanCredit; //应用下载广告数据-授信数
+	private BigDecimal avgShowCost;  //展现数据-平均千次展现费用
+	private Long clickCallDy;  //互动数据-主页内电话拨打点击量
 
 
 	public BytedanceReportPlayableDaily() {
@@ -472,7 +470,7 @@ public class BytedanceReportPlayableDaily {
 		this.setStatDatetime(dimensions.getDate("stat_datetime") == null ? null : DateUtils.formatDate(dimensions.getDate("stat_datetime"), "yyyy-MM-dd"));
 
 		JSONObject metrics = detailJson.getJSONObject("metrics");
-		this.setActivePayAmount(metrics.getInteger("active_pay_amount"));
+		//this.setActivePayAmount(metrics.getInteger("active_pay_amount"));
 		this.setValidPlayCost(metrics.getBigDecimal("valid_play_cost"));
 		this.setPlay75FeedBreak(metrics.getInteger("play_75_feed_break"));  //1
 		this.setNextDayOpen(metrics.getInteger("next_day_open"));
@@ -484,17 +482,17 @@ public class BytedanceReportPlayableDaily {
 		this.setConsultEffective(metrics.getInteger("consult_effective")); //1
 		this.setViewMaterial(metrics.getInteger("view"));
 		this.setDownload(metrics.getInteger("download"));
-		this.setCpa(metrics.getBigDecimal("cpa"));
-		this.setCpc(metrics.getBigDecimal("cpc"));
+		//this.setCpa(metrics.getBigDecimal("cpa"));
+		//this.setCpc(metrics.getBigDecimal("cpc"));
 		this.setLocationClick(metrics.getInteger("location_click"));
 		this.setPhoneConfirm(metrics.getInteger("phone_confirm"));
 		this.setIesMusicClick(metrics.getInteger("ies_music_click"));
 		this.setPlayOverRate(metrics.getBigDecimal("play_over_rate"));
-		this.setWifiPlay(metrics.getInteger("wifi_play"));
+		//this.setWifiPlay(metrics.getInteger("wifi_play"));
 		this.setShopping(metrics.getInteger("shopping"));
 		this.setQq(metrics.getInteger("qq"));
 		this.setCtr(metrics.getBigDecimal("ctr"));
-		this.setCpm(metrics.getBigDecimal("cpm"));
+		//this.setCpm(metrics.getBigDecimal("cpm"));
 		this.setWifiPlayRate(metrics.getBigDecimal("wifi_play_rate"));
 		this.setLikeMaterial(metrics.getInteger("like"));
 		this.setPlay50FeedBreak(metrics.getInteger("play_50_feed_break"));
@@ -505,27 +503,27 @@ public class BytedanceReportPlayableDaily {
 		this.setGameAddiction(metrics.getInteger("game_addiction"));
 		this.setActiveRate(metrics.getBigDecimal("active_rate"));
 		this.setClick(metrics.getInteger("click"));
-		this.setPlayDuration_10s(metrics.getInteger("play_duration_10s"));
+		//this.setPlayDuration_10s(metrics.getInteger("play_duration_10s"));
 		this.setAdvancedCreativePhoneClick(metrics.getInteger("advanced_creative_phone_click"));
 		this.setDownloadStart(metrics.getInteger("download_start"));
 		this.setHomeVisited(metrics.getInteger("home_visited"));
 		this.setPhone(metrics.getInteger("phone"));
-		this.setPhoneEffective(metrics.getInteger("phone_effective"));
+		//this.setPhoneEffective(metrics.getInteger("phone_effective"));
 		this.setInAppPay(metrics.getInteger("in_app_pay"));
 		this.setGameAddictionRate(metrics.getBigDecimal("game_addiction_rate"));
-		this.setNextDayOpenCost(metrics.getBigDecimal("next_day_open_cost"));
+		//this.setNextDayOpenCost(metrics.getBigDecimal("next_day_open_cost"));
 		this.setIesChallengeClick(metrics.getInteger("ies_challenge_click"));
 		this.setTotalPlay(metrics.getInteger("total_play"));
 		this.setActiveRegisterRate(metrics.getBigDecimal("active_register_rate"));
-		this.setAverageVideoPlay(metrics.getBigDecimal("average_video_play"));
+		//this.setAverageVideoPlay(metrics.getBigDecimal("average_video_play"));
 		this.setDownloadFinishCost(metrics.getBigDecimal("download_finish_cost"));
-		this.setPlayDuration_3s(metrics.getInteger("play_duration_3s"));
+		//this.setPlayDuration_3s(metrics.getInteger("play_duration_3s"));
 		this.setActiveRegisterCost(metrics.getBigDecimal("active_register_cost"));
 		this.setShowMaterial(metrics.getInteger("show"));
-		this.setNextDayOpenRate(metrics.getBigDecimal("next_day_open_rate"));
+		//this.setNextDayOpenRate(metrics.getBigDecimal("next_day_open_rate"));
 		this.setMapSearch(metrics.getInteger("map_search"));
 		this.setButton(metrics.getInteger("button"));
-		this.setPlayDurationSum(metrics.getInteger("play_duration_sum"));
+		//this.setPlayDurationSum(metrics.getInteger("play_duration_sum"));
 		this.setPlay100FeedBreak(metrics.getInteger("play_100_feed_break"));
 		this.setAdvancedCreativeCounselClick(metrics.getInteger("advanced_creative_counsel_click"));
 		this.setConvertRate(metrics.getBigDecimal("convert_rate"));
@@ -547,22 +545,59 @@ public class BytedanceReportPlayableDaily {
 		this.setCouponSinglePage(metrics.getInteger("coupon_single_page"));
 		this.setInstallFinish(metrics.getInteger("install_finish"));
 		this.setLottery(metrics.getInteger("lottery"));
-		this.setPlayOver(metrics.getInteger("play_over"));
+		//this.setPlayOver(metrics.getInteger("play_over"));
 		this.setInAppOrder(metrics.getInteger("in_app_order"));
 		this.setDownloadStartCost(metrics.getBigDecimal("download_start_cost"));
 		this.setFollow(metrics.getInteger("follow"));
 		this.setMessage(metrics.getInteger("message"));
 		this.setInAppDetailUv(metrics.getInteger("in_app_detail_uv"));
-		this.setPlayDuration(metrics.getInteger("play_duration"));
+		//this.setPlayDuration(metrics.getInteger("play_duration"));
 		this.setForm(metrics.getInteger("form"));
 		this.setValidPlayRate(metrics.getBigDecimal("valid_play_rate"));
 		this.setAveragePlayTimePerPlay(metrics.getBigDecimal("average_play_time_per_play"));
-		this.setConvertShowRate(metrics.getBigDecimal("convert_show_rate"));
+		//this.setConvertShowRate(metrics.getBigDecimal("convert_show_rate"));
 		this.setInstallFinishCost(metrics.getBigDecimal("install_finish_cost"));
 		this.setCommentMaterial(metrics.getInteger("comment"));
 		this.setInAppUv(metrics.getInteger("in_app_uv"));
 		this.setRegister(metrics.getInteger("register"));
 		this.setConvertCost(metrics.getBigDecimal("convert_cost"));
+
+		this.setPoiAddressClick(metrics.getLong("poi_address_click"));
+		this.setAttributionConvertCost(metrics.getBigDecimal("attribution_convert_cost"));
+		this.setClickWebsite(metrics.getLong("click_website"));
+		this.setMessageAction(metrics.getLong("message_action"));
+		this.setAdvancedCreativeFormSubmit(metrics.getLong("advanced_creative_form_submit"));
+	    this.setLubanLiveSlidecartClickCnt(metrics.getLong("luban_live_slidecart_click_cnt"));
+	    this.setPoiCollect(metrics.getLong("poi_collect"));
+		this.setLubanOrderCnt(metrics.getLong("luban_order_cnt"));
+		this.setAttributionNextDayOpenRate(metrics.getBigDecimal("attribution_next_day_open_rate"));
+		this.setAttributionNextDayOpenCnt(metrics.getLong("attribution_next_day_open_cnt"));
+		this.setLoanCreditRate(metrics.getBigDecimal("loan_credit_rate"));
+		this.setLoanCreditCost(metrics.getBigDecimal("loan_credit_cost"));
+		this.setLubanOrderStatAmount(metrics.getBigDecimal("luban_order_stat_amount"));
+		this.setLubanLiveEnterCnt(metrics.getLong("luban_live_enter_cnt"));
+		this.setClickLandingPage(metrics.getLong("click_landing_page"));
+		this.setLubanLiveFollowCnt(metrics.getLong("luban_live_follow_cnt"));
+		this.setClickShopwindow(metrics.getLong("click_shopwindow"));
+		this.setAttributionDeepConvert(metrics.getLong("attribution_deep_convert"));
+		this.setLubanLivePayOrderCount(metrics.getLong("luban_live_pay_order_count"));
+		this.setLubanLivePayOrderStatCost(metrics.getBigDecimal("luban_live_pay_order_stat_cost"));
+		this.setCardShow(metrics.getLong("card_show"));
+		this.setPreLoanCredit(metrics.getLong("pre_loan_credit"));
+		this.setRedirectToShop(metrics.getLong("redirect_to_shop"));
+		this.setAttributionDeepConvertCost(metrics.getBigDecimal("attribution_deep_convert_cost"));
+		this.setPreLoanCreditCost(metrics.getBigDecimal("pre_loan_credit_cost"));
+		this.setAvgClickCost(metrics.getBigDecimal("avg_click_cost"));
+		this.setAttributionConvert(metrics.getLong("attribution_convert"));
+		this.setAttributionNextDayOpenCost(metrics.getBigDecimal("attribution_next_day_open_cost"));
+		this.setLoanCompletionRate(metrics.getBigDecimal("loan_completion_rate"));
+		this.setClickDownload(metrics.getLong("click_download"));
+		this.setLoanCompletionCost(metrics.getBigDecimal("loan_completion_cost"));
+		this.setLubanOrderRoi(metrics.getBigDecimal("luban_order_roi"));
+		this.setLoanCompletion(metrics.getLong("loan_completion"));
+		this.setLoanCredit(metrics.getLong("loan_credit"));
+		this.setAvgShowCost(metrics.getBigDecimal("avg_show_cost"));
+		this.setClickCallDy(metrics.getLong("click_call_dy"));
 	}
 
 }

+ 62 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/entity/BytedanceReportPlayableRetry.java

@@ -0,0 +1,62 @@
+package cn.com.ctop.toutiao.modules.report.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * 头条试玩报表连接出错数据记录表
+ * @author jeecg-boot
+ * @date   2020-04-21
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_bytedance_report_playable_retry")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="ctop_bytedance_report_playable_retry对象", description="头条试玩报表连接出错数据记录表")
+public class BytedanceReportPlayableRetry {
+
+	/**id*/
+	@TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+	private Integer id;
+	/**账户id*/
+	@Excel(name = "账户id", width = 15)
+    @ApiModelProperty(value = "账户id")
+	private Long accountId;
+	/**开始时间*/
+	@Excel(name = "开始时间", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "开始时间")
+	private String startDate;
+	/**结束时间*/
+	@Excel(name = "结束时间", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "结束时间")
+	private String endDate;
+	/**状态 0同步失败 1同步成功*/
+	@Excel(name = "状态 0同步失败 1同步成功", width = 15)
+    @ApiModelProperty(value = "状态 0同步失败 1同步成功")
+	private Integer status;
+	/**createTime*/
+    @ApiModelProperty(value = "createTime")
+	private Date createTime;
+	/**updateTime*/
+    @ApiModelProperty(value = "updateTime")
+	private Date updateTime;
+    private Integer statusCode;
+    private Integer type;
+}

+ 26 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/BytedanceReportPlayableDailyMapper.java

@@ -0,0 +1,26 @@
+package cn.com.ctop.toutiao.modules.report.mapper;
+
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceReportMaterialDaily;
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceReportMaterialRetry;
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceReportPlayableDaily;
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceReportPlayableRetry;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+
+public interface BytedanceReportPlayableDailyMapper extends BaseMapper<BytedanceReportPlayableDaily> {
+
+    void replaceIntoBatch(@Param("infos") List<BytedanceReportPlayableDaily> infos);
+    //
+    //void replaceIntoVideoMaterialBatch(@Param("infos") List<BytedanceReportVideoMaterialDaily> infos);
+    //
+    void replaceMaterialRetry(@Param("retry") BytedanceReportPlayableRetry retry);
+
+    List<BytedanceReportPlayableRetry> getRetryList();
+
+    void updateRetry(@Param("retry") BytedanceReportPlayableRetry retry);
+    //
+    //List<BytedanceVideoVo> getVideoVoByDate(@Param("date") String date);
+}

+ 298 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/xml/BytedanceReportPlayableMapper.xml

@@ -0,0 +1,298 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.toutiao.modules.report.mapper.BytedanceReportPlayableDailyMapper">
+
+    <insert id="replaceIntoBatch">
+        REPLACE INTO ctop_bytedance_report_playable_daily
+        (
+        account_id,
+        playable_id,
+        playable_url,
+        playable_name,
+        playable_preview_url,
+        playable_orientation,
+        stat_datetime,
+        click,
+        cost,
+        active,
+        download_finish,
+        download_start,
+        install_finish,
+        register,
+        pay_count,
+        in_app_uv,
+        in_app_detail_uv,
+        in_app_cart,
+        in_app_order,
+        in_app_pay,
+        phone,
+        form,
+        map_search,
+        button,
+        view_material,
+        qq,
+        lottery,
+        vote,
+        redirect,
+        shopping,
+        consult,
+        wechat,
+        phone_confirm,
+        phone_connect,
+        consult_effective,
+        total_play,
+        valid_play,
+        play25_feed_break,
+        play50_feed_break,
+        play75_feed_break,
+        play100_feed_break,
+        advanced_creative_phone_click,
+        advanced_creative_counsel_click,
+        advanced_creative_form_click,
+        share_material,
+        comment_material,
+        follow,
+        home_visited,
+        ies_challenge_click,
+        ies_music_click,
+        next_day_open,
+        valid_play_cost,
+        advanced_creative_coupon_addition,
+        convert_material,
+        active_pay_cost,
+        download,
+        location_click,
+        play_over_rate,
+        ctr,
+        wifi_play_rate,
+        like_material,
+        active_pay_rate,
+        active_cost,
+        game_addiction_cost,
+        game_addiction,
+        active_rate,
+        game_addiction_rate,
+        download_finish_cost,
+        active_register_cost,
+        show_material,
+        convert_rate,
+        download_finish_rate,
+        install_finish_rate,
+        coupon,
+        coupon_single_page,
+        download_start_cost,
+        message,
+        valid_play_rate,
+        average_play_time_per_play,
+        convert_cost,
+        install_finish_cost,
+        download_start_rate,
+        poi_address_click,
+        attribution_convert_cost,
+        click_website,
+        message_action,
+        advanced_creative_form_submit,
+        luban_live_slidecart_click_cnt,
+        poi_collect,
+        luban_order_cnt,
+        attribution_next_day_open_rate,
+        attribution_next_day_open_cnt,
+        loan_credit_rate,
+        loan_credit_cost,
+        luban_order_stat_amount,
+        luban_live_enter_cnt,
+        click_landing_page,
+        luban_live_follow_cnt,
+        click_shopwindow,
+        attribution_deep_convert,
+        luban_live_pay_order_count,
+        luban_live_pay_order_stat_cost,
+        card_show,
+        pre_loan_credit,
+        redirect_to_shop,
+        attribution_deep_convert_cost,
+        pre_loan_credit_cost,
+        avg_click_cost,
+        attribution_convert,
+        attribution_next_day_open_cost,
+        loan_completion_rate,
+        click_download,
+        loan_completion_cost,
+        luban_order_roi,
+        loan_completion,
+        loan_credit,
+        avg_show_cost,
+        click_call_dy
+        )
+        VALUES
+        <foreach collection="infos" item="info" separator=",">
+      (
+        #{info.accountId},
+        #{info.playableId},
+        #{info.playableUrl},
+        #{info.playableName},
+        #{info.playablePreviewUrl},
+        #{info.playableOrientation},
+        #{info.statDatetime},
+        #{info.click},
+        #{info.cost},
+        #{info.active},
+        #{info.downloadFinish},
+        #{info.downloadStart},
+        #{info.installFinish},
+        #{info.register},
+        #{info.payCount},
+        #{info.inAppUv},
+        #{info.inAppDetailUv},
+        #{info.inAppCart},
+        #{info.inAppOrder},
+        #{info.inAppPay},
+        #{info.phone},
+        #{info.form},
+        #{info.mapSearch},
+        #{info.button},
+        #{info.viewMaterial},
+        #{info.qq},
+        #{info.lottery},
+        #{info.vote},
+        #{info.redirect},
+        #{info.shopping},
+        #{info.consult},
+        #{info.wechat},
+        #{info.phoneConfirm},
+        #{info.phoneConnect},
+        #{info.consultEffective},
+        #{info.totalPlay},
+        #{info.validPlay},
+        #{info.play25FeedBreak},
+        #{info.play50FeedBreak},
+        #{info.play75FeedBreak},
+        #{info.play100FeedBreak},
+        #{info.advancedCreativePhoneClick},
+        #{info.advancedCreativeCounselClick},
+        #{info.advancedCreativeFormClick},
+        #{info.shareMaterial},
+        #{info.commentMaterial},
+        #{info.follow},
+        #{info.homeVisited},
+        #{info.iesChallengeClick},
+        #{info.iesMusicClick},
+        #{info.validPlayCost},
+        #{info.advancedCreativeCouponAddition},
+        #{info.convertMaterial},
+        #{info.activePayCost},
+        #{info.download},
+        #{info.locationClick},
+        #{info.playOverRate},
+        #{info.ctr},
+        #{info.wifiPlayRate},
+        #{info.likeMaterial},
+        #{info.activePayRate},
+        #{info.activeCost},
+        #{info.gameAddictionCost},
+        #{info.gameAddiction},
+        #{info.activeRate},
+        #{info.gameAddictionRate},
+        #{info.activeRegisterRate},
+        #{info.downloadFinishCost},
+        #{info.activeRegisterCost},
+        #{info.showMaterial},
+        #{info.convertRate},
+        #{info.downloadFinishRate},
+        #{info.installFinishRate},
+        #{info.coupon},
+        #{info.couponSinglePage},
+        #{info.downloadStartCost},
+        #{info.message},
+        #{info.validPlayRate},
+        #{info.averagePlayTimePerPlay},
+        #{info.convertCost},
+        #{info.installFinishCost},
+        #{info.downloadStartRate},
+        #{info.poiAddressClick},
+        #{info.attributionConvertCost},
+        #{info.clickWebsite},
+        #{info.messageAction},
+        #{info.advancedCreativeFormSubmit},
+        #{info.lubanLiveSlidecartClickCnt},
+        #{info.poiCollect},
+        #{info.lubanOrderCnt},
+        #{info.attributionNextDayOpenRate},
+        #{info.attributionNextDayOpenCnt},
+        #{info.loanCreditRate},
+        #{info.loanCreditCost},
+        #{info.lubanOrderStatAmount},
+        #{info.lubanLiveEnterCnt},
+        #{info.clickLandingPage},
+        #{info.lubanLiveFollowCnt},
+        #{info.clickShopwindow},
+        #{info.attributionDeepConvert},
+        #{info.lubanLivePayOrderCount},
+        #{info.lubanLivePayOrderStatCost},
+        #{info.cardShow},
+        #{info.preLoanCredit},
+        #{info.redirectToShop},
+        #{info.attributionDeepConvertCost},
+        #{info.preLoanCreditCost},
+        #{info.avgClickCost},
+        #{info.attributionConvert},
+        #{info.attributionNextDayOpenCost},
+        #{info.loanCompletionRate},
+        #{info.clickDownload},
+        #{info.loanCompletionCost},
+        #{info.lubanOrderRoi},
+        #{info.loanCompletion},
+        #{info.loanCredit},
+        #{info.avgShowCost},
+        #{info.clickCallDy}
+         )
+        </foreach>
+    </insert>
+
+    <insert id="replaceMaterialRetry">
+        REPLACE INTO ctop_bytedance_report_playable_retry
+        (
+            account_id,
+            start_date,
+            end_date,
+            status,
+            status_code,
+            type
+        )
+        VALUES
+        (
+            #{retry.accountId},
+            #{retry.startDate},
+            #{retry.endDate},
+            #{retry.status},
+            #{retry.statusCode},
+            #{retry.type}
+        )
+
+    </insert>
+
+    <select id="getRetryList" resultType="cn.com.ctop.toutiao.modules.report.entity.BytedanceReportPlayableRetry">
+            select
+            account_id,
+            start_date,
+            end_date,
+            status,
+            type
+        from
+        ctop_bytedance_report_playable_retry
+        where status = 0
+    </select>
+
+    <update id="updateRetry">
+        update
+        ctop_bytedance_report_playable_retry
+        set
+        status = 1
+        where
+        account_id = #{retry.accountId}
+        and start_date = #{retry.startDate}
+        and end_date = #{retry.endDate}
+    </update>
+
+</mapper>
+

+ 7 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/IBytedanceInterfaceService.java

@@ -1,6 +1,9 @@
 package cn.com.ctop.toutiao.modules.report.service;
 
 import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceReportPlayableRetry;
+
+import java.util.List;
 
 public interface IBytedanceInterfaceService {
 
@@ -9,4 +12,8 @@ public interface IBytedanceInterfaceService {
     //头条试玩报表
     int bytedancePlayableReport(CtopOauthToken token, String startDate, String endDate);
 
+    List<BytedanceReportPlayableRetry> getRetryList();
+
+    int bytedancePlayableReportRetry(Integer type, CtopOauthToken token, String startDate, String endDate);
+
 }

+ 45 - 11
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/BytedanceInterfaceServiceImpl.java

@@ -9,10 +9,9 @@ import cn.com.ctop.toutiao.modules.material.entity.ByteDanceCreative;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertisePlanService;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceCampaignService;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceCreativeService;
-import cn.com.ctop.toutiao.modules.report.entity.ByteDanceOperationRecord;
-import cn.com.ctop.toutiao.modules.report.entity.BytedanceReportMaterialRetry;
-import cn.com.ctop.toutiao.modules.report.entity.BytedanceReportVideoMaterialDaily;
+import cn.com.ctop.toutiao.modules.report.entity.*;
 import cn.com.ctop.toutiao.modules.report.mapper.BytedanceOperationRecordMapper;
+import cn.com.ctop.toutiao.modules.report.mapper.BytedanceReportPlayableDailyMapper;
 import cn.com.ctop.toutiao.modules.report.service.IBytedanceInterfaceService;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -40,6 +39,8 @@ public class BytedanceInterfaceServiceImpl implements IBytedanceInterfaceService
     private BytedanceOperationRecordMapper bytedanceOperationRecordMapper;
     @Autowired
     private IByteDanceCreativeService byteDanceCreativeService;
+    @Autowired
+    private BytedanceReportPlayableDailyMapper bytedanceReportPlayableDailyMapper;
 
     @Override
     public void searchLog(Long accountId, CtopOauthToken token, Integer operationTarget, String startDate, String endDate){
@@ -195,6 +196,39 @@ public class BytedanceInterfaceServiceImpl implements IBytedanceInterfaceService
 
     //////////////////////////////////////////////////
 
+    @Override
+    public List<BytedanceReportPlayableRetry> getRetryList() {
+        return bytedanceReportPlayableDailyMapper.getRetryList();
+    }
+
+    @Override
+    public int bytedancePlayableReportRetry(Integer type, CtopOauthToken token, String startDate, String endDate) {
+        Long accountId = token.getAccountId();
+        log.info("头条试玩报表重试开始 当前accountId:{}  {}~{},type:{}" , accountId, startDate,endDate,type);
+        Integer page = 1;
+        Integer pageSize = 100;
+        Integer code = null;
+        code = bytedancePlayableReportByPage(page, pageSize, token, accountId, startDate, endDate);
+
+
+        BytedanceReportPlayableRetry retry = new BytedanceReportPlayableRetry();
+        retry.setAccountId(accountId);
+        retry.setStartDate(startDate);
+        retry.setEndDate(endDate);
+        retry.setStatusCode(code);
+        retry.setType(type);
+        if (code != 200 && code != 1) {
+            retry.setStatus(0);
+            bytedanceReportPlayableDailyMapper.replaceMaterialRetry(retry);
+        } else {
+            retry.setStatus(1);
+            bytedanceReportPlayableDailyMapper.replaceMaterialRetry(retry);
+        }
+        log.info("头条试玩报表重试结束 当前accountId:{}  {}~{},type:{},code:{}" , accountId, startDate,endDate,type,code);
+        return code;
+    }
+
+
 
     /**
      * 头条视频素材报表
@@ -206,21 +240,21 @@ public class BytedanceInterfaceServiceImpl implements IBytedanceInterfaceService
     @Override
     public int bytedancePlayableReport(CtopOauthToken token, String startDate, String endDate) {
         Long accountId = token.getAccountId();
-        log.info("头条素材报表当前accountId为:{}  {}~{},开始" , accountId, startDate,endDate);
+        log.info("头条试玩报表当前accountId为:{}  {}~{},开始" , accountId, startDate,endDate);
         Integer page = 1;
         Integer pageSize = 100;
         int code = bytedancePlayableReportByPage(page, pageSize, token, accountId, startDate, endDate);
         if (code != 200 && code != 1) {
-            BytedanceReportMaterialRetry retry = new BytedanceReportMaterialRetry();
+            BytedanceReportPlayableRetry retry = new BytedanceReportPlayableRetry();
             retry.setAccountId(accountId);
             retry.setStatus(0);
             retry.setStartDate(startDate);
             retry.setEndDate(endDate);
             retry.setStatusCode(code);
             retry.setType(2);  //1素材报表重试,2视频素材报表重试
-            //bytedanceReportMaterialDailyMapper.replaceMaterialRetry(retry);
+            bytedanceReportPlayableDailyMapper.replaceMaterialRetry(retry);
         }
-        log.info("头条素材报表当前accountId为:{}  {}~{},结束" , accountId, startDate,endDate);
+        log.info("头条试玩报表当前accountId为:{}  {}~{},结束" , accountId, startDate,endDate);
         return code;
     }
 
@@ -271,15 +305,15 @@ public class BytedanceInterfaceServiceImpl implements IBytedanceInterfaceService
                     return 1;
                 }
 
-                List<BytedanceReportVideoMaterialDaily> bytedanceReportVideoMaterialDailyList = new ArrayList<>();
+                List<BytedanceReportPlayableDaily> bytedanceReportPlayableDailyList = new ArrayList<>();
                 for (int i = 0; i < jsonArrayay.size(); i++) {
                     JSONObject detailJson = jsonArrayay.getJSONObject(i);
                     if (!Check.isNull(detailJson)) {
-                        BytedanceReportVideoMaterialDaily daily = new BytedanceReportVideoMaterialDaily(detailJson, accountId);
-                        bytedanceReportVideoMaterialDailyList.add(daily);
+                        BytedanceReportPlayableDaily daily = new BytedanceReportPlayableDaily(detailJson, accountId);
+                        bytedanceReportPlayableDailyList.add(daily);
                     }
                 }
-                //bytedanceReportMaterialDailyMapper.replaceIntoVideoMaterialBatch(bytedanceReportVideoMaterialDailyList);
+                bytedanceReportPlayableDailyMapper.replaceIntoBatch(bytedanceReportPlayableDailyList);
                 if (currentPage >= totalPage) {
                     log.info("头条视频素材报表当前accountId为:{}  {}~{},接口数据拉取成功" , accountId, startDate,endDate);
                     return 1;