Browse Source

Merge remote-tracking branch 'origin/master'

syh 5 years ago
parent
commit
20de0bc573

+ 30 - 0
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/ByteDanceVideoReportJob.java

@@ -0,0 +1,30 @@
+package cn.com.ctop.job.bytedance.handler;
+
+import cn.com.ctop.toutiao.modules.report.service.IByteDanceVideoReportDailyService;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import com.xxl.job.core.log.XxlJobLogger;
+import org.jeecg.common.util.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ * 头条视频报表清洗数据定时任务
+ *
+ * @author sunzhen
+ */
+@Component
+public class ByteDanceVideoReportJob {
+    @Autowired
+    private IByteDanceVideoReportDailyService byteDanceVideoReportDailyService;
+
+    @XxlJob("byteDanceVideoReport")
+    public ReturnT<String> execute(String param) throws Exception {
+        String getDate = DateUtils.formatDate(   DateUtils.addDay(new Date(), -1)  );
+        XxlJobLogger.log("头条视频报表清洗数据定时任务开始, 执行时间为:" + getDate);
+        byteDanceVideoReportDailyService.videoInfoList(getDate, getDate);
+        return ReturnT.SUCCESS;
+    }
+}

+ 2 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/controller/BatchController.java

@@ -119,6 +119,7 @@ public class BatchController {
                 public void run() {
                 public void run() {
                     iKuaishouInterfaceService.getAppList(oauthToken.getAccountId(), oauthToken.getAccessToken());
                     iKuaishouInterfaceService.getAppList(oauthToken.getAccountId(), oauthToken.getAccessToken());
                     iKuaishouInterfaceService.getPopulationList(accountId, oauthToken.getAccessToken());
                     iKuaishouInterfaceService.getPopulationList(accountId, oauthToken.getAccessToken());
+                    iKuaishouInterfaceService.getVideoList(oauthToken, null, null);
                 }
                 }
             };
             };
             thread.start();
             thread.start();
@@ -1677,7 +1678,7 @@ public class BatchController {
                         }
                         }
                     }
                     }
 
 
-                } else if (createCount == 2) { // 自定义
+                } else if (createType == 2) { // 自定义
                     JSONArray unitNames = requestJson.getJSONArray("unitNames");
                     JSONArray unitNames = requestJson.getJSONArray("unitNames");
                     if (Check.isNull(unitNames)) {
                     if (Check.isNull(unitNames)) {
                         throw new Exception("请输入广告组名称");
                         throw new Exception("请输入广告组名称");

+ 356 - 334
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/controller/ByteDanceVideoReportDailyController.java

@@ -24,8 +24,10 @@ import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 
- /**
+/**
  * 视频按时间段统计
  * 视频按时间段统计
  * @author jeecg-boot
  * @author jeecg-boot
  * @date   2020-05-13
  * @date   2020-05-13
@@ -47,11 +49,31 @@ public class ByteDanceVideoReportDailyController {
 										 HttpServletRequest req){
 										 HttpServletRequest req){
 		 Result result = new Result();
 		 Result result = new Result();
 		 int days = DateUtils.dateDiff(startDate, endDate);
 		 int days = DateUtils.dateDiff(startDate, endDate);
+		 List<String> dateList = new ArrayList<>();
 		 for(int i=0; i<=days; i++){
 		 for(int i=0; i<=days; i++){
 			 String endStr = DateUtils.addDay(startDate ,i);
 			 String endStr = DateUtils.addDay(startDate ,i);
-			 videoReportDailyService.videoInfoList(startDate, endStr);
+			 dateList.add(endStr);
+			 System.out.println(endStr);
+			// videoReportDailyService.videoInfoList(startDate, endStr);
 		 }
 		 }
 
 
+
+		 final ExecutorService executorService = Executors.newFixedThreadPool(8);
+		 dateList.forEach(date -> {
+			 executorService.submit(new Runnable() {
+				 @Override
+				 public void run() {
+					 try {
+						 System.out.println("头条视频按天汇总接口现在在跑的时间为:" + date + "~" + date);
+						 videoReportDailyService.videoInfoList(date, date);
+					 } catch (Exception e) {
+						 e.printStackTrace();
+					 } finally {
+					 }
+				 }
+			 });
+		 });
+
 		 result.setSuccess(true);
 		 result.setSuccess(true);
 		 return result;
 		 return result;
 	 }
 	 }
@@ -228,25 +250,25 @@ public class ByteDanceVideoReportDailyController {
 						 continue;
 						 continue;
 					 }
 					 }
 
 
-					 if( column.equals("projectId")){
-						 ByteDanceVideoReportDaily.add(sum.getProjectId() );  //
-						 continue;
-					 }
-
-					 if( column.equals("projectName")){
-						 ByteDanceVideoReportDaily.add(sum.getProjectName() );  //
-						 continue;
-					 }
+					 //if( column.equals("projectId")){
+						// ByteDanceVideoReportDaily.add(sum.getProjectId() );  //
+						// continue;
+					 //}
+					 //
+					 //if( column.equals("projectName")){
+						// ByteDanceVideoReportDaily.add(sum.getProjectName() );  //
+						// continue;
+					 //}
 
 
-					 if( column.equals("advertiserId")){
-						 ByteDanceVideoReportDaily.add(sum.getAdvertiserId() );  //
-						 continue;
-					 }
-
-					 if( column.equals("advertiserName")){
-						 ByteDanceVideoReportDaily.add(sum.getAdvertiserName() );  //
-						 continue;
-					 }
+					 //if( column.equals("advertiserId")){
+						// ByteDanceVideoReportDaily.add(sum.getAdvertiserId() );  //
+						// continue;
+					 //}
+					 //
+					 //if( column.equals("advertiserName")){
+						// ByteDanceVideoReportDaily.add(sum.getAdvertiserName() );  //
+						// continue;
+					 //}
 
 
 					 if( column.equals("statDatetime")){
 					 if( column.equals("statDatetime")){
 						 ByteDanceVideoReportDaily.add(dateDTO.getStartDate() + "  ~  " + dateDTO.getEndDate() );  //
 						 ByteDanceVideoReportDaily.add(dateDTO.getStartDate() + "  ~  " + dateDTO.getEndDate() );  //
@@ -328,106 +350,106 @@ public class ByteDanceVideoReportDailyController {
 						 continue;
 						 continue;
 					 }
 					 }
 
 
-					 if( column.equals("inAppUv")){
-						 ByteDanceVideoReportDaily.add(sum.getInAppUv());  //
-						 continue;
-					 }
-
-					 if( column.equals("inAppDetailUv")){
-						 ByteDanceVideoReportDaily.add(sum.getInAppDetailUv());  //
-						 continue;
-					 }
-
-					 if( column.equals("inAppCart")){
-						 ByteDanceVideoReportDaily.add(sum.getInAppCart());  //
-						 continue;
-					 }
-
-					 if( column.equals("inAppOrder")){
-						 ByteDanceVideoReportDaily.add(sum.getInAppOrder());  //
-						 continue;
-					 }
-
-					 if( column.equals("inAppPay")){
-						 ByteDanceVideoReportDaily.add(sum.getInAppPay());  //
-						 continue;
-					 }
-
-					 if( column.equals("phone")){
-						 ByteDanceVideoReportDaily.add(sum.getPhone());  //
-						 continue;
-					 }
+					 //if( column.equals("inAppUv")){
+						// ByteDanceVideoReportDaily.add(sum.getInAppUv());  //
+						// continue;
+					 //}
+
+					 //if( column.equals("inAppDetailUv")){
+						// ByteDanceVideoReportDaily.add(sum.getInAppDetailUv());  //
+						// continue;
+					 //}
+					 //
+					 //if( column.equals("inAppCart")){
+						// ByteDanceVideoReportDaily.add(sum.getInAppCart());  //
+						// continue;
+					 //}
+					 //
+					 //if( column.equals("inAppOrder")){
+						// ByteDanceVideoReportDaily.add(sum.getInAppOrder());  //
+						// continue;
+					 //}
+					 //
+					 //if( column.equals("inAppPay")){
+						// ByteDanceVideoReportDaily.add(sum.getInAppPay());  //
+						// continue;
+					 //}
+
+					 //if( column.equals("phone")){
+						// ByteDanceVideoReportDaily.add(sum.getPhone());  //
+						// continue;
+					 //}
 
 
 					 if( column.equals("form")){
 					 if( column.equals("form")){
 						 ByteDanceVideoReportDaily.add(sum.getForm());  //
 						 ByteDanceVideoReportDaily.add(sum.getForm());  //
 						 continue;
 						 continue;
 					 }
 					 }
 
 
-					 if( column.equals("mapSearch")){
-						 ByteDanceVideoReportDaily.add(sum.getMapSearch());  //
-						 continue;
-					 }
-
-					 if( column.equals("button")){
-						 ByteDanceVideoReportDaily.add(sum.getButton());  //
-						 continue;
-					 }
-
-					 if( column.equals("viewMaterial")){
-						 ByteDanceVideoReportDaily.add(sum.getViewMaterial());  //
-						 continue;
-					 }
-
-					 if( column.equals("qq")){
-						 ByteDanceVideoReportDaily.add(sum.getQq());  //
-						 continue;
-					 }
-
-					 if( column.equals("lottery")){
-						 ByteDanceVideoReportDaily.add(sum.getLottery());  //
-						 continue;
-					 }
-
-					 if( column.equals("vote")){
-						 ByteDanceVideoReportDaily.add(sum.getVote());  //
-						 continue;
-					 }
-
-					 if( column.equals("redirect")){
-						 ByteDanceVideoReportDaily.add(sum.getRedirect());  //
-						 continue;
-					 }
-
-					 if( column.equals("shopping")){
-						 ByteDanceVideoReportDaily.add(sum.getShopping());  //
-						 continue;
-					 }
-
-					 if( column.equals("consult")){
-						 ByteDanceVideoReportDaily.add(sum.getConsult());  //
-						 continue;
-					 }
-
-					 if( column.equals("wechat")){
-						 ByteDanceVideoReportDaily.add(sum.getWechat());  //
-						 continue;
-					 }
-
-					 if( column.equals("phoneConfirm")){
-						 ByteDanceVideoReportDaily.add(sum.getPhoneConfirm());  //
-						 continue;
-					 }
-
-					 if( column.equals("phoneConnect")){
-						 ByteDanceVideoReportDaily.add(sum.getPhoneConnect());  //
-						 continue;
-					 }
-
-
-					 if( column.equals("consultEffective")){
-						 ByteDanceVideoReportDaily.add(sum.getConsultEffective());  //
-						 continue;
-					 }
+					 //if( column.equals("mapSearch")){
+						// ByteDanceVideoReportDaily.add(sum.getMapSearch());  //
+						// continue;
+					 //}
+					 //
+					 //if( column.equals("button")){
+						// ByteDanceVideoReportDaily.add(sum.getButton());  //
+						// continue;
+					 //}
+
+					 //if( column.equals("viewMaterial")){
+						// ByteDanceVideoReportDaily.add(sum.getViewMaterial());  //
+						// continue;
+					 //}
+					 //
+					 //if( column.equals("qq")){
+						// ByteDanceVideoReportDaily.add(sum.getQq());  //
+						// continue;
+					 //}
+					 //
+					 //if( column.equals("lottery")){
+						// ByteDanceVideoReportDaily.add(sum.getLottery());  //
+						// continue;
+					 //}
+
+					 //if( column.equals("vote")){
+						// ByteDanceVideoReportDaily.add(sum.getVote());  //
+						// continue;
+					 //}
+					 //
+					 //if( column.equals("redirect")){
+						// ByteDanceVideoReportDaily.add(sum.getRedirect());  //
+						// continue;
+					 //}
+					 //
+					 //if( column.equals("shopping")){
+						// ByteDanceVideoReportDaily.add(sum.getShopping());  //
+						// continue;
+					 //}
+					 //
+					 //if( column.equals("consult")){
+						// ByteDanceVideoReportDaily.add(sum.getConsult());  //
+						// continue;
+					 //}
+
+					 //if( column.equals("wechat")){
+						// ByteDanceVideoReportDaily.add(sum.getWechat());  //
+						// continue;
+					 //}
+					 //
+					 //if( column.equals("phoneConfirm")){
+						// ByteDanceVideoReportDaily.add(sum.getPhoneConfirm());  //
+						// continue;
+					 //}
+					 //
+					 //if( column.equals("phoneConnect")){
+						// ByteDanceVideoReportDaily.add(sum.getPhoneConnect());  //
+						// continue;
+					 //}
+					 //
+					 //
+					 //if( column.equals("consultEffective")){
+						// ByteDanceVideoReportDaily.add(sum.getConsultEffective());  //
+						// continue;
+					 //}
 
 
 					 if( column.equals("totalPlay")){
 					 if( column.equals("totalPlay")){
 						 ByteDanceVideoReportDaily.add(sum.getTotalPlay());  //
 						 ByteDanceVideoReportDaily.add(sum.getTotalPlay());  //
@@ -464,50 +486,50 @@ public class ByteDanceVideoReportDailyController {
 						 continue;
 						 continue;
 					 }
 					 }
 
 
-					 if( column.equals("advancedCreativePhoneClick")){
-						 ByteDanceVideoReportDaily.add(sum.getAdvancedCreativePhoneClick());  //
-						 continue;
-					 }
-
-					 if( column.equals("vancedCreativeCounselClick")){
-						 ByteDanceVideoReportDaily.add(sum.getAdvancedCreativeCounselClick());  //
-						 continue;
-					 }
-
-					 if( column.equals("advancedCreativeFormClick")){
-						 ByteDanceVideoReportDaily.add(sum.getAdvancedCreativeFormClick());  //
-						 continue;
-					 }
+					 //if( column.equals("advancedCreativePhoneClick")){
+						// ByteDanceVideoReportDaily.add(sum.getAdvancedCreativePhoneClick());  //
+						// continue;
+					 //}
+					 //
+					 //if( column.equals("advancedCreativeCounselClick")){
+						// ByteDanceVideoReportDaily.add(sum.getAdvancedCreativeCounselClick());  //
+						// continue;
+					 //}
+					 //
+					 //if( column.equals("advancedCreativeFormClick")){
+						// ByteDanceVideoReportDaily.add(sum.getAdvancedCreativeFormClick());  //
+						// continue;
+					 //}
 
 
 					 if( column.equals("shareMaterial")){
 					 if( column.equals("shareMaterial")){
 						 ByteDanceVideoReportDaily.add(sum.getShowMaterial());  //
 						 ByteDanceVideoReportDaily.add(sum.getShowMaterial());  //
 						 continue;
 						 continue;
 					 }
 					 }
 
 
-					 if( column.equals("commentMaterial")){
-						 ByteDanceVideoReportDaily.add(sum.getCommentMaterial());  //
-						 continue;
-					 }
+					 //if( column.equals("commentMaterial")){
+						// ByteDanceVideoReportDaily.add(sum.getCommentMaterial());  //
+						// continue;
+					 //}
 
 
 					 if( column.equals("follow")){
 					 if( column.equals("follow")){
 						 ByteDanceVideoReportDaily.add(sum.getFollow());  //
 						 ByteDanceVideoReportDaily.add(sum.getFollow());  //
 						 continue;
 						 continue;
 					 }
 					 }
 
 
-					 if( column.equals("homeVisited")){
-						 ByteDanceVideoReportDaily.add(sum.getHomeVisited());  //
-						 continue;
-					 }
+					 //if( column.equals("homeVisited")){
+						// ByteDanceVideoReportDaily.add(sum.getHomeVisited());  //
+						// continue;
+					 //}
 
 
-					 if( column.equals("iesChallengeClick")){
-						 ByteDanceVideoReportDaily.add(sum.getIesChallengeClick());  //
-						 continue;
-					 }
+					 //if( column.equals("iesChallengeClick")){
+						// ByteDanceVideoReportDaily.add(sum.getIesChallengeClick());  //
+						// continue;
+					 //}
 
 
-					 if( column.equals("iesMusicClick")){
-						 ByteDanceVideoReportDaily.add(sum.getIesMusicClick());  //
-						 continue;
-					 }
+					 //if( column.equals("iesMusicClick")){
+						// ByteDanceVideoReportDaily.add(sum.getIesMusicClick());  //
+						// continue;
+					 //}
 
 
 					 if( column.equals("nextDayOpen")){
 					 if( column.equals("nextDayOpen")){
 						 ByteDanceVideoReportDaily.add(sum.getNextDayOpen());  //
 						 ByteDanceVideoReportDaily.add(sum.getNextDayOpen());  //
@@ -534,10 +556,10 @@ public class ByteDanceVideoReportDailyController {
 						 continue;
 						 continue;
 					 }
 					 }
 
 
-					 if( column.equals("advancedCreativeCouponAddition")){
-						 ByteDanceVideoReportDaily.add(sum.getAdvancedCreativeCouponAddition());  //
-						 continue;
-					 }
+					 //if( column.equals("advancedCreativeCouponAddition")){
+						// ByteDanceVideoReportDaily.add(sum.getAdvancedCreativeCouponAddition());  //
+						// continue;
+					 //}
 
 
 					 if( column.equals("convertMaterial")){
 					 if( column.equals("convertMaterial")){
 						 ByteDanceVideoReportDaily.add(sum.getConvertMaterial());  //
 						 ByteDanceVideoReportDaily.add(sum.getConvertMaterial());  //
@@ -545,24 +567,24 @@ public class ByteDanceVideoReportDailyController {
 					 }
 					 }
 
 
 					 if( column.equals("activePayCost")){
 					 if( column.equals("activePayCost")){
-						 ByteDanceVideoReportDaily.add(sum.getActivePayCost().setScale(2,BigDecimal.ROUND_HALF_UP));  //
+						 ByteDanceVideoReportDaily.add(sum.getActivePayCost()==null?0:sum.getActivePayCost().setScale(2,BigDecimal.ROUND_HALF_UP));  //
 						 continue;
 						 continue;
 					 }
 					 }
 
 
-					 if( column.equals("download")){
-						 ByteDanceVideoReportDaily.add(sum.getDownload());  //
-						 continue;
-					 }
+					 //if( column.equals("download")){
+						// ByteDanceVideoReportDaily.add(sum.getDownload());  //
+						// continue;
+					 //}
 
 
 					 if( column.equals("cpc")){
 					 if( column.equals("cpc")){
 						 ByteDanceVideoReportDaily.add(sum.getCpc().setScale(2,BigDecimal.ROUND_HALF_UP));  //
 						 ByteDanceVideoReportDaily.add(sum.getCpc().setScale(2,BigDecimal.ROUND_HALF_UP));  //
 						 continue;
 						 continue;
 					 }
 					 }
 
 
-					 if( column.equals("locationClick")){
-						 ByteDanceVideoReportDaily.add(sum.getLocationClick());  //
-						 continue;
-					 }
+					 //if( column.equals("locationClick")){
+						// ByteDanceVideoReportDaily.add(sum.getLocationClick());  //
+						// continue;
+					 //}
 
 
 					 if( column.equals("ctr")){
 					 if( column.equals("ctr")){
 						 ByteDanceVideoReportDaily.add(sum.getCtr().multiply(new BigDecimal("100")).setScale(2,BigDecimal.ROUND_HALF_UP) + "%");  //
 						 ByteDanceVideoReportDaily.add(sum.getCtr().multiply(new BigDecimal("100")).setScale(2,BigDecimal.ROUND_HALF_UP) + "%");  //
@@ -639,16 +661,16 @@ public class ByteDanceVideoReportDailyController {
 						 ByteDanceVideoReportDaily.add(sum.getInstallFinishRate().multiply(new BigDecimal("100")).setScale(2,BigDecimal.ROUND_HALF_UP) + "%");  //
 						 ByteDanceVideoReportDaily.add(sum.getInstallFinishRate().multiply(new BigDecimal("100")).setScale(2,BigDecimal.ROUND_HALF_UP) + "%");  //
 						 continue;
 						 continue;
 					 }
 					 }
-
-					 if( column.equals("coupon")){
-						 ByteDanceVideoReportDaily.add(sum.getCoupon());  //
-						 continue;
-					 }
-
-					 if( column.equals("couponSinglePage")){
-						 ByteDanceVideoReportDaily.add(sum.getCouponSinglePage());  //
-						 continue;
-					 }
+					 //
+					 //if( column.equals("coupon")){
+						// ByteDanceVideoReportDaily.add(sum.getCoupon());  //
+						// continue;
+					 //}
+					 //
+					 //if( column.equals("couponSinglePage")){
+						// ByteDanceVideoReportDaily.add(sum.getCouponSinglePage());  //
+						// continue;
+					 //}
 
 
 					 if( column.equals("playOver")){
 					 if( column.equals("playOver")){
 						 ByteDanceVideoReportDaily.add(sum.getPlayOver());  //
 						 ByteDanceVideoReportDaily.add(sum.getPlayOver());  //
@@ -660,10 +682,10 @@ public class ByteDanceVideoReportDailyController {
 						 continue;
 						 continue;
 					 }
 					 }
 
 
-					 if( column.equals("message")){
-						 ByteDanceVideoReportDaily.add(sum.getMessage());  //
-						 continue;
-					 }
+					 //if( column.equals("message")){
+						// ByteDanceVideoReportDaily.add(sum.getMessage());  //
+						// continue;
+					 //}
 
 
 					 if( column.equals("validPlayRate")){
 					 if( column.equals("validPlayRate")){
 						 ByteDanceVideoReportDaily.add(sum.getValidPlayRate().multiply(new BigDecimal("100")).setScale(2,BigDecimal.ROUND_HALF_UP) + "%");  //
 						 ByteDanceVideoReportDaily.add(sum.getValidPlayRate().multiply(new BigDecimal("100")).setScale(2,BigDecimal.ROUND_HALF_UP) + "%");  //
@@ -706,242 +728,242 @@ public class ByteDanceVideoReportDailyController {
 
 
 		 //循环
 		 //循环
 		 for(String column:columns){
 		 for(String column:columns){
-			 if( column.equals("projectId")){
-				 listHeaders.add("projectId");
-			 }
+			 //if( column.equals("projectId")){
+				// listHeaders.add("projectId");
+			 //}
 
 
-			 if( column.equals("projectName")){
-				 listHeaders.add("项目");
-			 }
+			 //if( column.equals("projectName")){
+				// listHeaders.add("项目");
+			 //}
 
 
-			 if( column.equals("advertiserId")){
-				 listHeaders.add("客户id");
-			 }
+			 //if( column.equals("advertiserId")){
+				// listHeaders.add("客户id");
+			 //}
 
 
-			 if( column.equals("advertiserName")){
-				 listHeaders.add("客户");
-			 }
+			 //if( column.equals("advertiserName")){
+				// listHeaders.add("客户");
+			 //}
 
 
 			 if( column.equals("statDatetime")){
 			 if( column.equals("statDatetime")){
 				 listHeaders.add("时间");
 				 listHeaders.add("时间");
-			 }
+			 }  /////
 
 
 			 if( column.equals("cost")){
 			 if( column.equals("cost")){
-				 listHeaders.add("消耗");
-			 }
+				 listHeaders.add("消耗");
+			 }  /////
 
 
 			 if( column.equals("signature")){
 			 if( column.equals("signature")){
 				 listHeaders.add("视频id");
 				 listHeaders.add("视频id");
-			 }
+			 }  /////
 
 
 			 if( column.equals("url")){
 			 if( column.equals("url")){
 				 listHeaders.add("视频链接");
 				 listHeaders.add("视频链接");
-			 }
+			 }  /////
 
 
 			 if( column.equals("materialName")){
 			 if( column.equals("materialName")){
 				 listHeaders.add("视频描述");
 				 listHeaders.add("视频描述");
-			 }
+			 }  /////
 
 
-			 if( column.equals("appType")){
-				 listHeaders.add("媒体");
-			 }
+			 //if( column.equals("appType")){
+				// listHeaders.add("媒体");
+			 //}
 
 
 			 if( column.equals("clickMaterial")){
 			 if( column.equals("clickMaterial")){
 				 listHeaders.add("点击数");
 				 listHeaders.add("点击数");
-			 }
+			 }  /////
 
 
 			 if( column.equals("play25FeedBreakRate")){
 			 if( column.equals("play25FeedBreakRate")){
 				 listHeaders.add("25%进度播放率");
 				 listHeaders.add("25%进度播放率");
 			 }
 			 }
 
 
 			 if( column.equals("playOverRate")){
 			 if( column.equals("playOverRate")){
-				 listHeaders.add("整体完播率");
-			 }
+				 listHeaders.add("播率");
+			 }  /////
 
 
 			 if( column.equals("convertRate")){
 			 if( column.equals("convertRate")){
 				 listHeaders.add("转化率");
 				 listHeaders.add("转化率");
-			 }
+			 }  /////
 
 
 			 if( column.equals("active")){
 			 if( column.equals("active")){
-				 listHeaders.add("激活");
-			 }
+				 listHeaders.add("激活");
+			 }  /////
 
 
 			 if( column.equals("downloadFinish")){
 			 if( column.equals("downloadFinish")){
-				 listHeaders.add("安卓下载完成");
-			 }
+				 listHeaders.add("安卓下载完成");
+			 }  /////
 
 
 			 if( column.equals("downloadStart")){
 			 if( column.equals("downloadStart")){
-				 listHeaders.add("安卓下载开始");
-			 }
+				 listHeaders.add("安卓下载开始");
+			 }  /////
 
 
 			 if( column.equals("installFinish")){
 			 if( column.equals("installFinish")){
 				 listHeaders.add("安卓安装完成");
 				 listHeaders.add("安卓安装完成");
 			 }
 			 }
 
 
 			 if( column.equals("register")){
 			 if( column.equals("register")){
-				 listHeaders.add("注册");
+				 listHeaders.add("注册");
 			 }
 			 }
 
 
 			 if( column.equals("payCount")){
 			 if( column.equals("payCount")){
-				 listHeaders.add("付费数");
-			 }
+				 listHeaders.add("付费数");
+			 }  /////
 
 
-			 if( column.equals("inAppUv")){
-				 listHeaders.add("到达uv");
-			 }
+			 //if( column.equals("inAppUv")){
+				// listHeaders.add("APP内访问");
+			 //}
 
 
-			 if( column.equals("inAppDetailUv")){
-				 listHeaders.add("详情页到站uv");
-			 }
+			 //if( column.equals("inAppDetailUv")){
+				// listHeaders.add("APP内访问详情页");
+			 //}
 
 
-			 if( column.equals("inAppCart")){
-				 listHeaders.add("加入购物车");
-			 }
+			 //if( column.equals("inAppCart")){
+				// listHeaders.add("app内加入购物车");
+			 //}
 
 
-			 if( column.equals("inAppOrder")){
-				 listHeaders.add("提交订单");
-			 }
+			 //if( column.equals("inAppOrder")){
+				// listHeaders.add("app内下单");
+			 //}
 
 
-			 if( column.equals("inAppPay")){
-				 listHeaders.add("付费");
-			 }
+			 //if( column.equals("inAppPay")){
+				// listHeaders.add("app内付费");
+			 //}
 
 
-			 if( column.equals("phone")){
-				 listHeaders.add("电话拨打数");
-			 }
+			 //if( column.equals("phone")){
+				// listHeaders.add("点击电话按钮");
+			 //}
 
 
 			 if( column.equals("form")){
 			 if( column.equals("form")){
-				 listHeaders.add("表单提交");
-			 }
+				 listHeaders.add("表单提交");
+			 }  /////
 
 
-			 if( column.equals("mapSearch")){
-				 listHeaders.add("地图搜索");
-			 }
+			 //if( column.equals("mapSearch")){
+				// listHeaders.add("地图搜索");
+			 //}  /////
 
 
-			 if( column.equals("button")){
-				 listHeaders.add("按钮button");
-			 }
+			 //if( column.equals("button")){
+				// listHeaders.add("按钮button");
+			 //}  /////
 
 
-			 if( column.equals("viewMaterial")){
-				 listHeaders.add("关键页面浏览");
-			 }
+			 //if( column.equals("viewMaterial")){
+				// listHeaders.add("关键页面浏览");
+			 //}  ////
 
 
-			 if( column.equals("qq")){
-				 listHeaders.add("QQ咨询");
-			 }
+			 //if( column.equals("qq")){
+				// listHeaders.add("QQ咨询");
+			 //}  /////
 
 
-			 if( column.equals("lottery")){
-				 listHeaders.add("抽奖");
-			 }
+			 //if( column.equals("lottery")){
+				// listHeaders.add("抽奖");
+			 //}  /////
 
 
-			 if( column.equals("vote")){
-				 listHeaders.add("投票");
-			 }
+			 //if( column.equals("vote")){
+				// listHeaders.add("投票");
+			 //}  /////
 
 
-			 if( column.equals("redirect")){
-				 listHeaders.add("页面跳转");
-			 }
+			 //if( column.equals("redirect")){
+				// listHeaders.add("页面跳转");
+			 //}  /////
 
 
-			 if( column.equals("shopping")){
-				 listHeaders.add("商品购买");
-			 }
+			 //if( column.equals("shopping")){
+				// listHeaders.add("商品购买");
+			 //}  /////
 
 
-			 if( column.equals("consult")){
-				 listHeaders.add("在线咨询");
-			 }
+			 //if( column.equals("consult")){
+				// listHeaders.add("在线咨询");
+			 //}  ////
 
 
-			 if( column.equals("wechat")){
-				 listHeaders.add("微信");
-			 }
+			 //if( column.equals("wechat")){
+				// listHeaders.add("微信复制");
+			 //}  ////
 
 
-			 if( column.equals("phoneConfirm")){
-				 listHeaders.add("智能电话确认拨打");
-			 }
+			 //if( column.equals("phoneConfirm")){
+				// listHeaders.add("智能电话-确认拨打");
+			 //}  /////
 
 
-			 if( column.equals("phoneConnect")){
-				 listHeaders.add("智能电话确认接通");
-			 }
+			 //if( column.equals("phoneConnect")){
+				// listHeaders.add("智能电话-确认接通");
+			 //}  /////
 
 
 
 
-			 if( column.equals("consultEffective")){
-				 listHeaders.add("智能电话有效咨询");
-			 }
+			 //if( column.equals("consultEffective")){
+				// listHeaders.add("有效咨询");
+			 //}  /////
 
 
 			 if( column.equals("totalPlay")){
 			 if( column.equals("totalPlay")){
-				 listHeaders.add("播放");
-			 }
+				 listHeaders.add("播放");
+			 }  /////
 
 
 			 if( column.equals("validPlay")){
 			 if( column.equals("validPlay")){
-				 listHeaders.add("有效播放");
-			 }
+				 listHeaders.add("有效播放");
+			 }  /////
 
 
 			 if( column.equals("wifiPlay")){
 			 if( column.equals("wifiPlay")){
 				 listHeaders.add("wifi播放");
 				 listHeaders.add("wifi播放");
 			 }
 			 }
 
 
 			 if( column.equals("play25FeedBreak")){
 			 if( column.equals("play25FeedBreak")){
-				 listHeaders.add("播放25%进度总数");
+				 listHeaders.add("25%进度播放数");
 			 }
 			 }
 
 
 			 if( column.equals("play50FeedBreak")){
 			 if( column.equals("play50FeedBreak")){
-				 listHeaders.add("播放50%进度总数");
+				 listHeaders.add("50%进度播放数");
 			 }
 			 }
 
 
 			 if( column.equals("play75FeedBreak")){
 			 if( column.equals("play75FeedBreak")){
-				 listHeaders.add("播放75%进度总数");
+				 listHeaders.add("75%进度播放数");
 			 }
 			 }
 
 
 			 if( column.equals("play100FeedBreak")){
 			 if( column.equals("play100FeedBreak")){
-				 listHeaders.add("播放100%进度总数");
+				 listHeaders.add("100%进度播放数");
 			 }
 			 }
 
 
-			 if( column.equals("advancedCreativePhoneClick")){
-				 listHeaders.add("电话按钮");
-			 }
+			 //if( column.equals("advancedCreativePhoneClick")){
+				// listHeaders.add("附加创意电话按钮点击");
+			 //}  /////
 
 
-			 if( column.equals("vancedCreativeCounselClick")){
-				 listHeaders.add("在线咨询");
-			 }
+			 //if( column.equals("advancedCreativeCounselClick")){
+				// listHeaders.add("附加创意在线咨询点击");
+			 //}  /////
 
 
-			 if( column.equals("advancedCreativeFormClick")){
-				 listHeaders.add("表单提交");
-			 }
+			 //if( column.equals("advancedCreativeFormClick")){
+				// listHeaders.add("附加创意表单按钮点击");
+			 //}  /////
 
 
 			 if( column.equals("shareMaterial")){
 			 if( column.equals("shareMaterial")){
 				 listHeaders.add("分享数");
 				 listHeaders.add("分享数");
-			 }
+			 }  /////
 
 
-			 if( column.equals("commentMaterial")){
-				 listHeaders.add("评论数");
-			 }
+			 //if( column.equals("commentMaterial")){
+				// listHeaders.add("评论提交数");
+			 //}  /////
 
 
 			 if( column.equals("follow")){
 			 if( column.equals("follow")){
 				 listHeaders.add("新增关注数");
 				 listHeaders.add("新增关注数");
-			 }
+			 }  /////
 
 
-			 if( column.equals("homeVisited")){
-				 listHeaders.add("主页访问量");
-			 }
+			 //if( column.equals("homeVisited")){
+				// listHeaders.add("主页访问量");
+			 //}
 
 
-			 if( column.equals("iesChallengeClick")){
-				 listHeaders.add("挑战赛查看数");
-			 }
+			 //if( column.equals("iesChallengeClick")){
+				// listHeaders.add("挑战赛查看数");
+			 //}
 
 
-			 if( column.equals("iesMusicClick")){
-				 listHeaders.add("音乐查看数");
-			 }
+			 //if( column.equals("iesMusicClick")){
+				// listHeaders.add("音乐查看数");
+			 //}  /////
 
 
 			 if( column.equals("nextDayOpen")){
 			 if( column.equals("nextDayOpen")){
 				 listHeaders.add("次留数");
 				 listHeaders.add("次留数");
-			 }
+			 }  /////
 
 
 			 if( column.equals("nextDayOpenRate")){
 			 if( column.equals("nextDayOpenRate")){
 				 listHeaders.add("次留率");
 				 listHeaders.add("次留率");
-			 }
+			 }  /////
 
 
 			 if( column.equals("nextDayOpenCost")){
 			 if( column.equals("nextDayOpenCost")){
 				 listHeaders.add("次留成本");
 				 listHeaders.add("次留成本");
-			 }
+			 }  /////
 
 
 			 if( column.equals("activePayAmount")){
 			 if( column.equals("activePayAmount")){
 				 listHeaders.add("付费次数");
 				 listHeaders.add("付费次数");
@@ -949,11 +971,11 @@ public class ByteDanceVideoReportDailyController {
 
 
 			 if( column.equals("validPlayCost")){
 			 if( column.equals("validPlayCost")){
 				 listHeaders.add("有效播放成本");
 				 listHeaders.add("有效播放成本");
-			 }
+			 }  /////
 
 
-			 if( column.equals("advancedCreativeCouponAddition")){
-				 listHeaders.add("附加创意卡券领取");
-			 }
+			 //if( column.equals("advancedCreativeCouponAddition")){
+				// listHeaders.add("附加创意卡券领取");
+			 //}  /////
 
 
 			 if( column.equals("convertMaterial")){
 			 if( column.equals("convertMaterial")){
 				 listHeaders.add("转化数");
 				 listHeaders.add("转化数");
@@ -961,19 +983,19 @@ public class ByteDanceVideoReportDailyController {
 
 
 			 if( column.equals("activePayCost")){
 			 if( column.equals("activePayCost")){
 				 listHeaders.add("付费成本");
 				 listHeaders.add("付费成本");
-			 }
+			 }  /////
 
 
-			 if( column.equals("download")){
-				 listHeaders.add("下载开始");
-			 }
+			 //if( column.equals("download")){
+				// listHeaders.add("下载开始");
+			 //}  ////
 
 
 			 if( column.equals("cpc")){
 			 if( column.equals("cpc")){
 				 listHeaders.add("平均点击单价");
 				 listHeaders.add("平均点击单价");
 			 }
 			 }
 
 
-			 if( column.equals("locationClick")){
-				 listHeaders.add("POI点击数");
-			 }
+			 //if( column.equals("locationClick")){
+				// listHeaders.add("POI点击数");
+			 //}
 
 
 			 if( column.equals("ctr")){
 			 if( column.equals("ctr")){
 				 listHeaders.add("点击率");
 				 listHeaders.add("点击率");
@@ -985,63 +1007,63 @@ public class ByteDanceVideoReportDailyController {
 
 
 			 if( column.equals("wifiPlayRate")){
 			 if( column.equals("wifiPlayRate")){
 				 listHeaders.add("WiFi播放占比");
 				 listHeaders.add("WiFi播放占比");
-			 }
+			 }  /////
 
 
 			 if( column.equals("likeMaterial")){
 			 if( column.equals("likeMaterial")){
 				 listHeaders.add("点赞数");
 				 listHeaders.add("点赞数");
-			 }
+			 }  /////
 
 
 			 if( column.equals("activeCost")){
 			 if( column.equals("activeCost")){
 				 listHeaders.add("激活成本");
 				 listHeaders.add("激活成本");
-			 }
+			 }  ////
 
 
 			 if( column.equals("gameAddictionCost")){
 			 if( column.equals("gameAddictionCost")){
 				 listHeaders.add("关键行为成本");
 				 listHeaders.add("关键行为成本");
-			 }
+			 }  /////
 
 
 			 if( column.equals("gameAddiction")){
 			 if( column.equals("gameAddiction")){
 				 listHeaders.add("关键行为数");
 				 listHeaders.add("关键行为数");
-			 }
+			 }  ////
 
 
 			 if( column.equals("activeRate")){
 			 if( column.equals("activeRate")){
 				 listHeaders.add("激活率");
 				 listHeaders.add("激活率");
-			 }
+			 }  /////
 
 
 			 if( column.equals("gameAddictionRate")){
 			 if( column.equals("gameAddictionRate")){
 				 listHeaders.add("关键行为率");
 				 listHeaders.add("关键行为率");
-			 }
+			 }  /////
 
 
 			 if( column.equals("activeRegisterRate")){
 			 if( column.equals("activeRegisterRate")){
 				 listHeaders.add("注册率");
 				 listHeaders.add("注册率");
-			 }
+			 }  /////
 
 
 			 if( column.equals("downloadFinishCost")){
 			 if( column.equals("downloadFinishCost")){
 				 listHeaders.add("安卓下载完成成本");
 				 listHeaders.add("安卓下载完成成本");
-			 }
+			 }  /////
 
 
 			 if( column.equals("activeRegisterCost")){
 			 if( column.equals("activeRegisterCost")){
 				 listHeaders.add("注册成本");
 				 listHeaders.add("注册成本");
-			 }
+			 }  ////
 
 
 			 if( column.equals("showMaterial")){
 			 if( column.equals("showMaterial")){
 				 listHeaders.add("展示数");
 				 listHeaders.add("展示数");
-			 }
+			 }  /////
 
 
 			 if( column.equals("downloadFinishRate")){
 			 if( column.equals("downloadFinishRate")){
 				 listHeaders.add("安卓下载完成率");
 				 listHeaders.add("安卓下载完成率");
-			 }
+			 }  /////
 
 
 			 if( column.equals("installFinishRate")){
 			 if( column.equals("installFinishRate")){
 				 listHeaders.add("安卓安装完成率");
 				 listHeaders.add("安卓安装完成率");
 			 }
 			 }
 
 
-			 if( column.equals("coupon")){
-				 listHeaders.add("建站卡券领取");
-			 }
+			 //if( column.equals("coupon")){
+				// listHeaders.add("建站卡券领取");
+			 //}  /////
 
 
-			 if( column.equals("couponSinglePage")){
-				 listHeaders.add("卡券页领取");
-			 }
+			 //if( column.equals("couponSinglePage")){
+				// listHeaders.add("卡券页领取");
+			 //}  /////
 
 
 			 if( column.equals("playOver")){
 			 if( column.equals("playOver")){
 				 listHeaders.add("完播数");
 				 listHeaders.add("完播数");
@@ -1049,15 +1071,15 @@ public class ByteDanceVideoReportDailyController {
 
 
 			 if( column.equals("downloadStartCost")){
 			 if( column.equals("downloadStartCost")){
 				 listHeaders.add("安卓下载开始成本");
 				 listHeaders.add("安卓下载开始成本");
-			 }
+			 }  /////
 
 
 			 if( column.equals("message")){
 			 if( column.equals("message")){
 				 listHeaders.add("短信咨询");
 				 listHeaders.add("短信咨询");
-			 }
+			 }  /////
 
 
 			 if( column.equals("validPlayRate")){
 			 if( column.equals("validPlayRate")){
 				 listHeaders.add("有效播放率");
 				 listHeaders.add("有效播放率");
-			 }
+			 }  /////
 
 
 			 if( column.equals("averagePlayTimePerPlay")){
 			 if( column.equals("averagePlayTimePerPlay")){
 				 listHeaders.add("平均单次播放时长");
 				 listHeaders.add("平均单次播放时长");
@@ -1073,11 +1095,11 @@ public class ByteDanceVideoReportDailyController {
 
 
 			 if( column.equals("downloadStartRate")){
 			 if( column.equals("downloadStartRate")){
 				 listHeaders.add("安卓下载开始率");
 				 listHeaders.add("安卓下载开始率");
-			 }
+			 }  /////
 
 
-			 if( column.equals("companyId")){
-				 listHeaders.add("companyId");
-			 }
+			 //if( column.equals("companyId")){
+				// listHeaders.add("companyId");
+			 //}
 		 }
 		 }
 
 
 		 String[] groupHeaders = listHeaders.toArray(new String[listHeaders.size()]);
 		 String[] groupHeaders = listHeaders.toArray(new String[listHeaders.size()]);

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

@@ -425,4 +425,7 @@ public class ByteDanceVideoReportDaily {
 
 
 	@TableField(exist = false)
 	@TableField(exist = false)
     private Integer clickMaterial;
     private Integer clickMaterial;
+
+	@TableField(exist = false)
+	private String materialDesc;
 }
 }

+ 1 - 1
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/ByteDanceVideoReportDailyMapper.java

@@ -34,7 +34,7 @@ public interface ByteDanceVideoReportDailyMapper extends BaseMapper<ByteDanceVid
 
 
     void updateJsonByUserIdAndType(@Param("json") String json, @Param("userId") String userId, @Param("columnType") Integer columnType);
     void updateJsonByUserIdAndType(@Param("json") String json, @Param("userId") String userId, @Param("columnType") Integer columnType);
 
 
-    List<ByteDanceVideoReportDaily> videoInfoListDetail(@Param("companyId") String companyId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("signature") String signature);
+    List<ByteDanceVideoReportDaily> videoInfoListDetail(@Param("companyId") String companyId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("signature") String signature, @Param("role") String role);
 
 
     List<ByteDanceVideoReportDaily> bytedanceVideoInfoList(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("role") String role, @Param("userId") String userId, @Param("signature") String signature, @Param("companyId") String companyId, @Param("cost") BigDecimal cost);
     List<ByteDanceVideoReportDaily> bytedanceVideoInfoList(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("role") String role, @Param("userId") String userId, @Param("signature") String signature, @Param("companyId") String companyId, @Param("cost") BigDecimal cost);
 
 

+ 224 - 204
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/xml/ByteDanceVideoReportDailyMapper.xml

@@ -16,7 +16,8 @@
         d.signature as signature,
         d.signature as signature,
         d.video_url as videoUrl,
         d.video_url as videoUrl,
         e.url as url,
         e.url as url,
-        e.material_name as materialName,
+        <!-- e.material_name as materialName,  -->
+        '-' as materialDesc,
         1 as appType,
         1 as appType,
         sum(a.click) as click,   -- 点击数
         sum(a.click) as click,   -- 点击数
         case
         case
@@ -87,22 +88,31 @@
         then sum(a.cost)/sum(a.next_day_open)
         then sum(a.cost)/sum(a.next_day_open)
         else 0 end as nextDayOpenCost, -- 次留成本 = 消耗/次留数
         else 0 end as nextDayOpenCost, -- 次留成本 = 消耗/次留数
 
 
+        case when sum(a.pay_count) != 0
+        then sum(a.cost)/sum(a.pay_count)
+        else 0 end
+        as activePayCost, -- 应用下载广告数据-付费成本 = 消耗/付费次数
+
+
         sum(a.active_pay_amount) as activePayAmount, -- 应用下载广告数据-付费次数
         sum(a.active_pay_amount) as activePayAmount, -- 应用下载广告数据-付费次数
 
 
         case
         case
-        when sum(a.cost) != 0
+        when sum(a.valid_play) != 0
         then sum(a.cost)/sum(a.valid_play)
         then sum(a.cost)/sum(a.valid_play)
         else 0 end validPlayCost, -- 视频数据-有效播放成本  计算公式:总花费/有效播放数,当天数据可能会有波动,次日早8点后稳定。
         else 0 end validPlayCost, -- 视频数据-有效播放成本  计算公式:总花费/有效播放数,当天数据可能会有波动,次日早8点后稳定。
         sum(a.advanced_creative_coupon_addition) as advancedCreativeCouponAddition, -- 附加创意-附加创意卡券领取
         sum(a.advanced_creative_coupon_addition) as advancedCreativeCouponAddition, -- 附加创意-附加创意卡券领取
         sum(a.convert_material) as convertMaterial, -- 转化数据-转化数
         sum(a.convert_material) as convertMaterial, -- 转化数据-转化数
 
 
         case
         case
-        when sum(a.cost) != 0
+        when sum(a.active_pay_amount) != 0
         then sum(a.cost)/sum(a.active_pay_amount)
         then sum(a.cost)/sum(a.active_pay_amount)
         else 0 end as activePayCost, -- 应用下载广告数据-付费成本 = 消耗/付费次数
         else 0 end as activePayCost, -- 应用下载广告数据-付费成本 = 消耗/付费次数
         sum(a.download) as download, -- 落地页转化数据-下载开始
         sum(a.download) as download, -- 落地页转化数据-下载开始
         <!--sum(a.cpa) as cpa, -->--
         <!--sum(a.cpa) as cpa, -->--
-        AVG(a.cpc) as cpc, -- 平均点击单价
+        case
+        when sum(a.click) != 0
+        then sum(a.cost) / sum(a.click)
+        else 0 end                           as cpc,                            -- 平均点击单价
         sum(a.location_click) as locationClick, -- 互动数据-POI点击数
         sum(a.location_click) as locationClick, -- 互动数据-POI点击数
         --  sum(a.play_over_rate) as playOverRate, -- 视频数据-播完率
         --  sum(a.play_over_rate) as playOverRate, -- 视频数据-播完率
 
 
@@ -112,7 +122,7 @@
         else 0 end as ctr, -- 展现数据-点击率   广告被点击的次数占展示次数的百分比。计算方法:点击数/展示数*100%
         else 0 end as ctr, -- 展现数据-点击率   广告被点击的次数占展示次数的百分比。计算方法:点击数/展示数*100%
 
 
         case
         case
-        when sum(a.cost) != 0
+        when sum(a.show_material) != 0
         then sum(a.cost)/sum(a.show_material)*1000
         then sum(a.cost)/sum(a.show_material)*1000
         else 0 end cpm, -- 平均千次展现费用  广告平均每一千次展现所付出的费用,计算公式是:总花费/展示数*1000。
         else 0 end cpm, -- 平均千次展现费用  广告平均每一千次展现所付出的费用,计算公式是:总花费/展示数*1000。
         sum(a.wifi_play_rate) as wifiPlayRate, -- 视频数据-WiFi播放占比
         sum(a.wifi_play_rate) as wifiPlayRate, -- 视频数据-WiFi播放占比
@@ -131,7 +141,7 @@
         sum(a.game_addiction) as gameAddiction, -- 应用下载广告数据-关键行为数
         sum(a.game_addiction) as gameAddiction, -- 应用下载广告数据-关键行为数
 
 
         case
         case
-        when sum(a.active) != 0
+        when sum(a.click) != 0
         then sum(a.active)/sum(a.click)
         then sum(a.active)/sum(a.click)
         else 0 end as activeRate, -- 应用下载广告数据-激活率   计算方式:激活数/点击数*100%
         else 0 end as activeRate, -- 应用下载广告数据-激活率   计算方式:激活数/点击数*100%
         <!-- sum(a.play_duration_10s) as playDuration10s,--> --
         <!-- sum(a.play_duration_10s) as playDuration10s,--> --
@@ -186,10 +196,14 @@
         <!-- sum(a.play_duration) as playDuration, --> --
         <!-- sum(a.play_duration) as playDuration, --> --
 
 
         case
         case
-        when sum(a.valid_play) != 0
+        when sum(a.show_material) != 0
         then sum(a.valid_play)/sum(a.show_material)
         then sum(a.valid_play)/sum(a.show_material)
         else 0 end as validPlayRate, -- 视频数据-有效播放率  有效播放数/展示数
         else 0 end as validPlayRate, -- 视频数据-有效播放率  有效播放数/展示数
-        AVG(a.average_play_time_per_play) as averagePlayTimePerPlay, -- 视频数据-平均单次播放时长
+
+        case
+        when sum(a.valid_play) != 0
+        then sum(a.average_play_time_per_play*a.valid_play)/sum(a.valid_play)
+        else 0 end as averagePlayTimePerPlay,         -- 视频数据-平均单次播放时长
 
 
         case
         case
         when sum(a.convert_material) != 0
         when sum(a.convert_material) != 0
@@ -248,216 +262,217 @@
         --  a.material_id as materialId,
         --  a.material_id as materialId,
         --         a.account_id as accountId,
         --         a.account_id as accountId,
         --         b.auth_name as authName,
         --         b.auth_name as authName,
-        a.project_id as projectId,
-        a.project_name as projectName,
-        a.advertiser_id as advertiserId,
-        a.advertiser_name as advertiserName,
-        a.stat_datetime as statDatetime,
-        sum(a.cost) as cost,  -- 消耗
-        a.signature as signature,
-        a.video_url as videoUrl,
-        e.url as url,
-        case when e.material_name is null
-        then '-'
-        else e.material_name end as materialName,
-        1 as appType,
-        sum(a.click) as clickMaterial,   -- 点击数
+        a.project_id                             as projectId,
+        a.project_name                           as projectName,
+        a.advertiser_id                          as advertiserId,
+        a.advertiser_name                        as advertiserName,
+        a.stat_datetime                          as statDatetime,
+        sum(a.cost)                              as cost,                           -- 消耗
+        a.signature                              as signature,
+        a.video_url                              as videoUrl,
+        '-'                                      as materialDesc,
+        (select info.url from ctop_material_info info where info.code = a.signature limit 1)                                    as url,
+        1                                        as appType,
+        sum(a.click)                             as clickMaterial,                  -- 点击数
 
 
         case
         case
         when sum(a.total_play) != 0
         when sum(a.total_play) != 0
-        then sum(a.play25_feed_break)/sum(a.total_play)
-        else 0 end as play25FeedBreakRate,  -- 25%进度播放率
+        then sum(a.play25_feed_break) / sum(a.total_play)
+        else 0 end                           as play25FeedBreakRate,            -- 25%进度播放率
 
 
         case
         case
         when sum(a.total_play) != 0
         when sum(a.total_play) != 0
-        then sum(a.play_over)/sum(a.total_play)
-        else 0 end as playOverRate,  -- 整体完播率
+        then sum(a.play_over) / sum(a.total_play)
+        else 0 end                           as playOverRate,                   -- 整体完播率
 
 
         case
         case
         when sum(a.click) != 0
         when sum(a.click) != 0
-        then sum(a.convert_material)/sum(a.click)
-        else 0 end as convertRate,  -- 转化率  转化数/点击数*100% !
-        sum(a.active) as active, -- 应用下载-激活
-        sum(a.download_finish) as downloadFinish, -- 应用下载-安卓下载完成
-        sum(a.download_start) as downloadStart, -- 应用下载-安卓下载开始
-        sum(a.install_finish) as installFinish, -- 应用下载-安卓安装完成
-        sum(a.register) as register, -- 应用下载-注册
-        sum(a.pay_count) as payCount, -- 应用下载-付费数
-        sum(a.in_app_uv) as inAppUv, -- 应用下载-到达uv
-        sum(a.in_app_detail_uv) as inAppDetailUv, -- 应用下载-详情页到站uv
-        sum(a.in_app_cart) as inAppCart, -- 应用下载-加入购物车
-        sum(a.in_app_order) as inAppOrder, -- 应用下载-提交订单
-        sum(a.in_app_pay) as inAppPay, -- 应用下载-付费
-        sum(a.phone) as phone, -- 落地页-电话拨打数
-        sum(a.form) as form, --  表单提交数
-        sum(a.map_search) as mapSearch, -- 落地页-地图搜索
-        sum(a.button) as button, -- 落地页-按钮button
-        sum(a.view_material) as viewMaterial, -- 落地页-关键页面浏览
-        sum(a.qq) as qq, -- 落地页-QQ咨询数
-        sum(a.lottery) as lottery, -- 落地页-抽奖数
-        sum(a.vote) as vote, -- 落地页-投票
-        sum(a.redirect) as redirect, -- 落地页-页面跳转
-        sum(a.shopping) as shopping, -- 落地页-商品购买
-        sum(a.consult) as consult, -- 落地页-在线咨询
-        sum(a.wechat) as wechat, -- 落地页-微信
-        sum(a.phone_confirm) as phoneConfirm, -- 落地页-智能电话确认拨打
-        sum(a.phone_connect) as phoneConnect, -- 落地页-智能电话确认接通
-        sum(a.consult_effective) as consultEffective, -- 落地页-智能电话有效咨询
-        sum(a.total_play) as totalPlay, -- 视频-总播放
-        sum(a.valid_play) as validPlay, -- 视频-有效播放
-        sum(a.wifi_play) as wifiPlay, -- 视频-wifi播放
-        <!-- sum(a.play_duration_sum) as play_duration_sum, --> -- 视频-播放时长,单位ms
-        sum(a.play25_feed_break) as play25FeedBreak, -- 视频-播放25%进度总数
-        sum(a.play50_feed_break) as play50FeedBreak, -- 视频-播放50%进度总数
-        sum(a.play75_feed_break) as play75FeedBreak, -- 视频-播放75%进度总数
-        sum(a.play100_feed_break) as play100FeedBreak, -- 视频-播放100%进度总数
-        sum(a.advanced_creative_phone_click) as advancedCreativePhoneClick, -- 附加创意-电话按钮
-        sum(a.advanced_creative_counsel_click) as vancedCreativeCounselClick, -- 附加创意-在线咨询
-        sum(a.advanced_creative_form_click) as advancedCreativeFormClick, -- 附加创意-表单提交
-        sum(a.share_material) as shareMaterial, -- 互动数据-分享数
-        sum(a.comment_material) as commentMaterial, -- 互动数据-评论数
-        sum(a.follow) as follow, -- 互动数据-新增关注数
-        sum(a.home_visited) as homeVisited, -- 互动数据-主页访问量
-        sum(a.ies_challenge_click) as iesChallengeClick, -- 互动数据-挑战赛查看数
-        sum(a.ies_music_click) as iesMusicClick, -- 互动数据-音乐查看数
-        sum(a.next_day_open) as nextDayOpen, -- 次留数
+        then sum(a.convert_material) / sum(a.click)
+        else 0 end                           as convertRate,                    -- 转化率  转化数/点击数*100% !
+        sum(a.active)                            as active,                         -- 应用下载-激活
+        sum(a.download_finish)                   as downloadFinish,                 -- 应用下载-安卓下载完成
+        sum(a.download_start)                    as downloadStart,                  -- 应用下载-安卓下载开始
+        sum(a.install_finish)                    as installFinish,                  -- 应用下载-安卓安装完成
+        sum(a.register)                          as register,                       -- 应用下载-注册
+        sum(a.pay_count)                         as payCount,                       -- 应用下载-付费数
+        -- sum(a.in_app_uv)                         as inAppUv,                        -- 应用下载-到达uv
+        -- sum(a.in_app_detail_uv)                  as inAppDetailUv,                  -- 应用下载-详情页到站uv
+        -- sum(a.in_app_cart)                       as inAppCart,                      -- 应用下载-加入购物车
+        -- sum(a.in_app_order)                      as inAppOrder,                     -- 应用下载-提交订单
+        -- sum(a.in_app_pay)                        as inAppPay,                       -- 应用下载-付费
+        -- sum(a.phone)                             as phone,                          -- 落地页-电话拨打数
+        sum(a.form)                              as form,                           --  表单提交数
+        -- sum(a.map_search)                        as mapSearch,                      -- 落地页-地图搜索
+        -- sum(a.button)                            as button,                         -- 落地页-按钮button
+        -- sum(a.view_material)                     as viewMaterial,                   -- 落地页-关键页面浏览
+        -- sum(a.qq)                                as qq,                             -- 落地页-QQ咨询数
+        -- sum(a.lottery)                           as lottery,                        -- 落地页-抽奖数
+        -- sum(a.vote)                              as vote,                           -- 落地页-投票
+        -- sum(a.redirect)                          as redirect,                       -- 落地页-页面跳转
+        -- sum(a.shopping)                          as shopping,                       -- 落地页-商品购买
+        -- sum(a.consult)                           as consult,                        -- 落地页-在线咨询
+        -- sum(a.wechat)                            as wechat,                         -- 落地页-微信
+        -- sum(a.phone_confirm)                     as phoneConfirm,                   -- 落地页-智能电话确认拨打
+        -- sum(a.phone_connect)                     as phoneConnect,                   -- 落地页-智能电话确认接通
+        -- sum(a.consult_effective)                 as consultEffective,               -- 落地页-智能电话有效咨询
+        sum(a.total_play)                        as totalPlay,                      -- 视频-总播放
+        sum(a.valid_play)                        as validPlay,                      -- 视频-有效播放
+        sum(a.wifi_play)                         as wifiPlay,                       -- 视频-wifi播放
+        sum(a.play25_feed_break)                 as play25FeedBreak,                -- 视频-播放25%进度总数
+        sum(a.play50_feed_break)                 as play50FeedBreak,                -- 视频-播放50%进度总数
+        sum(a.play75_feed_break)                 as play75FeedBreak,                -- 视频-播放75%进度总数
+        sum(a.play100_feed_break)                as play100FeedBreak,               -- 视频-播放100%进度总数
+        -- sum(a.advanced_creative_phone_click)     as advancedCreativePhoneClick,     -- 附加创意-电话按钮
+        -- sum(a.advanced_creative_counsel_click)   as advancedCreativeCounselClick,     -- 附加创意-在线咨询
+        -- sum(a.advanced_creative_form_click)      as advancedCreativeFormClick,      -- 附加创意-表单提交
+        sum(a.share_material)                    as shareMaterial,                  -- 互动数据-分享数
+        -- sum(a.comment_material)                  as commentMaterial,                -- 互动数据-评论数
+        sum(a.follow)                            as follow,                         -- 互动数据-新增关注数
+        -- sum(a.home_visited)                      as homeVisited,                    -- 互动数据-主页访问量
+        -- sum(a.ies_challenge_click)               as iesChallengeClick,              -- 互动数据-挑战赛查看数
+        -- sum(a.ies_music_click)                   as iesMusicClick,                  -- 互动数据-音乐查看数
+        sum(a.next_day_open)                     as nextDayOpen,                    -- 次留数
         case
         case
         when sum(a.active) != 0
         when sum(a.active) != 0
-        then sum(a.next_day_open)/sum(a.active)
-        else 0 end as nextDayOpenRate, -- 次留率 = 次留数/激活数
+        then sum(a.next_day_open) / sum(a.active)
+        else 0 end                           as nextDayOpenRate,                -- 次留率 = 次留数/激活数
 
 
         case
         case
         when sum(a.next_day_open) != 0
         when sum(a.next_day_open) != 0
-        then sum(a.cost)/sum(a.next_day_open)
-        else 0 end as nextDayOpenCost, -- 次留成本 = 消耗/次留数
+        then sum(a.cost) / sum(a.next_day_open)
+        else 0 end                           as nextDayOpenCost,                -- 次留成本 = 消耗/次留数
 
 
-        sum(a.active_pay_amount) as activePayAmount, -- 应用下载广告数据-付费次数
+        sum(a.active_pay_amount)                 as activePayAmount,                -- 应用下载广告数据-付费次数
 
 
         case
         case
-        when sum(a.cost) != 0
-        then sum(a.cost)/sum(a.valid_play)
-        else 0 end validPlayCost, -- 视频数据-有效播放成本  计算公式:总花费/有效播放数,当天数据可能会有波动,次日早8点后稳定。
-        sum(a.advanced_creative_coupon_addition) as advancedCreativeCouponAddition, -- 附加创意-附加创意卡券领取
-        sum(a.convert_material) as convertMaterial, -- 转化数据-转化数
+        when sum(a.valid_play) != 0
+        then sum(a.cost) / sum(a.valid_play)
+        else 0 end                              validPlayCost,                  -- 视频数据-有效播放成本  计算公式:总花费/有效播放数,当天数据可能会有波动,次日早8点后稳定。
+        -- sum(a.advanced_creative_coupon_addition) as advancedCreativeCouponAddition, -- 附加创意-附加创意卡券领取
+        sum(a.convert_material)                  as convertMaterial,                -- 转化数据-转化数
 
 
         case
         case
-        when sum(a.cost) != 0
-        then sum(a.cost)/sum(a.active_pay_amount)
-        else 0 end as activePayCost, -- 应用下载广告数据-付费成本 = 消耗/付费次数
-        sum(a.download) as download, -- 落地页转化数据-下载开始
-        <!--sum(a.cpa) as cpa, -->--
-        AVG(a.cpc) as cpc, -- 平均点击单价
-        sum(a.location_click) as locationClick, -- 互动数据-POI点击数
-        sum(a.play_over_rate) as playOverRate, -- 视频数据-播完率
+        when sum(a.active_pay_amount) != 0
+        then sum(a.cost) / sum(a.active_pay_amount)
+        else 0 end                           as activePayCost,                  -- 应用下载广告数据-付费成本 = 消耗/付费次数
+        -- sum(a.download)                          as download,                       -- 落地页转化数据-下载开始
+
+        case
+        when sum(a.click) != 0
+        then sum(a.cost) / sum(a.click)
+        else 0 end                           as cpc,                            -- 平均点击单价
+        -- sum(a.location_click)                    as locationClick,                  -- 互动数据-POI点击数
+        sum(a.play_over_rate)                    as playOverRate,                   -- 视频数据-播完率
 
 
         case
         case
         when sum(a.show_material) != 0
         when sum(a.show_material) != 0
-        then sum(a.click)/sum(a.show_material)
-        else 0 end as ctr, -- 展现数据-点击率   广告被点击的次数占展示次数的百分比。计算方法:点击数/展示数*100%
+        then sum(a.click) / sum(a.show_material)
+        else 0 end                           as ctr,                            -- 展现数据-点击率   广告被点击的次数占展示次数的百分比。计算方法:点击数/展示数*100%
 
 
         case
         case
-        when sum(a.cost) != 0
-        then sum(a.cost)/sum(a.show_material)*1000
-        else 0 end cpm, -- 平均千次展现费用  广告平均每一千次展现所付出的费用,计算公式是:总花费/展示数*1000。
-        sum(a.wifi_play_rate) as wifiPlayRate, -- 视频数据-WiFi播放占比
-        sum(a.like_material) as likeMaterial, -- 互动数据-点赞数
-        <!--  sum(a.active_pay_rate) as activePayRate,--> -- 应用下载广告数据-付费率
+        when sum(a.show_material) != 0
+        then sum(a.cost) / sum(a.show_material) * 1000
+        else 0 end                              cpm,                            -- 平均千次展现费用  广告平均每一千次展现所付出的费用,计算公式是:总花费/展示数*1000。
+        sum(a.wifi_play_rate)                    as wifiPlayRate,                   -- 视频数据-WiFi播放占比
+        sum(a.like_material)                     as likeMaterial,                   -- 互动数据-点赞数
+
 
 
         case
         case
         when sum(a.active) != 0
         when sum(a.active) != 0
-        then sum(a.cost)/sum(a.active)
-        else 0 end activeCost, -- 应用下载广告数据-激活成本  计算方式:总花费/激活数。
+        then sum(a.cost) / sum(a.active)
+        else 0 end                              activeCost,                     -- 应用下载广告数据-激活成本  计算方式:总花费/激活数。
 
 
         case
         case
         when sum(a.game_addiction) != 0
         when sum(a.game_addiction) != 0
-        then sum(a.cost)/sum(a.game_addiction)
-        else 0 end as gameAddictionCost, -- 应用下载广告数据-关键行为成本  广告主为每个有APP内关键行为的用户所付出的成本,计算公式是总花费/关键行为数。当天数据可能会有波动,次日早8点后稳定。
-        sum(a.game_addiction) as gameAddiction, -- 应用下载广告数据-关键行为数
+        then sum(a.cost) / sum(a.game_addiction)
+        else 0 end                           as gameAddictionCost,              -- 应用下载广告数据-关键行为成本  广告主为每个有APP内关键行为的用户所付出的成本,计算公式是总花费/关键行为数。当天数据可能会有波动,次日早8点后稳定。
+        sum(a.game_addiction)                    as gameAddiction,                  -- 应用下载广告数据-关键行为数
 
 
         case
         case
-        when sum(a.active) != 0
-        then sum(a.active)/sum(a.click)
-        else 0 end as activeRate, -- 应用下载广告数据-激活率   计算方式:激活数/点击数*100%
-        <!-- sum(a.play_duration_10s) as playDuration10s,--> --
-        <!-- sum(a.phone_effective) as phone_effective,--> --
+        when sum(a.click) != 0
+        then sum(a.active) / sum(a.click)
+        else 0 end                           as activeRate,                     -- 应用下载广告数据-激活率   计算方式:激活数/点击数*100%
+
 
 
         case
         case
         when sum(a.active) != 0
         when sum(a.active) != 0
-        then sum(a.game_addiction)/sum(a.active)
-        else 0 end gameAddictionRate, -- 应用下载广告数据-关键行为率  关键行为用户占激活用户的比例
+        then sum(a.game_addiction) / sum(a.active)
+        else 0 end                              gameAddictionRate,              -- 应用下载广告数据-关键行为率  关键行为用户占激活用户的比例
 
 
         case
         case
         when sum(a.active) != 0
         when sum(a.active) != 0
-        then sum(a.register)/sum(a.active)
-        else 0 end as activeRegisterRate, -- 应用下载广告数据-注册率   注册用户占激活用户的比例
-        <!-- sum(a.average_video_play) as averageVideoPlay,--> --
+        then sum(a.register) / sum(a.active)
+        else 0 end                           as activeRegisterRate,             -- 应用下载广告数据-注册率   注册用户占激活用户的比例
+
 
 
         case
         case
         when sum(a.download_finish) != 0
         when sum(a.download_finish) != 0
-        then sum(a.cost)/sum(a.download_finish)
-        else 0 end as downloadFinishCost, -- 应用下载广告数据-安卓下载完成成本 计算方式:总花费/安卓下载完成数。
-        <!--sum(a.play_duration_3s) as playDuration3s,--> --
+        then sum(a.cost) / sum(a.download_finish)
+        else 0 end                           as downloadFinishCost,             -- 应用下载广告数据-安卓下载完成成本 计算方式:总花费/安卓下载完成数。
+
 
 
         case
         case
         when sum(a.register) != 0
         when sum(a.register) != 0
-        then sum(a.cost)/sum(a.register)
-        else 0 end as activeRegisterCost, -- 应用下载广告数据-注册成本  总花费/注册数,当天数据可能会有波动,次日早8点后稳定。
-        sum(a.show_material) as showMaterial, -- 展现数据-展示数
+        then sum(a.cost) / sum(a.register)
+        else 0 end                           as activeRegisterCost,             -- 应用下载广告数据-注册成本  总花费/注册数,当天数据可能会有波动,次日早8点后稳定。
+        sum(a.show_material)                     as showMaterial,                   -- 展现数据-展示数
 
 
-        <!--  case
-        when sum(a.click) != 0
-        then sum(a.convert_material)/sum(a.click)
-        else 0 end as convertRate,  转化数据-转化率  计算方式:转化数/点击数*100%  -->
 
 
         case
         case
         when sum(a.download_start) != 0
         when sum(a.download_start) != 0
-        then sum(a.download_finish)/sum(a.download_start)
-        else 0 end as downloadFinishRate, -- 应用下载广告数据-安卓下载完成率  计算方式:安卓下载完成数/安卓下载开始数
+        then sum(a.download_finish) / sum(a.download_start)
+        else 0 end                           as downloadFinishRate,             -- 应用下载广告数据-安卓下载完成率  计算方式:安卓下载完成数/安卓下载开始数
 
 
         case
         case
         when sum(a.download_finish) != 0
         when sum(a.download_finish) != 0
-        then sum(a.install_finish)/sum(a.download_finish)
-        else 0 end as installFinishRate, -- 应用下载广告数据-安卓安装完成率  计算方式:安卓安装完成数/安卓下载完成数
-        sum(a.coupon) as coupon, -- 落地页转化数据-建站卡券领取
-        sum(a.coupon_single_page) as couponSinglePage, -- 落地页转化数据-卡券页领取
-        sum(a.play_over) as playOver, -- 完播数
+        then sum(a.install_finish) / sum(a.download_finish)
+        else 0 end                           as installFinishRate,              -- 应用下载广告数据-安卓安装完成率  计算方式:安卓安装完成数/安卓下载完成数
+        -- sum(a.coupon)                            as coupon,                         -- 落地页转化数据-建站卡券领取
+        -- sum(a.coupon_single_page)                as couponSinglePage,               -- 落地页转化数据-卡券页领取
+        sum(a.play_over)                         as playOver,                       -- 完播数
 
 
         case
         case
         when sum(a.download_start) != 0
         when sum(a.download_start) != 0
-        then sum(a.cost)/sum(a.download_start)
-        else 0 end as downloadStartCost, -- 应用下载广告数据-安卓下载开始成本  计算方法:总花费/安卓下载开始数。
-        sum(a.message) as message, -- 落地页转化数据-短信咨询  用户点击短信咨询的次数
-        <!-- sum(a.play_duration) as playDuration, --> --
+        then sum(a.cost) / sum(a.download_start)
+        else 0 end                           as downloadStartCost,              -- 应用下载广告数据-安卓下载开始成本  计算方法:总花费/安卓下载开始数。
+        -- sum(a.message)                           as message,                        -- 落地页转化数据-短信咨询  用户点击短信咨询的次数
+
 
 
         case
         case
+        when sum(a.show_material) != 0
+        then sum(a.valid_play) / sum(a.show_material)
+        else 0 end                           as validPlayRate,                  -- 视频数据-有效播放率  有效播放数/展示数
+        case
         when sum(a.valid_play) != 0
         when sum(a.valid_play) != 0
-        then sum(a.valid_play)/sum(a.show_material)
-        else 0 end as validPlayRate, -- 视频数据-有效播放率  有效播放数/展示数
-        AVG(a.average_play_time_per_play) as averagePlayTimePerPlay, -- 视频数据-平均单次播放时长
-
+        then sum(a.average_play_time_per_play*a.valid_play)/sum(a.valid_play)
+        else 0 end as averagePlayTimePerPlay,         -- 视频数据-平均单次播放时长
         case
         case
         when sum(a.convert_material) != 0
         when sum(a.convert_material) != 0
-        then sum(a.cost)/sum(a.convert_material)
-        else 0 end as convertCost, --  转化数据-转化成本=总花费/转化数
-        <!--  sum(a.convert_show_rate) as convert_show_rate, --> --
+        then sum(a.cost) / sum(a.convert_material)
+        else 0 end                           as convertCost,                    --  转化数据-转化成本=总花费/转化数
+
 
 
         case
         case
         when sum(a.install_finish) != 0
         when sum(a.install_finish) != 0
-        then sum(a.cost)/sum(a.install_finish)
-        else 0 end as installFinishCost, --  应用下载广告数据-安卓安装完成成本  计算方式:总花费/安卓安装完成数
+        then sum(a.cost) / sum(a.install_finish)
+        else 0 end                           as installFinishCost,              --  应用下载广告数据-安卓安装完成成本  计算方式:总花费/安卓安装完成数
 
 
         case
         case
         when sum(a.click) != 0
         when sum(a.click) != 0
-        then sum(a.download_start)/sum(a.click)
-        else 0 end as downloadStartRate --  应用下载广告数据-安卓下载开始率  计算方法:安卓下载开始数/点击数
+        then sum(a.download_start) / sum(a.click)
+        else 0 end                           as downloadStartRate               --  应用下载广告数据-安卓下载开始率  计算方法:安卓下载开始数/点击数
+
         from ctop_bytedance_video_report_daily a
         from ctop_bytedance_video_report_daily a
+        left join (select material_id,clip_id,shot_id,plan_id,plane_id from ctop_material_ascription group by material_id) f on a.signature = f.material_id
+        where stat_datetime &gt;= #{startDate}
+        and stat_datetime &lt;= #{endDate}
+
+        <if test=" role != 'admin' ">
+           and a.company_id = #{companyId}
+        </if>
+
+        and f.material_id is not null
 
 
-        left join (select id,code,url,material_name from ctop_material_info group by code) e on a.signature = e.code
-        left join ctop_material_ascription f on e.id = f.material_id
-        where a.company_id = #{companyId}
-        and date_format(stat_datetime,'%Y-%m-%d') &gt;= #{startDate}
-        and date_format(stat_datetime,'%Y-%m-%d') &lt;= #{endDate}
-        and e.code is not null
         <choose>   <!-- 编导、剪辑、拍摄、平面只能查看自己本职工作制作的视频,设计组长和管理员能查看所有的-->
         <choose>   <!-- 编导、剪辑、拍摄、平面只能查看自己本职工作制作的视频,设计组长和管理员能查看所有的-->
             <when test="role == 'plan'">
             <when test="role == 'plan'">
                 and f.plan = #{userId}
                 and f.plan = #{userId}
@@ -474,21 +489,20 @@
             <when test="role == 'admin' or role == 'designTeamLeader'">
             <when test="role == 'admin' or role == 'designTeamLeader'">
                 and 1=1
                 and 1=1
             </when>
             </when>
-            <otherwise>
+            <otherwise>F
                 and a.id = 0
                 and a.id = 0
             </otherwise>
             </otherwise>
         </choose>
         </choose>
 
 
         <if test="signature != null and signature != '' ">
         <if test="signature != null and signature != '' ">
-            and e.code = #{signature}
+            and a.signature = #{signature}
         </if>
         </if>
 
 
+        group by a.signature
         <if test="cost != null">
         <if test="cost != null">
-            and cost &gt;= #{cost}
+            having sum(a.cost) &gt;= #{cost}
         </if>
         </if>
-
-          group by signature
-          order by projectId,signature
+        order by sum(a.cost)
     </select>
     </select>
 
 
     <select id="getRoleCodeByUserId" resultType="string">
     <select id="getRoleCodeByUserId" resultType="string">
@@ -557,15 +571,18 @@
                 a.cost as cost,  -- 消耗
                 a.cost as cost,  -- 消耗
                 -- a.signature as signature,
                 -- a.signature as signature,
                 a.video_url as videoUrl,
                 a.video_url as videoUrl,
-                e.url as url,
+                (select info.url from ctop_material_info info where info.code = a.signature limit 1) as url,
                 huanbi as huanbi
                 huanbi as huanbi
+
         from ctop_bytedance_video_report_daily a
         from ctop_bytedance_video_report_daily a
-        left join (select id,code,url,material_name from ctop_material_info group by code) e on a.signature = e.code
-        left join ctop_material_ascription f on e.id = f.material_id
-        where a.company_id = #{companyId}
-        and e.code = #{signature}
-        and date_format(stat_datetime,'%Y-%m-%d') &gt;= #{startDate}
-        and date_format(stat_datetime,'%Y-%m-%d') &lt;= #{endDate}
+        left join (select material_id,clip_id,shot_id,plan_id,plane_id from ctop_material_ascription group by material_id) f on a.signature = f.material_id
+        where
+        stat_datetime &gt;= #{startDate}
+        and stat_datetime &lt;= #{endDate}
+        <if test=" role != 'admin' ">
+            and a.company_id = #{companyId}
+        </if>
+        and f.material_id = #{signature}
         order by stat_datetime desc
         order by stat_datetime desc
     </select>
     </select>
 
 
@@ -578,10 +595,11 @@
                     a.stat_datetime as statDatetime,
                     a.stat_datetime as statDatetime,
                     a.cost as cost,  -- 消耗
                     a.cost as cost,  -- 消耗
                     a.signature as signature,
                     a.signature as signature,
-                    e.url as url,
-                    case when e.material_name is null
+                    (select info.url from ctop_material_info info where info.code = a.signature limit 1) as url,
+                    <!--  case when e.material_name is null
                     then '-'
                     then '-'
-                    else e.material_name end as materialName,
+                    else e.material_name end as materialName, -->
+                    '-' as materialDesc,
                     1 as appType,
                     1 as appType,
                     a.click as clickMaterial,   -- 点击数
                     a.click as clickMaterial,   -- 点击数
                     a.play25_feed_break_rate as play25FeedBreakRate,  -- 25%进度播放率
                     a.play25_feed_break_rate as play25FeedBreakRate,  -- 25%进度播放率
@@ -593,26 +611,26 @@
                     a.install_finish as installFinish, -- 应用下载-安卓安装完成
                     a.install_finish as installFinish, -- 应用下载-安卓安装完成
                     a.register as register, -- 应用下载-注册
                     a.register as register, -- 应用下载-注册
                     a.pay_count as payCount, -- 应用下载-付费数
                     a.pay_count as payCount, -- 应用下载-付费数
-                    a.in_app_uv as inAppUv, -- 应用下载-到达uv
-                    a.in_app_detail_uv as inAppDetailUv, -- 应用下载-详情页到站uv
-                    a.in_app_cart as inAppCart, -- 应用下载-加入购物车
-                    a.in_app_order as inAppOrder, -- 应用下载-提交订单
-                    a.in_app_pay as inAppPay, -- 应用下载-付费
-                    a.phone as phone, -- 落地页-电话拨打数
+                    -- a.in_app_uv as inAppUv, -- 应用下载-到达uv
+                    -- a.in_app_detail_uv as inAppDetailUv, -- 应用下载-详情页到站uv
+                    -- a.in_app_cart as inAppCart, -- 应用下载-加入购物车
+                    -- a.in_app_order as inAppOrder, -- 应用下载-提交订单
+                    -- a.in_app_pay as inAppPay, -- 应用下载-付费
+                    -- a.phone as phone, -- 落地页-电话拨打数
                     a.form as form, --  表单提交数
                     a.form as form, --  表单提交数
-                    a.map_search as mapSearch, -- 落地页-地图搜索
-                    a.button as button, -- 落地页-按钮button
-                    a.view_material as viewMaterial, -- 落地页-关键页面浏览
-                    a.qq as qq, -- 落地页-QQ咨询数
-                    a.lottery as lottery, -- 落地页-抽奖数
-                    a.vote as vote, -- 落地页-投票
-                    a.redirect as redirect, -- 落地页-页面跳转
-                    a.shopping as shopping, -- 落地页-商品购买
-                    a.consult as consult, -- 落地页-在线咨询
-                    a.wechat as wechat, -- 落地页-微信
-                    a.phone_confirm as phoneConfirm, -- 落地页-智能电话确认拨打
-                    a.phone_connect as phoneConnect, -- 落地页-智能电话确认接通
-                    a.consult_effective as consultEffective, -- 落地页-智能电话有效咨询
+                    -- a.map_search as mapSearch, -- 落地页-地图搜索
+                    -- a.button as button, -- 落地页-按钮button
+                    -- a.view_material as viewMaterial, -- 落地页-关键页面浏览
+                    -- a.qq as qq, -- 落地页-QQ咨询数
+                    -- a.lottery as lottery, -- 落地页-抽奖数
+                    -- a.vote as vote, -- 落地页-投票
+                    -- a.redirect as redirect, -- 落地页-页面跳转
+                    -- a.shopping as shopping, -- 落地页-商品购买
+                    -- a.consult as consult, -- 落地页-在线咨询
+                    -- a.wechat as wechat, -- 落地页-微信
+                    -- a.phone_confirm as phoneConfirm, -- 落地页-智能电话确认拨打
+                    -- a.phone_connect as phoneConnect, -- 落地页-智能电话确认接通
+                    -- a.consult_effective as consultEffective, -- 落地页-智能电话有效咨询
                     a.total_play as totalPlay, -- 视频-总播放
                     a.total_play as totalPlay, -- 视频-总播放
                     a.valid_play as validPlay, -- 视频-有效播放
                     a.valid_play as validPlay, -- 视频-有效播放
                     a.wifi_play as wifiPlay, -- 视频-wifi播放
                     a.wifi_play as wifiPlay, -- 视频-wifi播放
@@ -620,26 +638,26 @@
                     a.play50_feed_break as play50FeedBreak, -- 视频-播放50%进度总数
                     a.play50_feed_break as play50FeedBreak, -- 视频-播放50%进度总数
                     a.play75_feed_break as play75FeedBreak, -- 视频-播放75%进度总数
                     a.play75_feed_break as play75FeedBreak, -- 视频-播放75%进度总数
                     a.play100_feed_break as play100FeedBreak, -- 视频-播放100%进度总数
                     a.play100_feed_break as play100FeedBreak, -- 视频-播放100%进度总数
-                    a.advanced_creative_phone_click as advancedCreativePhoneClick, -- 附加创意-电话按钮
-                    a.advanced_creative_counsel_click as advancedCreativeCounselClick, -- 附加创意-在线咨询
-                    a.advanced_creative_form_click as advancedCreativeFormClick, -- 附加创意-表单提交
+                    -- a.advanced_creative_phone_click as advancedCreativePhoneClick, -- 附加创意-电话按钮
+                    -- a.advanced_creative_counsel_click as advancedCreativeCounselClick, -- 附加创意-在线咨询
+                    -- a.advanced_creative_form_click as advancedCreativeFormClick, -- 附加创意-表单提交
                     a.share_material as shareMaterial, -- 互动数据-分享数
                     a.share_material as shareMaterial, -- 互动数据-分享数
-                    a.comment_material as commentMaterial, -- 互动数据-评论数
+                    -- a.comment_material as commentMaterial, -- 互动数据-评论数
                     a.follow as follow, -- 互动数据-新增关注数
                     a.follow as follow, -- 互动数据-新增关注数
-                    a.home_visited as homeVisited, -- 互动数据-主页访问量
-                    a.ies_challenge_click as iesChallengeClick, -- 互动数据-挑战赛查看数
-                    a.ies_music_click as iesMusicClick, -- 互动数据-音乐查看数
+                    -- a.home_visited as homeVisited, -- 互动数据-主页访问量
+                    -- a.ies_challenge_click as iesChallengeClick, -- 互动数据-挑战赛查看数
+                    -- a.ies_music_click as iesMusicClick, -- 互动数据-音乐查看数
                     a.next_day_open as nextDayOpen, -- 次留数
                     a.next_day_open as nextDayOpen, -- 次留数
                     a.next_day_open_rate as nextDayOpenRate, -- 次留率 = 次留数/激活数
                     a.next_day_open_rate as nextDayOpenRate, -- 次留率 = 次留数/激活数
                     a.next_day_open_cost as nextDayOpenCost, -- 次留成本 = 消耗/次留数
                     a.next_day_open_cost as nextDayOpenCost, -- 次留成本 = 消耗/次留数
                     a.active_pay_amount as activePayAmount, -- 应用下载广告数据-付费次数
                     a.active_pay_amount as activePayAmount, -- 应用下载广告数据-付费次数
                     a.valid_play_cost as  validPlayCost, -- 视频数据-有效播放成本  计算公式:总花费/有效播放数,当天数据可能会有波动,次日早8点后稳定。
                     a.valid_play_cost as  validPlayCost, -- 视频数据-有效播放成本  计算公式:总花费/有效播放数,当天数据可能会有波动,次日早8点后稳定。
-                    a.advanced_creative_coupon_addition as advancedCreativeCouponAddition, -- 附加创意-附加创意卡券领取
+                    -- a.advanced_creative_coupon_addition as advancedCreativeCouponAddition, -- 附加创意-附加创意卡券领取
                     a.convert_material as convertMaterial, -- 转化数据-转化数
                     a.convert_material as convertMaterial, -- 转化数据-转化数
                     a.active_pay_cost as activePayCost, -- 应用下载广告数据-付费成本 = 消耗/付费次数
                     a.active_pay_cost as activePayCost, -- 应用下载广告数据-付费成本 = 消耗/付费次数
-                    a.download as download, -- 落地页转化数据-下载开始
+                    -- a.download as download, -- 落地页转化数据-下载开始
                     a.cpc as cpc, -- 平均点击单价
                     a.cpc as cpc, -- 平均点击单价
-                    a.location_click as locationClick, -- 互动数据-POI点击数
+                    -- a.location_click as locationClick, -- 互动数据-POI点击数
                     a.play_over_rate as playOverRate, -- 视频数据-播完率
                     a.play_over_rate as playOverRate, -- 视频数据-播完率
                     a.ctr as ctr, -- 展现数据-点击率   广告被点击的次数占展示次数的百分比。计算方法:点击数/展示数*100%
                     a.ctr as ctr, -- 展现数据-点击率   广告被点击的次数占展示次数的百分比。计算方法:点击数/展示数*100%
                     a.cpm as  cpm, -- 平均千次展现费用  广告平均每一千次展现所付出的费用,计算公式是:总花费/展示数*1000。
                     a.cpm as  cpm, -- 平均千次展现费用  广告平均每一千次展现所付出的费用,计算公式是:总花费/展示数*1000。
@@ -656,11 +674,11 @@
                     a.show_material as showMaterial, -- 展现数据-展示数
                     a.show_material as showMaterial, -- 展现数据-展示数
                     a.download_finish_rate as downloadFinishRate, -- 应用下载广告数据-安卓下载完成率  计算方式:安卓下载完成数/安卓下载开始数
                     a.download_finish_rate as downloadFinishRate, -- 应用下载广告数据-安卓下载完成率  计算方式:安卓下载完成数/安卓下载开始数
                     a.install_finish_rate as installFinishRate, -- 应用下载广告数据-安卓安装完成率  计算方式:安卓安装完成数/安卓下载完成数
                     a.install_finish_rate as installFinishRate, -- 应用下载广告数据-安卓安装完成率  计算方式:安卓安装完成数/安卓下载完成数
-                    a.coupon as coupon, -- 落地页转化数据-建站卡券领取
-                    a.coupon_single_page as couponSinglePage, -- 落地页转化数据-卡券页领取
+                    -- a.coupon as coupon, -- 落地页转化数据-建站卡券领取
+                    -- a.coupon_single_page as couponSinglePage, -- 落地页转化数据-卡券页领取
                     a.play_over as playOver, -- 完播数
                     a.play_over as playOver, -- 完播数
                     a.download_start_cost as downloadStartCost, -- 应用下载广告数据-安卓下载开始成本  计算方法:总花费/安卓下载开始数。
                     a.download_start_cost as downloadStartCost, -- 应用下载广告数据-安卓下载开始成本  计算方法:总花费/安卓下载开始数。
-                    a.message as message, -- 落地页转化数据-短信咨询  用户点击短信咨询的次数
+                    -- a.message as message, -- 落地页转化数据-短信咨询  用户点击短信咨询的次数
                     a.valid_play_rate as validPlayRate, -- 视频数据-有效播放率  有效播放数/展示数
                     a.valid_play_rate as validPlayRate, -- 视频数据-有效播放率  有效播放数/展示数
                     a.average_play_time_per_play as averagePlayTimePerPlay, -- 视频数据-平均单次播放时长
                     a.average_play_time_per_play as averagePlayTimePerPlay, -- 视频数据-平均单次播放时长
                     a.convert_cost as convertCost, --  转化数据-转化成本=总花费/转化数
                     a.convert_cost as convertCost, --  转化数据-转化成本=总花费/转化数
@@ -668,10 +686,12 @@
                     a.download_start_rate as downloadStartRate --  应用下载广告数据-安卓下载开始率  计算方法:安卓下载开始数/点击数
                     a.download_start_rate as downloadStartRate --  应用下载广告数据-安卓下载开始率  计算方法:安卓下载开始数/点击数
         from ctop_bytedance_video_report_daily a
         from ctop_bytedance_video_report_daily a
         left join (select id,code,url,material_name from ctop_material_info group by code) e on a.signature = e.code
         left join (select id,code,url,material_name from ctop_material_info group by code) e on a.signature = e.code
-        left join ctop_material_ascription f on e.id = f.material_id
-        where a.company_id = #{companyId}
-        and date_format(stat_datetime,'%Y-%m-%d') &gt;= #{startDate}
-        and date_format(stat_datetime,'%Y-%m-%d') &lt;= #{endDate}
+        left join (select material_id,clip_id,shot_id,plan_id,plane_id from ctop_material_ascription group by material_id) f on e.id = f.material_id
+        where stat_datetime &gt;= #{startDate}
+        and stat_datetime &lt;= #{endDate}
+        <if test=" role != 'admin' ">
+            and a.company_id = #{companyId}
+        </if>
         and e.code is not null
         and e.code is not null
         <!--<if test="role == 'plan'">
         <!--<if test="role == 'plan'">
             and f.plan = #{userId}
             and f.plan = #{userId}
@@ -711,7 +731,7 @@
         </choose>
         </choose>
 
 
         <if test="signature != null and signature != '' ">
         <if test="signature != null and signature != '' ">
-            and e.code = #{signature}
+            and a.signature = #{signature}
         </if>
         </if>
         <if test="cost != null">
         <if test="cost != null">
             and cost &gt;= #{cost}
             and cost &gt;= #{cost}

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

@@ -34,6 +34,7 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
         videoInfoListByCompanyId(startDate, endDate, "d57fecdcf7a94d009736d9c850731582");
         videoInfoListByCompanyId(startDate, endDate, "d57fecdcf7a94d009736d9c850731582");
         //华东
         //华东
         videoInfoListByCompanyId(startDate, endDate, "4b10089775c040119e139087517aed88");
         videoInfoListByCompanyId(startDate, endDate, "4b10089775c040119e139087517aed88");
+        System.out.println(endDate + "结束");
     }
     }
 
 
     private void videoInfoListByCompanyId(String startDate, String endDate, String companyId){
     private void videoInfoListByCompanyId(String startDate, String endDate, String companyId){
@@ -44,15 +45,15 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
         byteDanceVideoReportDailyMapper.delete(wrapper);
         byteDanceVideoReportDailyMapper.delete(wrapper);
 
 
         List<ByteDanceVideoReportDaily> mList = byteDanceVideoReportDailyMapper.videoInfoList(startDate, endDate, companyId);
         List<ByteDanceVideoReportDaily> mList = byteDanceVideoReportDailyMapper.videoInfoList(startDate, endDate, companyId);
-        //for (ByteDanceVideoReportDaily m:mList){
-        //    byteDanceVideoReportDailyMapper.insert(m);
-        //}
-        //
+        for (ByteDanceVideoReportDaily m:mList){
+            byteDanceVideoReportDailyMapper.insert(m);
+        }
+
         //QueryWrapper<ByteDanceVideoReportDaily> queryWrapper = new QueryWrapper<>();
         //QueryWrapper<ByteDanceVideoReportDaily> queryWrapper = new QueryWrapper<>();
-        //
-        //List<ByteDanceVideoReportDaily> mList2 = byteDanceVideoReportDailyMapper.selectList(queryWrapper);
 
 
-        for(ByteDanceVideoReportDaily m:mList){
+        List<ByteDanceVideoReportDaily> mList2 = byteDanceVideoReportDailyMapper.selectList(wrapper);
+
+        for(ByteDanceVideoReportDaily m:mList2){
             String statDate  = DateUtils.formatDate(DateUtils.addDay(m.getStatDatetime(),-1));
             String statDate  = DateUtils.formatDate(DateUtils.addDay(m.getStatDatetime(),-1));
             BigDecimal cost = byteDanceVideoReportDailyMapper.getVideoReportDailyByDateAndSignature(statDate,statDate,m.getSignature(),companyId);
             BigDecimal cost = byteDanceVideoReportDailyMapper.getVideoReportDailyByDateAndSignature(statDate,statDate,m.getSignature(),companyId);
 
 
@@ -62,7 +63,7 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
             }
             }
 
 
             m.setHuanbi(huanbi);
             m.setHuanbi(huanbi);
-            byteDanceVideoReportDailyMapper.insert(m);
+            byteDanceVideoReportDailyMapper.updateById(m);
         }
         }
     }
     }
 
 
@@ -158,10 +159,10 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
     public List<ByteDanceVideoReportDaily> videoInfoListDetail(String startDate, String endDate, String signature){
     public List<ByteDanceVideoReportDaily> videoInfoListDetail(String startDate, String endDate, String signature){
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String userId = sysUser.getId();
         String userId = sysUser.getId();
-        //String roleCode = byteDanceVideoReportDailyMapper.getRoleCodeByUserId(userId);
+        String roleCode = byteDanceVideoReportDailyMapper.getRoleCodeByUserId(userId);
         String companyId = byteDanceVideoReportDailyMapper.getCompanyIdByUserId(userId);
         String companyId = byteDanceVideoReportDailyMapper.getCompanyIdByUserId(userId);
 
 
-        return byteDanceVideoReportDailyMapper.videoInfoListDetail(companyId, startDate, endDate, signature);
+        return byteDanceVideoReportDailyMapper.videoInfoListDetail(companyId, startDate, endDate, signature, roleCode);
     }
     }
 
 
     public String getColumnJson(Integer columnType){
     public String getColumnJson(Integer columnType){

+ 1 - 1
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/BytedanceReportServiceImpl.java

@@ -858,7 +858,7 @@ public class BytedanceReportServiceImpl implements IBytedanceReportService {
                         daily.setNextDayOpenCost(metrics.getBigDecimal("next_day_open_cost"));
                         daily.setNextDayOpenCost(metrics.getBigDecimal("next_day_open_cost"));
                         daily.setIesChallengeClick(metrics.getInteger("ies_challenge_click"));
                         daily.setIesChallengeClick(metrics.getInteger("ies_challenge_click"));
                         daily.setTotalPlay(metrics.getInteger("total_play"));
                         daily.setTotalPlay(metrics.getInteger("total_play"));
-                        daily.setActiveRegisterRate(metrics.getBigDecimal("active_register_rate"));
+                        daily.setActiveRegisterRate(metrics.getBigDecimal("active_register_rate"));  //头条返回的是 *100 以后的值。。。。
                         daily.setAverageVideoPlay(metrics.getBigDecimal("average_video_play"));
                         daily.setAverageVideoPlay(metrics.getBigDecimal("average_video_play"));
                         daily.setDownloadFinishCost(metrics.getBigDecimal("download_finish_cost"));
                         daily.setDownloadFinishCost(metrics.getBigDecimal("download_finish_cost"));
                         daily.setPlayDuration_3s(metrics.getInteger("play_duration_3s"));
                         daily.setPlayDuration_3s(metrics.getInteger("play_duration_3s"));