فهرست منبع

Merge remote-tracking branch 'origin/master'

yumeng 4 سال پیش
والد
کامیت
97c72a9322
41فایلهای تغییر یافته به همراه1040 افزوده شده و 87 حذف شده
  1. 18 8
      jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java
  2. 2 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/UserAllocationMapper.java
  3. 3 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/UserAllocationMapper.xml
  4. 51 0
      module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/KuaishouDailyAccountAudienceReportJob.java
  5. 33 11
      module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/KuaishouDailyAudienceReportJob.java
  6. 22 0
      module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/KuaishouEffectVideoJob.java
  7. 2 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaishouStrategyMapper.java
  8. 6 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaishouStrategyMapper.xml
  9. 11 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaishouStrategyService.java
  10. 5 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouStrategyServiceImpl.java
  11. 26 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/entity/KuaishouAudienceReportDailyAccount.java
  12. 1 9
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/entity/KuaishouAudienceReportDailyBussiness.java
  13. 16 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/KuaishouAudienceReportDailyAccountMapper.java
  14. 2 2
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/KuaishouAudienceReportDailyBusinessMapper.java
  15. 17 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouAudienceReportDailyAccountService.java
  16. 17 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouAudienceReportDailyAgeService.java
  17. 14 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouAudienceReportDailyBusinessService.java
  18. 13 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouAudienceReportDailyCityService.java
  19. 17 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouAudienceReportDailyClientService.java
  20. 17 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouAudienceReportDailyGenderService.java
  21. 14 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouAudienceReportDailyProvinceService.java
  22. 21 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouAudienceReportDailyAccountServiceImpl.java
  23. 21 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouAudienceReportDailyAgeServiceImpl.java
  24. 21 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouAudienceReportDailyBusinessServiceImpl.java
  25. 21 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouAudienceReportDailyCityServiceImpl.java
  26. 21 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouAudienceReportDailyClientServiceImpl.java
  27. 21 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouAudienceReportDailyGenderServiceImpl.java
  28. 21 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouAudienceReportDailyProvinceServiceImpl.java
  29. 80 47
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouAudienceReportDailyServiceImpl.java
  30. 6 6
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouReportDailyAgentServiceImpl.java
  31. 1 3
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouVideoEtlInfoServiceImpl.java
  32. 150 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/controller/BytedanceVideoEtlInfoController.java
  33. 74 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/entity/BytedanceVideoEtlInfo.java
  34. 5 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/BytedanceReportMaterialDailyMapper.java
  35. 16 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/BytedanceVideoEtlInfoMapper.java
  36. 34 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/xml/BytedanceReportMaterialDailyMapper.xml
  37. 8 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/xml/BytedanceVideoEtlInfoMapper.xml
  38. 4 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/IBytedanceReportMaterialDailyService.java
  39. 18 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/IBytedanceVideoEtlInfoService.java
  40. 11 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/BytedanceReportMaterialDailyServiceImpl.java
  41. 179 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/BytedanceVideoEtlInfoServiceImpl.java

+ 18 - 8
jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java

@@ -22,10 +22,7 @@ import cn.com.ctop.oa.modules.service.IWechatNoListService;
 import cn.com.ctop.oa.modules.service.IWechatUserListService;
 import cn.com.ctop.toutiao.modules.material.entity.ByteDanceAdvertisePlan;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertiserDataService;
-import cn.com.ctop.toutiao.modules.report.service.IByteDanceVideoReportDailyService;
-import cn.com.ctop.toutiao.modules.report.service.IBytedanceFundDailyService;
-import cn.com.ctop.toutiao.modules.report.service.IBytedanceReportService;
-import cn.com.ctop.toutiao.modules.report.service.IReportService;
+import cn.com.ctop.toutiao.modules.report.service.*;
 import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.util.DateUtils;
@@ -389,14 +386,27 @@ public class SampleTest {
         ruleKuaiShouPlanService.cleanRuleDataTarget(token.getAccountId(), 1);
     }
     @Autowired
-    private IKuaishouVideoEtlInfoService etlInfoService;
+    private IKuaishouVideoEtlInfoService kuaishouVideoEtlInfoService;
     @Test
     public void etlKuaishouData(){
-        String dateString = "2020-05-25";
+        String dateString = "2020-01-01";
         Date startDate = DateUtils.parseDate(dateString,"yyyy-MM-dd");
-        for(int i=0;i<=277;i++){
+        for(int i=0;i<=365;i++){
             Date getDate = DateUtils.addDay(startDate,i);
-            etlInfoService.etlKuaishouVideoInfo(getDate);
+            kuaishouVideoEtlInfoService.etlKuaishouVideoInfo(getDate);
+        }
+    }
+
+    @Autowired
+    private IBytedanceVideoEtlInfoService bytedanceVideoEtlInfoService;
+    @Test
+    public void etlBytedanceData(){
+        String dateString = "2020-01-01";
+        Date startDate = DateUtils.parseDate(dateString,"yyyy-MM-dd");
+        for(int i=0;i<=365;i++){
+            Date getDate = DateUtils.addDay(startDate,i);
+            bytedanceVideoEtlInfoService.etlBytedanceVideoInfo(getDate);
+            kuaishouVideoEtlInfoService.etlKuaishouVideoInfo(getDate);
         }
     }
 

+ 2 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/UserAllocationMapper.java

@@ -33,4 +33,6 @@ public interface UserAllocationMapper extends BaseMapper<UserAllocation> {
     JSONObject getSwitchStatusByAccount(@Param("accountId") Long accountId);
 
     List<Long>  queryAccountsByDeleteComment();
+
+    String getCompanyNameByUserId(@Param("planId") String planId);
 }

+ 3 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/UserAllocationMapper.xml

@@ -95,6 +95,9 @@
           AND account_status = 0
           AND delete_comment = 0
     </select>
+    <select id="getCompanyNameByUserId" resultType="java.lang.String">
+        select company_name from user_company where user_id = #{planId} limit 1
+    </select>
 
 
 </mapper>

+ 51 - 0
module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/KuaishouDailyAccountAudienceReportJob.java

@@ -0,0 +1,51 @@
+package cn.com.ctop.job.kuaishou.handler;
+
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.common.module.service.ICtopOauthTokenService;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouAudienceReportDailyService;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import org.jeecg.common.util.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+/**
+ * 快手广告主分天数据
+ *
+ * @author syh
+ */
+@Component
+public class KuaishouDailyAccountAudienceReportJob {
+    @Autowired
+    private ICtopOauthTokenService tokenService;
+    @Autowired
+    private IKuaishouAudienceReportDailyService kuaishouAudienceReportDailyService;
+
+    static ExecutorService executorService = Executors.newFixedThreadPool(5);
+
+    @XxlJob("kuaishouAccountAudienceReportJob")
+    public void execute() throws Exception {
+        //查询两天前数据  策略
+        String date = DateUtils.getLastDay(DateUtils.date2Str(), 2);
+        List<CtopOauthToken> tokens = tokenService.selectKuaiShouToken();
+        if (null == tokens || tokens.isEmpty()) {
+            XxlJobHelper.log("定时获取人群分析报表数据异常:未获取到可用的token");
+            XxlJobHelper.handleFail();
+            return;
+        }
+        int page = 1;
+        int pageSize = 2000;
+        tokens.forEach(token -> executorService.submit(() -> {
+            kuaishouAudienceReportDailyService.crowdAnalysisReport(token, date, "province", null, null, page, pageSize);
+            kuaishouAudienceReportDailyService.crowdAnalysisReport(token, date, "city", null, null, page, pageSize);
+            kuaishouAudienceReportDailyService.crowdAnalysisReport(token, date, "gender", null, null, page, pageSize);
+            kuaishouAudienceReportDailyService.crowdAnalysisReport(token, date, "ageSegment", null, null, page, pageSize);
+            kuaishouAudienceReportDailyService.crowdAnalysisReport(token, date, "clientId", null, null, page, pageSize);
+            kuaishouAudienceReportDailyService.crowdAnalysisReport(token, date, "businessInterestTags", null, null, page, pageSize);
+        }));
+    }
+}

+ 33 - 11
module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/KuaishouDailyAudienceReportJob.java

@@ -2,9 +2,10 @@ package cn.com.ctop.job.kuaishou.handler;
 
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
+import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouGroup;
-import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouCampaignService;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouGroupService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouStrategyService;
 import cn.com.ctop.kuaishou.modules.report.service.IKuaishouAudienceReportDailyService;
 import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
@@ -12,6 +13,7 @@ import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -29,6 +31,8 @@ public class KuaishouDailyAudienceReportJob {
     private IKuaishouAudienceReportDailyService kuaishouAudienceReportDailyService;
     @Autowired
     private IKuaiShouGroupService kuaiShouGroupService;
+    @Autowired
+    private IKuaishouStrategyService kuaishouStrategyService;
 
     static ExecutorService executorService = Executors.newFixedThreadPool(6);
 
@@ -42,16 +46,34 @@ public class KuaishouDailyAudienceReportJob {
             XxlJobHelper.handleFail();
             return;
         }
-        int page = 1;
-        int pageSize = 2000;
-        tokens.forEach(token -> executorService.submit(() -> {
-            getAudienceReportData(token, date, "province", page, pageSize);
-            getAudienceReportData(token, date, "city", page, pageSize);
-            getAudienceReportData(token, date, "gender", page, pageSize);
-            getAudienceReportData(token, date, "ageSegment", page, pageSize);
-            getAudienceReportData(token, date, "clientId", page, pageSize);
-            getAudienceReportData(token, date, "businessInterestTags", page, pageSize);
-        }));
+        //查询有效策略的账户ID
+        List<Long> accountIds = kuaishouStrategyService.queryActiveAccount();
+        if (Check.isNull(accountIds) || accountIds.size() == 0) {
+            XxlJobHelper.log("定时获取人群分析报表数据异常:为获取到有效策略账户信息");
+            XxlJobHelper.handleFail();
+            return;
+        }
+        //筛选出有效账户,获取该账户的组级人群报表数据
+        List<CtopOauthToken> activeTokens = new ArrayList<>();
+        for (Long accountId : accountIds) {
+            for (CtopOauthToken token : tokens) {
+                if (token.getAccountId() - accountId == 0) {
+                    activeTokens.add(token);
+                }
+            }
+        }
+        if (!Check.isNull(activeTokens) && activeTokens.size() > 0) {
+            int page = 1;
+            int pageSize = 2000;
+            activeTokens.forEach(token -> executorService.submit(() -> {
+                getAudienceReportData(token, date, "province", page, pageSize);
+                getAudienceReportData(token, date, "city", page, pageSize);
+                getAudienceReportData(token, date, "gender", page, pageSize);
+                getAudienceReportData(token, date, "ageSegment", page, pageSize);
+                getAudienceReportData(token, date, "clientId", page, pageSize);
+                getAudienceReportData(token, date, "businessInterestTags", page, pageSize);
+            }));
+        }
     }
 
     private void getAudienceReportData(CtopOauthToken token, String date, String type, Integer page, Integer pageSize) {

+ 22 - 0
module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/KuaishouEffectVideoJob.java

@@ -0,0 +1,22 @@
+package cn.com.ctop.job.kuaishou.handler;
+
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouVideoEtlInfoService;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import org.jeecg.common.util.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.util.Date;
+
+@Component
+public class KuaishouEffectVideoJob {
+    @Autowired
+    private IKuaishouVideoEtlInfoService etlInfoService;
+
+    @XxlJob("kuaishouGroupDailyReportJob")
+    public void execute() throws ParseException {
+        Date getDate = DateUtils.addDay(new Date(),-1);
+        etlInfoService.etlKuaishouVideoInfo(getDate);
+    }
+}

+ 2 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaishouStrategyMapper.java

@@ -16,4 +16,6 @@ import java.util.List;
 public interface KuaishouStrategyMapper extends BaseMapper<KuaishouStrategy> {
 
     List<JSONObject> queryPlanIdsByStrategyId(Long id);
+
+    List<Long> queryActiveAccount();
 }

+ 6 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaishouStrategyMapper.xml

@@ -10,4 +10,10 @@
           from ctop_ai_kuaishou_strategy_map_creative
          where strategy_id = #{id}
     </select>
+
+    <select id="queryActiveAccount" resultType="java.lang.Long">
+        SELECT account_id FROM ctop_kuaishou_strategy
+        WHERE strategy_state = 1
+        GROUP BY account_id
+    </select>
 </mapper>

+ 11 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaishouStrategyService.java

@@ -2,11 +2,11 @@ package cn.com.ctop.kuaishou.modules.batch.service;
 
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaishouStrategy;
-import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.common.api.vo.Result;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -36,4 +36,14 @@ public interface IKuaishouStrategyService extends IService<KuaishouStrategy> {
      * @author ZHAOXA
      */
     Map<String, Object> createPlanLevelStrategy(CtopOauthToken oauthToken, JSONObject data);
+
+    /**
+     * 查询有效策略的账户
+     *
+     * @param
+     * @return java.util.List<java.lang.Long>
+     * @throws
+     * @author ZHAOXA
+     */
+    List<Long> queryActiveAccount();
 }

+ 5 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouStrategyServiceImpl.java

@@ -146,6 +146,11 @@ public class KuaishouStrategyServiceImpl extends ServiceImpl<KuaishouStrategyMap
         return kuaishouInterfaceService.campaignCreate(oauthToken.getAccessToken(), oauthToken.getAccountId(), planJson);
     }
 
+    @Override
+    public List<Long> queryActiveAccount() {
+        return kuaishouStrategyMapper.queryActiveAccount();
+    }
+
     public JSONArray createGroupLevelStrategy(CtopOauthToken oauthToken, JSONObject data) {
         JSONArray resultArr = new JSONArray();
         JSONArray groupInfo = data.getJSONArray("groupInfo");

+ 26 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/entity/KuaishouAudienceReportDailyAccount.java

@@ -0,0 +1,26 @@
+package cn.com.ctop.kuaishou.modules.report.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * 人群分析报表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-12-03
+ */
+@Data
+@TableName("ctop_kuaishou_audience_report_daily_account")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_kuaishou_audience_report_daily_account对象", description = "年龄人群分析报表")
+public class KuaishouAudienceReportDailyAccount extends KuaishouAudienceReportDaily {
+    /**
+     * province: 省级地域分布,city: 地级地域分布,gender: 性别分布,ageSegment: 年龄分布,clientId: 系统分布,businessInterestTags: 商业兴趣分布
+     */
+    private java.lang.String audienceType;
+}

+ 1 - 9
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/entity/KuaishouAudienceReportDailyBussiness.java

@@ -1,18 +1,10 @@
 package cn.com.ctop.kuaishou.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;
 
 /**
  * 商业兴趣人群分析报表
@@ -26,5 +18,5 @@ import java.util.Date;
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
 @ApiModel(value = "ctop_kuaishou_audience_report_daily_business对象", description = "商业兴趣人群分析报表")
-public class KuaishouAudienceReportDailyBussiness extends KuaishouAudienceReportDaily {
+public class KuaishouAudienceReportDailyBusiness extends KuaishouAudienceReportDaily {
 }

+ 16 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/KuaishouAudienceReportDailyAccountMapper.java

@@ -0,0 +1,16 @@
+package cn.com.ctop.kuaishou.modules.report.mapper;
+
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDaily;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyAccount;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 人群分析报表
+ *
+ * @author: jeecg-boot
+ * @date: 2020-12-03
+ * @cersion: V1.0
+ */
+public interface KuaishouAudienceReportDailyAccountMapper extends BaseMapper<KuaishouAudienceReportDailyAccount> {
+
+}

+ 2 - 2
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/KuaishouAudienceReportDailyBusinessMapper.java

@@ -1,7 +1,7 @@
 package cn.com.ctop.kuaishou.modules.report.mapper;
 
 import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDaily;
-import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyBussiness;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyBusiness;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
@@ -14,7 +14,7 @@ import java.util.List;
  * @date: 2020-12-03
  * @cersion: V1.0
  */
-public interface KuaishouAudienceReportDailyBusinessMapper extends BaseMapper<KuaishouAudienceReportDailyBussiness> {
+public interface KuaishouAudienceReportDailyBusinessMapper extends BaseMapper<KuaishouAudienceReportDailyBusiness> {
 
     List<JSONObject> queryPageLists(KuaishouAudienceReportDaily audienceReport);
 

+ 17 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouAudienceReportDailyAccountService.java

@@ -0,0 +1,17 @@
+package cn.com.ctop.kuaishou.modules.report.service;
+
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDaily;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyAccount;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.common.api.vo.Result;
+
+/**
+ * @Description: 人群分析报表
+ * @Author: jeecg-boot
+ * @Date: 2020-12-03
+ * @Version: V1.0
+ */
+public interface IKuaishouAudienceReportDailyAccountService extends IService<KuaishouAudienceReportDailyAccount> {
+
+}

+ 17 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouAudienceReportDailyAgeService.java

@@ -0,0 +1,17 @@
+package cn.com.ctop.kuaishou.modules.report.service;
+
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDaily;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyAge;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.common.api.vo.Result;
+
+/**
+ * @Description: 人群分析报表
+ * @Author: jeecg-boot
+ * @Date: 2020-12-03
+ * @Version: V1.0
+ */
+public interface IKuaishouAudienceReportDailyAgeService extends IService<KuaishouAudienceReportDailyAge> {
+
+}

+ 14 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouAudienceReportDailyBusinessService.java

@@ -0,0 +1,14 @@
+package cn.com.ctop.kuaishou.modules.report.service;
+
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyBusiness;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 人群分析报表
+ * @Author: jeecg-boot
+ * @Date: 2020-12-03
+ * @Version: V1.0
+ */
+public interface IKuaishouAudienceReportDailyBusinessService extends IService<KuaishouAudienceReportDailyBusiness> {
+
+}

+ 13 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouAudienceReportDailyCityService.java

@@ -0,0 +1,13 @@
+package cn.com.ctop.kuaishou.modules.report.service;
+
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyCity;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 人群分析报表
+ * @Author: jeecg-boot
+ * @Date: 2020-12-03
+ * @Version: V1.0
+ */
+public interface IKuaishouAudienceReportDailyCityService extends IService<KuaishouAudienceReportDailyCity> {
+}

+ 17 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouAudienceReportDailyClientService.java

@@ -0,0 +1,17 @@
+package cn.com.ctop.kuaishou.modules.report.service;
+
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDaily;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyClient;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.common.api.vo.Result;
+
+/**
+ * @Description: 人群分析报表
+ * @Author: jeecg-boot
+ * @Date: 2020-12-03
+ * @Version: V1.0
+ */
+public interface IKuaishouAudienceReportDailyClientService extends IService<KuaishouAudienceReportDailyClient> {
+
+}

+ 17 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouAudienceReportDailyGenderService.java

@@ -0,0 +1,17 @@
+package cn.com.ctop.kuaishou.modules.report.service;
+
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDaily;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyGender;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.common.api.vo.Result;
+
+/**
+ * @Description: 人群分析报表
+ * @Author: jeecg-boot
+ * @Date: 2020-12-03
+ * @Version: V1.0
+ */
+public interface IKuaishouAudienceReportDailyGenderService extends IService<KuaishouAudienceReportDailyGender> {
+
+}

+ 14 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouAudienceReportDailyProvinceService.java

@@ -0,0 +1,14 @@
+package cn.com.ctop.kuaishou.modules.report.service;
+
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyProvince;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 人群分析报表
+ * @Author: jeecg-boot
+ * @Date: 2020-12-03
+ * @Version: V1.0
+ */
+public interface IKuaishouAudienceReportDailyProvinceService extends IService<KuaishouAudienceReportDailyProvince> {
+
+}

+ 21 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouAudienceReportDailyAccountServiceImpl.java

@@ -0,0 +1,21 @@
+package cn.com.ctop.kuaishou.modules.report.service.impl;
+
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyAccount;
+import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouAudienceReportDailyAccountMapper;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouAudienceReportDailyAccountService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * 人群分析报表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-12-03
+ */
+@Slf4j
+@Service
+public class KuaishouAudienceReportDailyAccountServiceImpl extends ServiceImpl<KuaishouAudienceReportDailyAccountMapper, KuaishouAudienceReportDailyAccount> implements IKuaishouAudienceReportDailyAccountService {
+
+}

+ 21 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouAudienceReportDailyAgeServiceImpl.java

@@ -0,0 +1,21 @@
+package cn.com.ctop.kuaishou.modules.report.service.impl;
+
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyAge;
+import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouAudienceReportDailyAgeMapper;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouAudienceReportDailyAgeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * 人群分析报表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-12-03
+ */
+@Slf4j
+@Service
+public class KuaishouAudienceReportDailyAgeServiceImpl extends ServiceImpl<KuaishouAudienceReportDailyAgeMapper, KuaishouAudienceReportDailyAge> implements IKuaishouAudienceReportDailyAgeService {
+
+}

+ 21 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouAudienceReportDailyBusinessServiceImpl.java

@@ -0,0 +1,21 @@
+package cn.com.ctop.kuaishou.modules.report.service.impl;
+
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyBusiness;
+import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouAudienceReportDailyBusinessMapper;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouAudienceReportDailyBusinessService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * 人群分析报表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-12-03
+ */
+@Slf4j
+@Service
+public class KuaishouAudienceReportDailyBusinessServiceImpl extends ServiceImpl<KuaishouAudienceReportDailyBusinessMapper, KuaishouAudienceReportDailyBusiness> implements IKuaishouAudienceReportDailyBusinessService {
+
+}

+ 21 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouAudienceReportDailyCityServiceImpl.java

@@ -0,0 +1,21 @@
+package cn.com.ctop.kuaishou.modules.report.service.impl;
+
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyCity;
+import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouAudienceReportDailyCityMapper;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouAudienceReportDailyCityService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * 人群分析报表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-12-03
+ */
+@Slf4j
+@Service
+public class KuaishouAudienceReportDailyCityServiceImpl extends ServiceImpl<KuaishouAudienceReportDailyCityMapper, KuaishouAudienceReportDailyCity> implements IKuaishouAudienceReportDailyCityService {
+
+}

+ 21 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouAudienceReportDailyClientServiceImpl.java

@@ -0,0 +1,21 @@
+package cn.com.ctop.kuaishou.modules.report.service.impl;
+
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyClient;
+import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouAudienceReportDailyClientMapper;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouAudienceReportDailyClientService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * 人群分析报表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-12-03
+ */
+@Slf4j
+@Service
+public class KuaishouAudienceReportDailyClientServiceImpl extends ServiceImpl<KuaishouAudienceReportDailyClientMapper, KuaishouAudienceReportDailyClient> implements IKuaishouAudienceReportDailyClientService {
+
+}

+ 21 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouAudienceReportDailyGenderServiceImpl.java

@@ -0,0 +1,21 @@
+package cn.com.ctop.kuaishou.modules.report.service.impl;
+
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyGender;
+import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouAudienceReportDailyGenderMapper;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouAudienceReportDailyGenderService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * 人群分析报表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-12-03
+ */
+@Slf4j
+@Service
+public class KuaishouAudienceReportDailyGenderServiceImpl extends ServiceImpl<KuaishouAudienceReportDailyGenderMapper, KuaishouAudienceReportDailyGender> implements IKuaishouAudienceReportDailyGenderService {
+
+}

+ 21 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouAudienceReportDailyProvinceServiceImpl.java

@@ -0,0 +1,21 @@
+package cn.com.ctop.kuaishou.modules.report.service.impl;
+
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyProvince;
+import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouAudienceReportDailyProvinceMapper;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouAudienceReportDailyProvinceService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * 人群分析报表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-12-03
+ */
+@Slf4j
+@Service
+public class KuaishouAudienceReportDailyProvinceServiceImpl extends ServiceImpl<KuaishouAudienceReportDailyProvinceMapper, KuaishouAudienceReportDailyProvince> implements IKuaishouAudienceReportDailyProvinceService {
+
+}

+ 80 - 47
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouAudienceReportDailyServiceImpl.java

@@ -7,8 +7,9 @@ import cn.com.ctop.common.module.utils.HttpUtils;
 import cn.com.ctop.common.module.utils.KuaishouInterfaceConstant;
 import cn.com.ctop.common.module.utils.PropertiesUtils;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDaily;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyAccount;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyAge;
-import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyBussiness;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyBusiness;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyCity;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyClient;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyGender;
@@ -20,6 +21,13 @@ import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouAudienceReportDailyCli
 import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouAudienceReportDailyGenderMapper;
 import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouAudienceReportDailyMapper;
 import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouAudienceReportDailyProvinceMapper;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouAudienceReportDailyAccountService;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouAudienceReportDailyAgeService;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouAudienceReportDailyBusinessService;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouAudienceReportDailyCityService;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouAudienceReportDailyClientService;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouAudienceReportDailyGenderService;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouAudienceReportDailyProvinceService;
 import cn.com.ctop.kuaishou.modules.report.service.IKuaishouAudienceReportDailyService;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -28,9 +36,11 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -61,6 +71,20 @@ public class KuaishouAudienceReportDailyServiceImpl extends ServiceImpl<Kuaishou
     @Autowired
     private KuaishouAudienceReportDailyGenderMapper genderMapper;
     @Autowired
+    private IKuaishouAudienceReportDailyAccountService dailyAccountService;
+    @Autowired
+    private IKuaishouAudienceReportDailyProvinceService dailyProvinceService;
+    @Autowired
+    private IKuaishouAudienceReportDailyGenderService dailyGenderService;
+    @Autowired
+    private IKuaishouAudienceReportDailyClientService dailyClientService;
+    @Autowired
+    private IKuaishouAudienceReportDailyCityService dailyCityService;
+    @Autowired
+    private IKuaishouAudienceReportDailyBusinessService dailyBusinessService;
+    @Autowired
+    private IKuaishouAudienceReportDailyAgeService dailyAgeService;
+    @Autowired
     private ICtopOauthTokenService tokenService;
     private String urlPath = PropertiesUtils.getConfig("kuaishou_api_url");
 
@@ -183,20 +207,32 @@ public class KuaishouAudienceReportDailyServiceImpl extends ServiceImpl<Kuaishou
                     JSONObject datas = resultJson.getJSONObject("data");
                     JSONArray details = datas.getJSONArray("details");
                     if (!Check.isNull(details)) {
-                        for (int i = 0; i < details.size(); i++) {
-                            JSONObject obj = details.getJSONObject(i);
-                            if ("province".equals(type)) {
-                                KuaishouAudienceReportDailyProvince entity = JSONObject.toJavaObject(obj, KuaishouAudienceReportDailyProvince.class);
+                        //账户级数据
+                        if (Check.isNull(plan) && Check.isNull(unit)) {
+                            List<KuaishouAudienceReportDailyAccount> list = new ArrayList<>();
+                            for (int i = 0; i < details.size(); i++) {
+                                JSONObject obj = details.getJSONObject(i);
+                                KuaishouAudienceReportDailyAccount entity = JSONObject.toJavaObject(obj, KuaishouAudienceReportDailyAccount.class);
                                 entity.setPhotoLike(obj.getLong("like"));
                                 entity.setComments(obj.getLong("comment"));
                                 entity.setPhotoShow(obj.getLong("show"));
                                 entity.setShares(obj.getString("share"));
                                 entity.setAccountId(Long.valueOf(token.getAccountId()));
-                                entity.setPlanId(plan);
-                                entity.setUnitId(unit);
-                                provinceMapper.insert(entity);
-                            } else if ("city".equals(type)) {
-                                KuaishouAudienceReportDailyCity entity = JSONObject.toJavaObject(obj, KuaishouAudienceReportDailyCity.class);
+                                entity.setAudienceType(type);
+                                list.add(entity);
+                            }
+                            dailyAccountService.saveBatch(list);
+                        } else {
+                            List<KuaishouAudienceReportDailyProvince> provinceList = new ArrayList<>();
+                            List<KuaishouAudienceReportDailyCity> cityList = new ArrayList<>();
+                            List<KuaishouAudienceReportDailyGender> genderList = new ArrayList<>();
+                            List<KuaishouAudienceReportDailyAge> ageList = new ArrayList<>();
+                            List<KuaishouAudienceReportDailyClient> clientList = new ArrayList<>();
+                            List<KuaishouAudienceReportDailyBusiness> businessList = new ArrayList<>();
+                            //组级
+                            for (int i = 0; i < details.size(); i++) {
+                                JSONObject obj = details.getJSONObject(i);
+                                KuaishouAudienceReportDaily entity = JSONObject.toJavaObject(obj, KuaishouAudienceReportDaily.class);
                                 entity.setPhotoLike(obj.getLong("like"));
                                 entity.setComments(obj.getLong("comment"));
                                 entity.setPhotoShow(obj.getLong("show"));
@@ -204,47 +240,44 @@ public class KuaishouAudienceReportDailyServiceImpl extends ServiceImpl<Kuaishou
                                 entity.setAccountId(Long.valueOf(token.getAccountId()));
                                 entity.setPlanId(plan);
                                 entity.setUnitId(unit);
-                                cityMapper.insert(entity);
+                                if ("province".equals(type)) {
+                                    KuaishouAudienceReportDailyProvince provinceEntity = new KuaishouAudienceReportDailyProvince();
+                                    BeanUtils.copyProperties(entity, provinceEntity);
+                                    provinceList.add(provinceEntity);
+                                } else if ("city".equals(type)) {
+                                    KuaishouAudienceReportDailyCity cityEntity = new KuaishouAudienceReportDailyCity();
+                                    BeanUtils.copyProperties(entity, cityEntity);
+                                    cityList.add(cityEntity);
+                                } else if ("gender".equals(type)) {
+                                    KuaishouAudienceReportDailyGender genderEntity = new KuaishouAudienceReportDailyGender();
+                                    BeanUtils.copyProperties(entity, genderEntity);
+                                    genderList.add(genderEntity);
+                                } else if ("ageSegment".equals(type)) {
+                                    KuaishouAudienceReportDailyAge ageEntity = new KuaishouAudienceReportDailyAge();
+                                    BeanUtils.copyProperties(entity, ageEntity);
+                                    ageList.add(ageEntity);
+                                } else if ("clientId".equals(type)) {
+                                    KuaishouAudienceReportDailyClient clientEntity = new KuaishouAudienceReportDailyClient();
+                                    BeanUtils.copyProperties(entity, clientEntity);
+                                    clientList.add(clientEntity);
+                                } else if ("businessInterestTags".equals(type)) {
+                                    KuaishouAudienceReportDailyBusiness bussinessEntity = new KuaishouAudienceReportDailyBusiness();
+                                    BeanUtils.copyProperties(entity, bussinessEntity);
+                                    businessList.add(bussinessEntity);
+                                }
+                            }
+                            if ("province".equals(type)) {
+                                dailyProvinceService.saveBatch(provinceList);
+                            } else if ("city".equals(type)) {
+                                dailyCityService.saveBatch(cityList);
                             } else if ("gender".equals(type)) {
-                                KuaishouAudienceReportDailyGender entity = JSONObject.toJavaObject(obj, KuaishouAudienceReportDailyGender.class);
-                                entity.setPhotoLike(obj.getLong("like"));
-                                entity.setComments(obj.getLong("comment"));
-                                entity.setPhotoShow(obj.getLong("show"));
-                                entity.setShares(obj.getString("share"));
-                                entity.setAccountId(Long.valueOf(token.getAccountId()));
-                                entity.setPlanId(plan);
-                                entity.setUnitId(unit);
-                                genderMapper.insert(entity);
+                                dailyGenderService.saveBatch(genderList);
                             } else if ("ageSegment".equals(type)) {
-                                KuaishouAudienceReportDailyAge entity = JSONObject.toJavaObject(obj, KuaishouAudienceReportDailyAge.class);
-                                entity.setPhotoLike(obj.getLong("like"));
-                                entity.setComments(obj.getLong("comment"));
-                                entity.setPhotoShow(obj.getLong("show"));
-                                entity.setShares(obj.getString("share"));
-                                entity.setAccountId(Long.valueOf(token.getAccountId()));
-                                entity.setPlanId(plan);
-                                entity.setUnitId(unit);
-                                ageMapper.insert(entity);
+                                dailyAgeService.saveBatch(ageList);
                             } else if ("clientId".equals(type)) {
-                                KuaishouAudienceReportDailyClient entity = JSONObject.toJavaObject(obj, KuaishouAudienceReportDailyClient.class);
-                                entity.setPhotoLike(obj.getLong("like"));
-                                entity.setComments(obj.getLong("comment"));
-                                entity.setPhotoShow(obj.getLong("show"));
-                                entity.setShares(obj.getString("share"));
-                                entity.setAccountId(Long.valueOf(token.getAccountId()));
-                                entity.setPlanId(plan);
-                                entity.setUnitId(unit);
-                                clientMapper.insert(entity);
+                                dailyClientService.saveBatch(clientList);
                             } else if ("businessInterestTags".equals(type)) {
-                                KuaishouAudienceReportDailyBussiness entity = JSONObject.toJavaObject(obj, KuaishouAudienceReportDailyBussiness.class);
-                                entity.setPhotoLike(obj.getLong("like"));
-                                entity.setComments(obj.getLong("comment"));
-                                entity.setPhotoShow(obj.getLong("show"));
-                                entity.setShares(obj.getString("share"));
-                                entity.setAccountId(Long.valueOf(token.getAccountId()));
-                                entity.setPlanId(plan);
-                                entity.setUnitId(unit);
-                                bussinessMapper.insert(entity);
+                                dailyBusinessService.saveBatch(businessList);
                             }
                         }
                     }

+ 6 - 6
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouReportDailyAgentServiceImpl.java

@@ -88,9 +88,9 @@ public class KuaishouReportDailyAgentServiceImpl extends ServiceImpl<KuaishouRep
         ChromeOptions chromeOptions = new ChromeOptions();
 //        chromeOptions.addArguments("--headless");
 //        chromeOptions.addArguments("--no-sandbox");
-//        chromeOptions.addArguments("--disable-dev-shm-usage");
-//        chromeOptions.addArguments("--incognito");
-//        chromeOptions.addArguments("--disable-gpu");
+        chromeOptions.addArguments("--disable-dev-shm-usage");
+        chromeOptions.addArguments("--incognito");
+        chromeOptions.addArguments("--disable-gpu");
         chromeOptions.addArguments("--window-size=1920,1080");
         chromeOptions.addArguments("--user-agent=" + HttpUtils2.USER_AGENT);
         chromeOptions.setAcceptInsecureCerts(true);
@@ -102,12 +102,12 @@ public class KuaishouReportDailyAgentServiceImpl extends ServiceImpl<KuaishouRep
             //获取登录页面
             webDriver.get(url);
             Thread.sleep(3000L);
-            WebElement accountElement = webDriver.findElement(By.xpath("//div[@class='phone ']/input[@type='text']"));
+            WebElement accountElement = webDriver.findElement(By.xpath("//div[contains(@class,'component-input-container')]/input[@type='text']"));
             accountElement.sendKeys("17718376864");
             Thread.sleep(3000L);
-            WebElement passwordElement = webDriver.findElement(By.xpath("//div[@class='password ']/input[@type='password']"));
+            WebElement passwordElement = webDriver.findElement(By.xpath("//div[contains(@class,'component-input-container')]/input[@type='password']"));
             passwordElement.sendKeys("yehcbost85567");
-            WebElement loginElement = webDriver.findElement(By.xpath("//div[@class='foot']"));
+            WebElement loginElement = webDriver.findElement(By.xpath("//div[@class='btn-container']/button[contains(@class,'submit')]"));
             Thread.sleep(3000L);
             //点击登录
             loginElement.click();

+ 1 - 3
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouVideoEtlInfoServiceImpl.java

@@ -122,7 +122,6 @@ public class KuaishouVideoEtlInfoServiceImpl extends ServiceImpl<KuaishouVideoEt
                             etlInfo.setUpdateTime(new Date());
                             this.save(etlInfo);
                         }else{
-                            BigDecimal totalCost = etlInfo.getTotalCost();
                             //只需要更新汇总数据
                             etlInfo.setTotalCost(nowData.getCharge());
                             etlInfo.setAclick(nowData.getAclick());
@@ -130,6 +129,7 @@ public class KuaishouVideoEtlInfoServiceImpl extends ServiceImpl<KuaishouVideoEt
                             etlInfo.setPhotoClick(nowData.getPhotoClick());
                             etlInfo.setPhotoShow(nowData.getPhotoShow());
                             etlInfo.setUpdateTime(new Date());
+                            BigDecimal totalCost = etlInfo.getTotalCost();
                             //计算投放总天数
                             if(days == 7){
                                 etlInfo.setSingleWeekCost(nowData.getCharge());
@@ -175,8 +175,6 @@ public class KuaishouVideoEtlInfoServiceImpl extends ServiceImpl<KuaishouVideoEt
 
     @Autowired
     private IMaterialAscriptionService materialAscriptionService;
-    @Autowired
-    private IMaterialInfoService materialInfoService;
     @Override
     public KuaishouVideoEtlInfo getBySignature(String signature) {
         QueryWrapper<KuaishouVideoEtlInfo> queryWrapper = new QueryWrapper<>();

+ 150 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/controller/BytedanceVideoEtlInfoController.java

@@ -0,0 +1,150 @@
+package cn.com.ctop.toutiao.modules.report.controller;
+
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceVideoEtlInfo;
+import cn.com.ctop.toutiao.modules.report.service.IBytedanceVideoEtlInfoService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Arrays;
+
+ /**
+ * 头条视频数据清洗信息
+ * @author jeecg-boot
+ * @date   2020-12-21
+ * @version V1.0
+ */
+@Slf4j
+@Api(tags="头条视频数据清洗信息")
+@RestController
+@RequestMapping("/ctop/bytedanceVideoEtlInfo")
+public class BytedanceVideoEtlInfoController {
+	@Autowired
+	private IBytedanceVideoEtlInfoService bytedanceVideoEtlInfoService;
+
+	/**
+	  * 分页列表查询
+	 * @param bytedanceVideoEtlInfo
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	@ApiOperation(value="头条视频数据清洗信息-分页列表查询", notes="头条视频数据清洗信息-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<BytedanceVideoEtlInfo>> queryPageList(BytedanceVideoEtlInfo bytedanceVideoEtlInfo,
+															  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+															  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+															  HttpServletRequest req) {
+		Result<IPage<BytedanceVideoEtlInfo>> result = new Result<>();
+		QueryWrapper<BytedanceVideoEtlInfo> queryWrapper = QueryGenerator.initQueryWrapper(bytedanceVideoEtlInfo, req.getParameterMap());
+		Page<BytedanceVideoEtlInfo> page = new Page<BytedanceVideoEtlInfo>(pageNo, pageSize);
+		IPage<BytedanceVideoEtlInfo> pageList = bytedanceVideoEtlInfoService.page(page, queryWrapper);
+		result.setSuccess(true);
+		result.setResult(pageList);
+		return result;
+	}
+
+	/**
+	  *   添加
+	 * @param bytedanceVideoEtlInfo
+	 * @return
+	 */
+	@ApiOperation(value="头条视频数据清洗信息-添加", notes="头条视频数据清洗信息-添加")
+	@PostMapping(value = "/add")
+	public Result<BytedanceVideoEtlInfo> add(@RequestBody BytedanceVideoEtlInfo bytedanceVideoEtlInfo) {
+		Result<BytedanceVideoEtlInfo> result = new Result<>();
+		try {
+			bytedanceVideoEtlInfoService.save(bytedanceVideoEtlInfo);
+			result.success("添加成功!");
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+			result.error500("操作失败");
+		}
+		return result;
+	}
+
+	/**
+	  *  编辑
+	 * @param bytedanceVideoEtlInfo
+	 * @return
+	 */
+	@ApiOperation(value="头条视频数据清洗信息-编辑", notes="头条视频数据清洗信息-编辑")
+	@PutMapping(value = "/edit")
+	public Result<BytedanceVideoEtlInfo> edit(@RequestBody BytedanceVideoEtlInfo bytedanceVideoEtlInfo) {
+		Result<BytedanceVideoEtlInfo> result = new Result<BytedanceVideoEtlInfo>();
+		BytedanceVideoEtlInfo bytedanceVideoEtlInfoEntity = bytedanceVideoEtlInfoService.getById(bytedanceVideoEtlInfo.getId());
+		if(bytedanceVideoEtlInfoEntity==null) {
+			result.error500("未找到对应实体");
+		}else {
+			boolean ok = bytedanceVideoEtlInfoService.updateById(bytedanceVideoEtlInfo);
+			if(ok) {
+				result.success("修改成功!");
+			}
+		}
+
+		return result;
+	}
+
+	/**
+	  *   通过id删除
+	 * @param id
+	 * @return
+	 */
+	@ApiOperation(value="头条视频数据清洗信息-通过id删除", notes="头条视频数据清洗信息-通过id删除")
+	@DeleteMapping(value = "/delete")
+	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
+		try {
+			bytedanceVideoEtlInfoService.removeById(id);
+		} catch (Exception e) {
+			log.error("删除失败",e.getMessage());
+			return Result.error("删除失败!");
+		}
+		return Result.ok("删除成功!");
+	}
+
+	/**
+	  *  批量删除
+	 * @param ids
+	 * @return
+	 */
+	@ApiOperation(value="头条视频数据清洗信息-批量删除", notes="头条视频数据清洗信息-批量删除")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<BytedanceVideoEtlInfo> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		Result<BytedanceVideoEtlInfo> result = new Result<>();
+		if(ids==null || "".equals(ids.trim())) {
+			result.error500("参数不识别!");
+		}else {
+			this.bytedanceVideoEtlInfoService.removeByIds(Arrays.asList(ids.split(",")));
+			result.success("删除成功!");
+		}
+		return result;
+	}
+
+	/**
+	  * 通过id查询
+	 * @param id
+	 * @return
+	 */
+	@ApiOperation(value="头条视频数据清洗信息-通过id查询", notes="头条视频数据清洗信息-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<BytedanceVideoEtlInfo> queryById(@RequestParam(name="id",required=true) String id) {
+		Result<BytedanceVideoEtlInfo> result = new Result<>();
+		BytedanceVideoEtlInfo bytedanceVideoEtlInfo = bytedanceVideoEtlInfoService.getById(id);
+		if(bytedanceVideoEtlInfo==null) {
+			result.error500("未找到对应实体");
+		}else {
+			result.setResult(bytedanceVideoEtlInfo);
+			result.setSuccess(true);
+		}
+		return result;
+	}
+}

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

@@ -0,0 +1,74 @@
+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 lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 头条视频数据清洗信息
+ * @author jeecg-boot
+ * @date   2020-12-21
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_bytedance_video_etl_info")
+public class BytedanceVideoEtlInfo {
+
+	/**id*/
+	@TableId(type = IdType.AUTO)
+	private Long id;
+	/**视频唯一标识*/
+	private String videoCode;
+	/**初次产生消耗时间*/
+	private String stateDate;
+	/**url*/
+	private String url;
+	/**coverUrl*/
+	private String coverUrl;
+	/**companyName*/
+	private String companyName;
+	/**planId*/
+	private String planId;
+	/**planName*/
+	private String planName;
+	/**clipId*/
+	private String clipId;
+	/**clipName*/
+	private String clipName;
+	/**shotId*/
+	private String shotId;
+	/**shotName*/
+	private String shotName;
+	/**singleWeekCost*/
+	private BigDecimal singleWeekCost;
+	/**twoWeekCost*/
+	private BigDecimal twoWeekCost;
+	/**fourWeekCost*/
+	private BigDecimal fourWeekCost;
+	/**总消耗*/
+	private BigDecimal totalCost;
+	/**clickNum*/
+	private Long clickNum;
+	/**showNum*/
+	private Long showNum;
+	/**activeNum*/
+	private Long activeNum;
+	/**convertNum*/
+	private Long convertNum;
+	/**createTime*/
+	private Date createTime;
+	/**updateTime*/
+	private Date updateTime;
+	/**effectDate*/
+	private String effectDate;
+	/**faddishDate*/
+	private String faddishDate;
+	/**effectDayNum*/
+	private Integer effectDayNum;
+	/**faddishDayNum*/
+	private Integer faddishDayNum;
+}

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

@@ -6,6 +6,7 @@ import cn.com.ctop.toutiao.modules.material.vo.BytedanceVideoVo;
 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.BytedanceReportVideoMaterialDaily;
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceVideoEtlInfo;
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
@@ -58,4 +59,8 @@ public interface BytedanceReportMaterialDailyMapper extends BaseMapper<Bytedance
                                                               @Param("code")String code,
                                                               @Param("order")String order,
                                                               @Param("target")String target);
+
+    List<BytedanceVideoEtlInfo> getSignatureByDate(@Param(value = "date") String date);
+
+    BytedanceVideoEtlInfo getEtlDataByParams(@Param("signature")String signature, @Param("date")String date);
 }

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

@@ -0,0 +1,16 @@
+package cn.com.ctop.toutiao.modules.report.mapper;
+
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceVideoEtlInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 头条视频数据清洗信息
+ * @author: jeecg-boot
+ * @date:   2020-12-21
+ * @cersion: V1.0
+ */
+public interface BytedanceVideoEtlInfoMapper extends BaseMapper<BytedanceVideoEtlInfo> {
+
+    BytedanceVideoEtlInfo getBySignature(@Param(value = "signature") String signature);
+}

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

@@ -416,6 +416,40 @@ where a.plane_id is not null and a.plane_name is null
         </if>
         group by report.material_id)a order by a.${target} ${order}
     </select>
+    <select id="getSignatureByDate"
+            resultType="cn.com.ctop.toutiao.modules.report.entity.BytedanceVideoEtlInfo">
+        select
+            distinct signature as 'video_code'
+        from
+        ctop_bytedance_report_material_daily report
+        left join ctop_bytedance_video_info video on video.material_id = report.material_id and video.account_id = report.account_id
+        where
+            video.signature is not null
+        and
+            video.signature != ''
+        and
+            report.stat_datetime = #{date}
+    </select>
+    <select id="getEtlDataByParams"
+            resultType="cn.com.ctop.toutiao.modules.report.entity.BytedanceVideoEtlInfo">
+        select
+        video.signature as 'video_code',
+        '' as cover_url,
+        video.video_url as url,
+        min(report.stat_datetime)as 'state_date',
+        sum(report.cost)as 'total_cost',
+        sum(report.click)as 'click_num',
+        sum(report.active)as 'active_num',
+        sum(report.show_material)as 'show_num',
+        sum(report.convert_material)as 'convert_num'
+        from ctop_bytedance_report_material_daily report
+        left join ctop_bytedance_video_info video on report.account_id = video.account_id and video.material_id = report.material_id
+        where
+            video.signature = #{signature}
+        and
+            report.stat_datetime&lt;= #{date}
+        group by video.signature;
+    </select>
 
     <insert id="replaceIntoVideoMaterialBatch">
         REPLACE INTO ctop_bytedance_report_video_material_daily

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

@@ -0,0 +1,8 @@
+<?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.BytedanceVideoEtlInfoMapper">
+
+    <select id="getBySignature" resultType="cn.com.ctop.toutiao.modules.report.entity.BytedanceVideoEtlInfo">
+
+    </select>
+</mapper>

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

@@ -2,6 +2,7 @@ package cn.com.ctop.toutiao.modules.report.service;
 
 import cn.com.ctop.toutiao.modules.material.vo.BytedanceVideoVo;
 import cn.com.ctop.toutiao.modules.report.entity.BytedanceReportMaterialDaily;
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceVideoEtlInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 import java.util.List;
@@ -15,4 +16,7 @@ import java.util.List;
 public interface IBytedanceReportMaterialDailyService extends IService<BytedanceReportMaterialDaily> {
     List<BytedanceReportMaterialDaily> getListByParams(String date);
     List<BytedanceVideoVo> getVideoVoByDate(String date);
+    List<BytedanceVideoEtlInfo> getSignatureByDate(String date);
+
+    BytedanceVideoEtlInfo getEtlDataByParams(String signature, String date);
 }

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

@@ -0,0 +1,18 @@
+package cn.com.ctop.toutiao.modules.report.service;
+
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceVideoEtlInfo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Date;
+
+/**
+ * @Description: 头条视频数据清洗信息
+ * @Author: jeecg-boot
+ * @Date:   2020-12-21
+ * @Version: V1.0
+ */
+public interface IBytedanceVideoEtlInfoService extends IService<BytedanceVideoEtlInfo> {
+    void etlBytedanceVideoInfo(Date date);
+
+    BytedanceVideoEtlInfo getBySignature(String signature);
+}

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

@@ -2,6 +2,7 @@ package cn.com.ctop.toutiao.modules.report.service.impl;
 
 import cn.com.ctop.toutiao.modules.material.vo.BytedanceVideoVo;
 import cn.com.ctop.toutiao.modules.report.entity.BytedanceReportMaterialDaily;
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceVideoEtlInfo;
 import cn.com.ctop.toutiao.modules.report.mapper.BytedanceReportMaterialDailyMapper;
 import cn.com.ctop.toutiao.modules.report.service.IBytedanceReportMaterialDailyService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -39,5 +40,15 @@ public class BytedanceReportMaterialDailyServiceImpl extends ServiceImpl<Bytedan
         return bytedanceReportMaterialDailyMapper.getVideoVoByDate(date);
     }
 
+    @Override
+    public List<BytedanceVideoEtlInfo> getSignatureByDate(String date) {
+        return bytedanceReportMaterialDailyMapper.getSignatureByDate(date);
+    }
+
+    @Override
+    public BytedanceVideoEtlInfo getEtlDataByParams(String signature, String date) {
+        return bytedanceReportMaterialDailyMapper.getEtlDataByParams(signature,date);
+    }
+
 
 }

+ 179 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/BytedanceVideoEtlInfoServiceImpl.java

@@ -0,0 +1,179 @@
+package cn.com.ctop.toutiao.modules.report.service.impl;
+
+import cn.com.ctop.common.module.mapper.UserAllocationMapper;
+import cn.com.ctop.common.module.service.IMaterialAscriptionService;
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceReportMaterialDaily;
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceVideoEtlInfo;
+import cn.com.ctop.toutiao.modules.report.mapper.BytedanceVideoEtlInfoMapper;
+import cn.com.ctop.toutiao.modules.report.service.IBytedanceReportMaterialDailyService;
+import cn.com.ctop.toutiao.modules.report.service.IBytedanceVideoEtlInfoService;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+/**
+ * 头条视频数据清洗信息
+ * @author jeecg-boot
+ * @date   2020-12-21
+ * @version V1.0
+ */
+@Slf4j
+@Service
+public class BytedanceVideoEtlInfoServiceImpl extends ServiceImpl<BytedanceVideoEtlInfoMapper, BytedanceVideoEtlInfo> implements IBytedanceVideoEtlInfoService {
+    @Autowired
+    private IBytedanceReportMaterialDailyService materialDailyService;
+    @Autowired
+    private UserAllocationMapper userAllocationMapper;
+    static ExecutorService executorService = Executors.newFixedThreadPool(50);
+    @Autowired
+    private IMaterialAscriptionService materialAscriptionService;
+    @Override
+    public void etlBytedanceVideoInfo(Date getDate) {
+        String date = DateUtils.formatDate(getDate);
+        //1:查询单当日视频信息
+        List<BytedanceVideoEtlInfo> materials = materialDailyService.getSignatureByDate(date);
+        if(null!=materials&&!materials.isEmpty()){
+            CountDownLatch countDownLatch= new CountDownLatch(materials.size());
+            materials.forEach(material->{
+                executorService.submit(()->{
+                    try {
+                        if(null == material.getVideoCode()||material.getVideoCode().trim().equals("")){
+                            return;
+                        }
+                        String signature = material.getVideoCode();
+                        BytedanceVideoEtlInfo etlInfo = this.getBySignature(signature);
+                        BytedanceVideoEtlInfo nowData = materialDailyService.getEtlDataByParams(signature,date);
+                        String minDate = nowData.getStateDate();
+                        Integer days = DateUtils.getdaysOfTwoDate(minDate,date);
+                        if(null == etlInfo){
+                            //第一次查询的数据
+                            etlInfo = nowData;
+                            BigDecimal totalCost = etlInfo.getTotalCost();
+                            JSONObject ascription =  materialAscriptionService.getDetailByCode(signature);
+                            String planId = null;
+                            if(null!=ascription){
+                                planId = ascription.getString("planId");
+                                if(null!=planId&&!planId.trim().equals("")){
+                                    etlInfo.setPlanId(planId);
+                                }
+                                String planName =  ascription.getString("planName");
+                                if(null!=planName&&!planName.trim().equals("")){
+                                    etlInfo.setPlanName(planName);
+                                }
+                                String clipId = ascription.getString("clipId");
+                                if(null!=clipId&&!clipId.trim().equals("")){
+                                    etlInfo.setClipId(clipId);
+                                }
+                                String clipName = ascription.getString("clipName");
+                                if(null!=clipName&&!clipName.trim().equals("")){
+                                    etlInfo.setClipName(clipName);
+                                }
+                                String shotId = ascription.getString("shotId");
+                                if(null!=shotId&&!shotId.trim().equals("")){
+                                    etlInfo.setShotId(shotId);
+                                }
+                                String shotName = ascription.getString("shotName");
+                                if(null!=shotName&&!shotName.trim().equals("")){
+                                    etlInfo.setShotName(shotName);
+                                }
+                            }
+                            if(null!=planId){
+                                String companyName = userAllocationMapper.getCompanyNameByUserId(planId);
+                                if (null!=companyName&&!companyName.trim().equals("")){
+                                    etlInfo.setCompanyName(companyName);
+                                }
+                            }
+                            //计算投放总天数
+                            if(days == 7){
+                                etlInfo.setSingleWeekCost(nowData.getTotalCost());
+                            }
+                            if(days == 14){
+                                etlInfo.setTwoWeekCost(nowData.getTotalCost());
+                            }
+                            if(days == 28){
+                                etlInfo.setFourWeekCost(nowData.getTotalCost());
+                            }
+                            //计算是否有效,爆款
+                            if(totalCost.compareTo(new BigDecimal("5000"))>0){
+                                //此刻成为有效
+                                etlInfo.setEffectDate(date);
+                                etlInfo.setEffectDayNum(days);
+                            }
+                            if(totalCost.compareTo(new BigDecimal("100000"))>0){
+                                //此刻成为爆款
+                                etlInfo.setEffectDate(date);
+                                etlInfo.setEffectDayNum(days);
+                            }
+                            etlInfo.setCreateTime(new Date());
+                            etlInfo.setUpdateTime(new Date());
+                            this.save(etlInfo);
+                        }else{
+                            //只需要更新汇总数据
+                            etlInfo.setTotalCost(nowData.getTotalCost());
+                            BigDecimal totalCost = etlInfo.getTotalCost();
+                            etlInfo.setClickNum(nowData.getClickNum());
+                            etlInfo.setShowNum(nowData.getShowNum());
+                            etlInfo.setActiveNum(nowData.getActiveNum());
+                            etlInfo.setConvertNum(nowData.getConvertNum());
+                            etlInfo.setUpdateTime(new Date());
+                            //计算投放总天数
+                            if(days == 7){
+                                etlInfo.setSingleWeekCost(nowData.getTotalCost());
+                            }
+                            if(days == 14){
+                                etlInfo.setTwoWeekCost(nowData.getTotalCost());
+                            }
+                            if(days == 28){
+                                etlInfo.setFourWeekCost(nowData.getTotalCost());
+                            }
+                            if(null == etlInfo.getEffectDayNum()){
+                                if(totalCost.compareTo(new BigDecimal("5000"))>0){
+                                    //此刻成为有效
+                                    etlInfo.setEffectDate(date);
+                                    etlInfo.setEffectDayNum(days);
+                                }
+                            }
+                            if(null == etlInfo.getFaddishDayNum()){
+                                if(totalCost.compareTo(new BigDecimal("100000"))>0){
+                                    //此刻成为爆款
+                                    etlInfo.setEffectDate(date);
+                                    etlInfo.setEffectDayNum(days);
+                                }
+                            }
+                            this.updateById(etlInfo);
+                        }
+                    }catch (Exception e){
+
+                    }finally {
+                        countDownLatch.countDown();
+                    }
+                });
+            });
+
+            try {
+                countDownLatch.await();
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+            log.info("{}数据获取完成",date);
+        }
+    }
+
+    @Override
+    public BytedanceVideoEtlInfo getBySignature(String signature) {
+        QueryWrapper<BytedanceVideoEtlInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("video_code",signature).last("limit 1");
+        return this.getOne(queryWrapper);
+    }
+}