yumeng 3 лет назад
Родитель
Сommit
a446f71bec
29 измененных файлов с 801 добавлено и 337 удалено
  1. 24 8
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/DateUtils.java
  2. 67 107
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/TestController.java
  3. 4 10
      jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java
  4. 2 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/ProjectMapper.java
  5. 5 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/UserCompanyMapper.java
  6. 17 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/ProjectMapper.xml
  7. 28 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/UserCompanyMapper.xml
  8. 2 0
      module-common/src/main/java/cn/com/ctop/common/module/service/IProjectService.java
  9. 5 0
      module-common/src/main/java/cn/com/ctop/common/module/service/IUserCompanyService.java
  10. 5 0
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/ProjectServiceImpl.java
  11. 10 0
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/UserCompanyServiceImpl.java
  12. 3 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouReportDailyMaterialMapper.java
  13. 5 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouVideoGetMapper.java
  14. 53 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouReportDailyMaterialMapper.xml
  15. 30 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouVideoGetMapper.xml
  16. 3 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaiShouReportDailyMaterialService.java
  17. 5 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaiShouVideoGetService.java
  18. 6 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouReportDailyMaterialServiceImpl.java
  19. 10 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouVideoGetServiceImpl.java
  20. 76 47
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/material/entity/EtlKuaishouVideoInfo.java
  21. 7 2
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/material/mapper/EtlKuaishouVideoInfoMapper.java
  22. 50 7
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/material/mapper/xml/EtlKuaishouVideoInfoMapper.xml
  23. 4 2
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/material/service/IEtlKuaishouVideoInfoService.java
  24. 86 50
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/material/service/impl/EtlKuaishouVideoInfoServiceImpl.java
  25. 141 87
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/entity/EtlKuaishouAccountMaterialReportDaily.java
  26. 14 7
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/EtlKuaishouAccountMaterialReportDailyMapper.java
  27. 80 2
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/EtlKuaishouAccountMaterialReportDailyMapper.xml
  28. 8 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IEtlKuaishouAccountMaterialReportDailyService.java
  29. 51 8
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/EtlKuaishouAccountMaterialReportDailyServiceImpl.java

+ 24 - 8
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/DateUtils.java

@@ -10,14 +10,7 @@ import java.sql.Timestamp;
 import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 
 /**
  * 类描述:时间操作定义类
@@ -93,6 +86,29 @@ public class DateUtils extends PropertyEditorSupport {
     public final static String SECOND_FORMAT = "yyyy-MM-dd HH";
     public final static String GREGORIAN_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
     public final static String NOMS_GREGORIAN_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
+    public static SimpleDateFormat format1 = new SimpleDateFormat(
+            "yyyy-MM-dd HH:mm:ss");
+
+    public static Date getStartDate(String date) {
+        String temp = date + " 00:00:00";
+        try {
+            return format1.parse(temp);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+
+    }
+
+    public static Date getEndDate(String date) {
+        String temp = date + " 23:59:59";
+        try {
+            return format1.parse(temp);
+        } catch (Exception e) {
+            return null;
+        }
+
+    }
 
     public static String getNowHour(Date date) {
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH");

+ 67 - 107
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/TestController.java

@@ -20,7 +20,9 @@ import cn.com.ctop.kuaishou.modules.batch.service.*;
 import cn.com.ctop.kuaishou.modules.graphql.service.IKuaishouWebInterfaceService;
 import cn.com.ctop.kuaishou.modules.material.entity.KuaishouAccessToken;
 import cn.com.ctop.kuaishou.modules.material.entity.KuaishouResultToken;
+import cn.com.ctop.kuaishou.modules.material.service.IEtlKuaishouVideoInfoService;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaiShouProjectData;
+import cn.com.ctop.kuaishou.modules.report.service.IEtlKuaishouAccountMaterialReportDailyService;
 import cn.com.ctop.kuaishou.modules.report.service.IKuaiShouDailyAgentService;
 import cn.com.ctop.kuaishou.modules.report.service.IKuaiShouProjectDataService;
 import cn.com.ctop.kuaishou.modules.report.service.IKuaishouAudienceReportDailyService;
@@ -139,82 +141,47 @@ public class TestController {
     @Autowired
     private IKuaishouProgramCreativeService kuaishouProgramCreativeService;
 
+    @Autowired
+    private IEtlKuaishouVideoInfoService etlKuaishouVideoInfoService;
     @Value("${xxl-job.requestUrl}")
     private String jobUrl;
+    @Autowired
+    private IEtlKuaishouAccountMaterialReportDailyService etlKuaishouAccountMaterialReportDailyService;
+
+
+    @GetMapping(value = "/cleanData")
+    public void cleanData() {
+       /* List<String> dateList = videoGetService.getDateList();
+        for (int i = 0; i < dateList.size(); i++) {
+            String s = dateList.get(i);
+            etlKuaishouVideoInfoService.etlKuaishouVideoInfo(s);
+        }*/
+ /*      List<String> dateList = new ArrayList<>();
+        dateList.add("2021-08-11");
+        dateList.add("2021-08-10");*/
+        List<String> dateList = etlKuaishouAccountMaterialReportDailyService.getDateList();
+        for (int i = 0; i < dateList.size(); i++) {
+            String date = dateList.get(i);
+            List<Long> accountList = etlKuaishouAccountMaterialReportDailyService.getAccountListByDate(date);
+            for (int j = 0; j < accountList.size(); j++) {
+                Long accountId = accountList.get(j);
+                etlKuaishouAccountMaterialReportDailyService.cleanVideoInfo(accountId, date);
+            }
+
+
+        }
+
+
+    }
 
 
     @GetMapping(value = "/getProgramCreative")
     public void getProgramCreative() {
         List<Long> list = new ArrayList();
 
-        list.add(10344460L);
-        list.add(10344415L);
-        list.add(10344390L);
-        list.add(10344030L);
-        list.add(10343624L);
-        list.add(10343590L);
-        list.add(10343529L);
-        list.add(10343451L);
-        list.add(10343394L);
-        list.add(10327332L);
-        list.add(10327322L);
-        list.add(10327303L);
-        list.add(10327276L);
-        list.add(10327257L);
-        list.add(10327214L);
-        list.add(10327078L);
-        list.add(10327042L);
-        list.add(10327022L);
-        list.add(10326908L);
-        list.add(10299258L);
-        list.add(10299241L);
-        list.add(10299221L);
-        list.add(10299210L);
-        list.add(10298910L);
-        list.add(10298871L);
-        list.add(10298859L);
-        list.add(10298840L);
-        list.add(10258924L);
-        list.add(10258921L);
-        list.add(10258286L);
-        list.add(10258278L);
-        list.add(10258257L);
-        list.add(10258249L);
-        list.add(10258216L);
-        list.add(10257909L);
-        list.add(10257825L);
-        list.add(10257792L);
-        list.add(10257253L);
-        list.add(10257209L);
-        list.add(10257193L);
-        list.add(10257189L);
-        list.add(10257172L);
-        list.add(10257141L);
-        list.add(10257048L);
-        list.add(10252339L);
-        list.add(10252321L);
-        list.add(10252233L);
-        list.add(10252231L);
-        list.add(10173389L);
-        list.add(10173385L);
-        list.add(10173375L);
-        list.add(10173366L);
-        list.add(10173200L);
-        list.add(10108671L);
-        list.add(10108435L);
-        list.add(10093939L);
-        list.add(10093926L);
-        list.add(10093914L);
-        list.add(10093909L);
-        list.add(10093479L);
-        list.add(9767717L);
-        list.add(9767697L);
-        list.add(9706671L);
-        list.add(9635821L);
-        list.add(9635234L);
-        list.add(9549313L);
-        list.add(9549277L);
-
+        /*list.add(10026522L);
+        list.add(10026517L);*/
+        list.add(4260639L);
 
         for (int i = 0; i < list.size(); i++) {
             Long accountId = list.get(i);
@@ -236,22 +203,9 @@ public class TestController {
     @GetMapping(value = "/updateProgramCreative")
     public void updateProgramCreative() {
         List<Long> list = new ArrayList();
-        list.add(10173366L);
-        list.add(10173375L);
-        list.add(10298910L);
-        list.add(10299210L);
-        list.add(10299221L);
-        list.add(10299241L);
-
-
-
-
-
-
-
-
-
-
+        list.add(10026522L);
+        list.add(10026517L);
+        list.add(4260639L);
 
         for (int i = 0; i < list.size(); i++) {
             Long accountId = list.get(i);
@@ -280,8 +234,16 @@ public class TestController {
                             param.put("advertiser_id", token.getAccountId());
                             param.put("unit_id", unitId);
 
-                            String replaceUrll = "https://uri6.com/tkio/Yj6773a?imei=__IMEI2__&androidid=__ANDROIDID2__&oaid=__OAID__&mac=__MAC__&ip=__IP__&ry_adcreative_id=__CID__&ry_adplan_id=__DID__&ry_adplan_name=__DNAME__&ry_adgroup_id=__AID__&callback=__CALLBACK__&csite=__CSITE__&accountid=__ACCOUNTID__&ua=__UA__&os=__OS__&noredirect=true";
-                            param.put("click_url", replaceUrll);
+                            String url = "";
+                            if (accountId == 10026522L) {
+                                url = "https://msg.qy.net/evt?p1=2_22_280&pid=15&os=0&ct=ksc&source_id=coin_888&mkey=2058100612425d26d2eb940808db7208&advertiser_id=__ACCOUNTID__&aid=__AID__&cid=__CID__&did=__DID__&oaid=__OAID__&mac=__MAC__&mac2=__MAC2__&mac3=__MAC3__&idfa2=__IDFA2__&idfa3=__IDFA3__&androidid2=__ANDROIDID2__&androidid3=__ANDROIDID3__&imei2=__IMEI2__&imei3=__IMEI3__&ts=__TS__&ip=__IP__&dname=__DNAME__&callback=__CALLBACK__";
+                            } else if (accountId == 10026517L) {
+                                url = "https://msg.qy.net/evt?p1=2_22_280&pid=15&os=0&ct=ksc&source_id=coin_888&mkey=2058100612425d26d2eb940808db7208&advertiser_id=__ACCOUNTID__&aid=__AID__&cid=__CID__&did=__DID__&oaid=__OAID__&mac=__MAC__&mac2=__MAC2__&mac3=__MAC3__&idfa2=__IDFA2__&idfa3=__IDFA3__&androidid2=__ANDROIDID2__&androidid3=__ANDROIDID3__&imei2=__IMEI2__&imei3=__IMEI3__&ts=__TS__&ip=__IP__&dname=__DNAME__&callback=__CALLBACK__";
+                            } else if (accountId == 4260639L) {
+                                url = "https://msg.qy.net/evt?p1=2_22_280&pid=8&os=0&ct=ksc&source_id=10000c&mkey=20581006244fbf243f91633b2eee7cb5&advertiser_id=__ACCOUNTID__&aid=__AID__&cid=__CID__&did=__DID__&oaid=__OAID__&mac=__MAC__&mac2=__MAC2__&mac3=__MAC3__&idfa2=__IDFA2__&idfa3=__IDFA3__&androidid2=__ANDROIDID2__&androidid3=__ANDROIDID3__&imei2=__IMEI2__&imei3=__IMEI3__&ts=__TS__&ip=__IP__&dname=__DNAME__&callback=__CALLBACK__";
+
+                            }
+                            param.put("click_url", url);
                             String result = HttpUtils.httpPostRequest(updateUrl, param, headers);
                             JSONObject resultJson = JSONObject.parseObject(result);
                             Integer code = resultJson.getInteger("code");
@@ -310,11 +272,8 @@ public class TestController {
     @GetMapping(value = "/campaignList")
     public void campaignList() {
         List<Long> list = new ArrayList();
-        list.add(9549277L);
-        list.add(9635234L);
-        list.add(9767697L);
-        list.add(9767717L);
-        list.add(9549313L);
+        list.add(10026522L);
+        list.add(10026517L);
 
 
         for (int i = 0; i < list.size(); i++) {
@@ -343,14 +302,14 @@ public class TestController {
     @GetMapping(value = "/creativeList")
     public void creativeList() {
         List<Long> list = new ArrayList();
-        list.add(10108671L);
+        /*list.add(10026522L);
+        list.add(10026517L);*/
+        list.add(4260639L);
 
 
         for (int i = 0; i < list.size(); i++) {
             Long accountId = list.get(i);
             CtopOauthToken oauthToken = oauthTokenService.getTokenByAccountId(accountId);
-
-
             suzhaoService.submit(new Runnable() {
                 @Override
                 public void run() {
@@ -371,8 +330,8 @@ public class TestController {
     @GetMapping(value = "/updateUnit")
     public void updateUnit() throws Exception {
         List<Long> list = new ArrayList();
-        list.add(9556344L);
-        list.add(9743738L);
+        list.add(10026522L);
+        list.add(10026517L);
 
 
         for (int i = 0; i < list.size(); i++) {
@@ -388,7 +347,6 @@ public class TestController {
                         try {
                             JSONObject json = new JSONObject();
                             json.put("unitId", group.getUnitId());
-                            json.put("cpaBid", 18 * 1000);
                             //     json.put("gender", "2");
                             batchService.updateUnit(json, oauthToken);
                             Thread.sleep(1500);
@@ -413,20 +371,14 @@ public class TestController {
     @GetMapping(value = "/updateCreative")
     public void updateCreative() {
         List<Long> list = new ArrayList();
-        list.add(10173366L);
-        list.add(10173375L);
-        list.add(10298910L);
-        list.add(10299210L);
-        list.add(10299221L);
-        list.add(10299241L);
-
+        list.add(10026522L);
+        list.add(10026517L);
+        list.add(4260639L);
         for (int i = 0; i < list.size(); i++) {
             Long accountId = list.get(i);
             CtopOauthToken oauthToken = oauthTokenService.getTokenByAccountId(accountId);
             QueryWrapper<KuaiShouCreative> creativeQueryWrapper = new QueryWrapper<>();
             creativeQueryWrapper.eq("account_id", accountId);
-            creativeQueryWrapper.eq("status", 52);
-            creativeQueryWrapper.lt("creative_create_time", "2021-07-11 00:00:00");
             List<KuaiShouCreative> creativeList = creativeService.list(creativeQueryWrapper);
             if (Check.isNull(creativeList)) {
                 continue;
@@ -445,7 +397,15 @@ public class TestController {
                         try {
                             JSONObject json = new JSONObject();
                             json.put("creativeId", creative.getCreativeId());
-                            String url = "https://uri6.com/tkio/Yj6773a?imei=__IMEI2__&androidid=__ANDROIDID2__&oaid=__OAID__&mac=__MAC__&ip=__IP__&ry_adcreative_id=__CID__&ry_adplan_id=__DID__&ry_adplan_name=__DNAME__&ry_adgroup_id=__AID__&callback=__CALLBACK__&csite=__CSITE__&accountid=__ACCOUNTID__&ua=__UA__&os=__OS__&noredirect=true";
+                            String url = "";
+                            if (accountId == 10026522L) {
+                                url = "https://msg.qy.net/evt?p1=2_22_280&pid=15&os=0&ct=ksc&source_id=coin_888&mkey=2058100612425d26d2eb940808db7208&advertiser_id=__ACCOUNTID__&aid=__AID__&cid=__CID__&did=__DID__&oaid=__OAID__&mac=__MAC__&mac2=__MAC2__&mac3=__MAC3__&idfa2=__IDFA2__&idfa3=__IDFA3__&androidid2=__ANDROIDID2__&androidid3=__ANDROIDID3__&imei2=__IMEI2__&imei3=__IMEI3__&ts=__TS__&ip=__IP__&dname=__DNAME__&callback=__CALLBACK__";
+                            } else if (accountId == 10026517L) {
+                                url = "https://msg.qy.net/evt?p1=2_22_280&pid=15&os=0&ct=ksc&source_id=coin_888&mkey=2058100612425d26d2eb940808db7208&advertiser_id=__ACCOUNTID__&aid=__AID__&cid=__CID__&did=__DID__&oaid=__OAID__&mac=__MAC__&mac2=__MAC2__&mac3=__MAC3__&idfa2=__IDFA2__&idfa3=__IDFA3__&androidid2=__ANDROIDID2__&androidid3=__ANDROIDID3__&imei2=__IMEI2__&imei3=__IMEI3__&ts=__TS__&ip=__IP__&dname=__DNAME__&callback=__CALLBACK__";
+                            } else if (accountId == 4260639L) {
+                                url = "https://msg.qy.net/evt?p1=2_22_280&pid=8&os=0&ct=ksc&source_id=10000c&mkey=20581006244fbf243f91633b2eee7cb5&advertiser_id=__ACCOUNTID__&aid=__AID__&cid=__CID__&did=__DID__&oaid=__OAID__&mac=__MAC__&mac2=__MAC2__&mac3=__MAC3__&idfa2=__IDFA2__&idfa3=__IDFA3__&androidid2=__ANDROIDID2__&androidid3=__ANDROIDID3__&imei2=__IMEI2__&imei3=__IMEI3__&ts=__TS__&ip=__IP__&dname=__DNAME__&callback=__CALLBACK__";
+
+                            }
 
                             if (creative.getCreativeMaterialType() == 1) {
                                 json.put("clickTrackUrl", url);

+ 4 - 10
jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java

@@ -4,6 +4,7 @@ import cn.com.ctop.common.module.entity.BindAccountLogin;
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.IBindAccountLoginService;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
+import cn.com.ctop.common.module.service.ISendMessageService;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouInterfaceService;
 import cn.com.ctop.kuaishou.modules.dimension.service.IKuaiShouDimensionStrategyService;
@@ -16,7 +17,6 @@ import cn.com.ctop.toutiao.modules.link.service.IETLReportBytedanceVideoService;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertiserDataService;
 import cn.com.ctop.toutiao.modules.report.entity.BytedanceCheckReportTaskInfo;
 import cn.com.ctop.toutiao.modules.report.service.*;
-import com.alibaba.fastjson.JSONArray;
 import com.xxl.job.core.context.XxlJobHelper;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.util.DateUtils;
@@ -87,19 +87,13 @@ public class SampleTest {
     private IKuaiShouDimensionStrategyService dimensionStrategyService;
     @Autowired
     private IKuaiShouDimensionVariableService dimensionVariableService;
+    @Autowired
+    private ISendMessageService sendMessageService;
 
 
     @Test
     public void loadKuaishouCookie() throws ParseException {
-      //  JSONArray dimensionVariableList = kuaiShouDimensionVariableService.getDimensionVariableList(1L);
-        JSONArray array = new JSONArray();
-        array.add(1);
-        array.add(2);
-        array.add(3);
-        // dimensionStrategyService.create(1L, array);
-        JSONArray dimensionVariableList = dimensionVariableService.getDimensionVariableList(8L); // 获取变量排列组合
-
-        System.err.println(dimensionVariableList);
+        sendMessageService.sendMessage("f6a6843879c949618e4a859140c8a127", "测试发送消息");
     }
 
 

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

@@ -31,4 +31,6 @@ public interface ProjectMapper extends BaseMapper<Project> {
     List<Long> getProjectIdsByProductId(@Param("productId") Long productId);
 
     List<Long> getProjectIdsByProductIdAndNotIn(@Param("productId") Long productId, @Param("partakeProjectIds") List<Long> partakeProjectIds);
+
+    JSONObject getProjectByAccountId(@Param("accountId") Long accountId);
 }

+ 5 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/UserCompanyMapper.java

@@ -3,6 +3,7 @@ package cn.com.ctop.common.module.mapper;
 import cn.com.ctop.common.module.entity.UserCompany;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 import org.jeecg.common.api.vo.Result;
 
 import java.util.List;
@@ -17,4 +18,8 @@ import java.util.List;
 public interface UserCompanyMapper extends BaseMapper<UserCompany> {
 
     List<JSONObject> allCompany();
+
+    JSONObject getCompanyInfoByAccountId(@Param("accountId") Long accountId);
+
+    JSONObject getCompanyInfoByUserId(@Param("userId") String userId);
 }

+ 17 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/ProjectMapper.xml

@@ -75,5 +75,22 @@
         </if>
 
     </select>
+    <select id="getProjectByAccountId" resultType="com.alibaba.fastjson.JSONObject">
+    SELECT
+	id AS 'projectId',
+	project_name AS 'projectName'
+    FROM
+	ctop_project
+    WHERE
+	id = (
+		SELECT
+			project_id
+		FROM
+			ctop_user_allocation
+		WHERE
+			account_id = #{accountId}
+		LIMIT 1
+	)
+    </select>
 
 </mapper>

+ 28 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/UserCompanyMapper.xml

@@ -8,5 +8,33 @@
         FROM user_company
         GROUP BY company_id
     </select>
+    <select id="getCompanyInfoByAccountId" resultType="com.alibaba.fastjson.JSONObject">
+    SELECT
+	company_id AS 'companyId',
+	company_name AS 'companyName'
+	FROM
+	user_company
+	WHERE
+	user_id = (
+		SELECT
+			user_id
+		FROM
+			ctop_user_allocation
+		WHERE
+			account_id = #{accountId}
+		LIMIT 1
+	)
+
+    </select>
+    <select id="getCompanyInfoByUserId" resultType="com.alibaba.fastjson.JSONObject">
+	SELECT
+	company_id AS 'companyId',
+	company_name AS 'companyName'
+	FROM
+	user_company
+	WHERE
+	user_id = #{userId}
+	</select>
+
 
 </mapper>

+ 2 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/IProjectService.java

@@ -30,4 +30,6 @@ public interface IProjectService extends IService<Project> {
     List<Long> getProjectIdsByProductId(Long productId);
 
     List<Long> getProjectIdsByProductIdAndNotIn(Long productId, List<Long> partakeProjectIds);
+
+    JSONObject getProjectByAccountId(Long accountId);
 }

+ 5 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/IUserCompanyService.java

@@ -2,6 +2,7 @@ package cn.com.ctop.common.module.service;
 
 import cn.com.ctop.common.module.entity.SysUser;
 import cn.com.ctop.common.module.entity.UserCompany;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.common.api.vo.Result;
 
@@ -21,4 +22,8 @@ public interface IUserCompanyService extends IService<UserCompany> {
     UserCompany getByUserId(String userId);
 
     Result<Object> allCompany();
+
+    JSONObject getCompanyInfoByAccountId(Long accountId);
+
+    JSONObject getCompanyInfoByUserId(String clipId);
 }

+ 5 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/impl/ProjectServiceImpl.java

@@ -75,4 +75,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     public List<Long> getProjectIdsByProductIdAndNotIn(Long productId, List<Long> partakeProjectIds) {
         return projectMapper.getProjectIdsByProductIdAndNotIn(productId, partakeProjectIds);
     }
+
+    @Override
+    public JSONObject getProjectByAccountId(Long accountId) {
+        return projectMapper.getProjectByAccountId(accountId);
+    }
 }

+ 10 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/impl/UserCompanyServiceImpl.java

@@ -110,4 +110,14 @@ public class UserCompanyServiceImpl extends ServiceImpl<UserCompanyMapper, UserC
         List<JSONObject> data = userCompanyMapper.allCompany();
         return Result.ok(data);
     }
+
+    @Override
+    public JSONObject getCompanyInfoByAccountId(Long accountId) {
+        return userCompanyMapper.getCompanyInfoByAccountId(accountId);
+    }
+
+    @Override
+    public JSONObject getCompanyInfoByUserId(String clipId) {
+        return userCompanyMapper.getCompanyInfoByUserId(clipId);
+    }
 }

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

@@ -1,6 +1,7 @@
 package cn.com.ctop.kuaishou.modules.batch.mapper;
 
 import cn.com.ctop.kuaishou.modules.batch.entity.vo.KuaiShouVideoGetVo;
+import cn.com.ctop.kuaishou.modules.report.entity.EtlKuaishouAccountMaterialReportDaily;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaiShouReportDailyMaterial;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaiShouReportDailyMaterialVo;
 import cn.com.ctop.kuaishou.modules.report.entity.VideoGetvo;
@@ -44,4 +45,6 @@ public interface KuaiShouReportDailyMaterialMapper extends BaseMapper<KuaiShouRe
     List<JSONObject> labelMaterialList(@Param("companyId") String companyId, @Param("realname") String realname, @Param("roleCode") String roleCode, @Param("startTime") String startTime, @Param("endTime") String endTime);
 
     JSONObject labelMaterialAll(@Param("companyId") String companyId, @Param("realname") String realname, @Param("roleCode") String roleCode, @Param("startTime") String startTime, @Param("endTime") String endTime);
+
+    List<EtlKuaishouAccountMaterialReportDaily> getReportList(@Param("accountId") Long accountId,@Param("statDate") String statDate,@Param("projectId") Long projectId, @Param("projectName") String projectName);
 }

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

@@ -8,6 +8,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -56,4 +57,8 @@ public interface KuaiShouVideoGetMapper extends BaseMapper<KuaiShouVideoGet> {
     List<String> queryPhotoIdsByProjectAndMd5(@Param("projectId") Long projectId, @Param("signature") String signature, @Param("accountId") JSONArray accountId);
 
     JSONObject getVideoByPhotoIdAndAccountId(@Param("accountId") Long accountId,@Param("photoId") Long photoId);
+
+    List<JSONObject> getVideoListByDate(@Param("startDate") Date startDate,@Param("endDate") Date endDate);
+
+    List<String> getDateList();
 }

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

@@ -873,5 +873,58 @@
         ORDER BY k1.zhenren_charge DESC,k3.zhizuo_charge DESC
         )t
     </select>
+    <select id="getReportList" resultType="cn.com.ctop.kuaishou.modules.report.entity.EtlKuaishouAccountMaterialReportDaily">
+        SELECT
+        #{projectId} as 'projectId',
+        #{projectName} as 'projectName',
+	    t1.account_id AS 'accountId',
+        t1.signature as 'signature',
+	    t1.photo_id AS 'photoId',
+	    sum(t1.charge) AS 'charge',
+	    sum(t1.photo_show) AS 'photoShow',
+	    sum(t1.aclick) AS 'aclick',
+	    sum(t1.bclick) AS 'bclick',
+	    sum(t1.download_started) AS 'downloadStarted',
+	    sum(t1.download_completed) AS 'downloadCompleted',
+	    sum(t1.activation) AS 'activation',
+	    sum(t1.submit) AS 'submit',
+	    t1.stat_date AS 'statDate',
+	    sum(t1.photo_click) AS 'photoClick',
+	    sum(t1.event_pay_first_day) AS 'eventPayFirstDay',
+	    sum(
+		t1.event_pay_purchase_amount_first_day
+	    ) AS 'eventPayPurchaseAmountFirstDay',
+	    sum(t1.event_pay) AS 'eventPay',
+	    sum(
+		t1.event_pay_purchase_amount
+    	) AS 'eventPayPurchaseAmount',
+	    sum(t1.event_register) AS 'eventRegister',
+	    sum(t1.event_jin_jian_app) AS 'eventJinJianApp',
+	    sum(t1.event_credit_grant_app) AS 'eventCreditGrantApp',
+	    sum(t1.event_order_paid) AS 'eventOrderPaid',
+	    sum(
+		t1.event_order_paid_purchase_amount
+	    ) AS 'eventOrderPaidPurchaseAmount',
+	    sum(
+		t1.event_jin_jian_landing_page
+	    ) AS 'eventJinJianLandingPage',
+	    sum(
+		t1.event_credit_grant_landing_page
+	    ) AS 'eventCreditGrantLandingPage',
+	    sum(t1.event_next_day_stay) AS 'eventNextDayStay',
+	    sum(t1.form_count) AS 'formCount',
+	    round(
+		sum(
+			t1.play_3s_ratio * t1.photo_show
+		)
+	    ) AS play3sCount
+        FROM
+	    ctop_kuaishou_report_daily_material t1
+        WHERE
+	    t1.account_id = #{accountId}
+        AND t1.stat_date = #{statDate}
+        GROUP BY
+	    t1.photo_id;
+    </select>
 </mapper>
 

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

@@ -352,6 +352,36 @@
 
     </select>
 
+    <select id="getVideoListByDate" resultType="com.alibaba.fastjson.JSONObject">
+     SELECT
+     account_id as 'accountId',
+     signature as 'signature',
+     photo_name as 'photoName',
+     url as 'url',
+     cover_url as 'coverUrl',
+     channel_type as 'channelType'
+    from ctop_kuaishou_video_get WHERE stat_date BETWEEN #{startDate} AND #{endDate}
+     group by signature
+
+    </select>
+    <select id="getDateList" resultType="java.lang.String">
+       SELECT
+	    *
+        FROM
+	(
+		SELECT DISTINCT
+			(
+				DATE_FORMAT(stat_date, '%Y-%m-%d')
+			) AS 'date'
+		FROM
+			ctop_kuaishou_video_get
+			where stat_date is  not null
+	) t1
+        ORDER BY
+	t1.date asc
+
+    </select>
+
     <update id="updateBatch">
         UPDATE ctop_kuaishou_video_get SET
         material_tag = CASE id

+ 3 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaiShouReportDailyMaterialService.java

@@ -1,6 +1,7 @@
 package cn.com.ctop.kuaishou.modules.batch.service;
 
 import cn.com.ctop.kuaishou.modules.batch.entity.vo.KuaiShouVideoGetVo;
+import cn.com.ctop.kuaishou.modules.report.entity.EtlKuaishouAccountMaterialReportDaily;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaiShouReportDailyMaterial;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.common.api.vo.Result;
@@ -29,4 +30,6 @@ public interface IKuaiShouReportDailyMaterialService extends IService<KuaiShouRe
     List<KuaiShouReportDailyMaterial> getVideoInfoByList(List<KuaiShouReportDailyMaterial> addList, List<Long> photoIdList);
 
     Result<Object> labelMaterialList(String companyId,String realname, String roleCode, String startTime, String endTime, Integer pageNo, Integer pageSize);
+
+    List<EtlKuaishouAccountMaterialReportDaily> getReportList(Long accountId, String statDate, Long projectId, String projectName);
 }

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

@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -61,4 +62,8 @@ public interface IKuaiShouVideoGetService extends IService<KuaiShouVideoGet> {
     List<String> queryPhotoIdsByProjectAndMd5(Long projectId, String signature, JSONArray accountId);
 
     JSONObject getVideoByPhotoIdAndAccountId(Long accountId, Long photoId);
+
+    List<JSONObject> getVideoListByDate(Date startDate, Date endDate);
+
+    List<String> getDateList();
 }

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

@@ -5,6 +5,7 @@ import cn.com.ctop.common.module.utils.HttpUtils;
 import cn.com.ctop.kuaishou.modules.batch.entity.vo.KuaiShouVideoGetVo;
 import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouReportDailyMaterialMapper;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouReportDailyMaterialService;
+import cn.com.ctop.kuaishou.modules.report.entity.EtlKuaishouAccountMaterialReportDaily;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaiShouReportDailyMaterial;
 import cn.com.ctop.kuaishou.modules.report.mapper.KuaiShouReportHourlyMaterialMapper;
 import com.alibaba.fastjson.JSONArray;
@@ -142,6 +143,11 @@ public class KuaiShouReportDailyMaterialServiceImpl extends ServiceImpl<KuaiShou
     }
 
     @Override
+    public List<EtlKuaishouAccountMaterialReportDaily> getReportList(Long accountId, String statDate, Long projectId, String projectName) {
+        return dailyMaterialMapper.getReportList(accountId, statDate, projectId, projectName);
+    }
+
+    @Override
     public List<KuaiShouReportDailyMaterial> getSignatureByDate(String date) {
         return dailyMaterialMapper.getSignatureByDate(date);
     }

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

@@ -351,4 +351,14 @@ public class KuaiShouVideoGetServiceImpl extends ServiceImpl<KuaiShouVideoGetMap
     public JSONObject getVideoByPhotoIdAndAccountId(Long accountId, Long photoId) {
         return videoGetMapper.getVideoByPhotoIdAndAccountId(accountId, photoId);
     }
+
+    @Override
+    public List<JSONObject> getVideoListByDate(Date startDate, Date endDate) {
+        return videoGetMapper.getVideoListByDate(startDate, endDate);
+    }
+
+    @Override
+    public List<String> getDateList() {
+        return videoGetMapper.getDateList();
+    }
 }

+ 76 - 47
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/material/entity/EtlKuaishouVideoInfo.java

@@ -1,64 +1,93 @@
 package cn.com.ctop.kuaishou.modules.material.entity;
 
-import java.io.Serializable;
-import java.util.Date;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.TableField;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import org.springframework.format.annotation.DateTimeFormat;
-import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
 
 /**
  * 快手视频报表信息
+ *
  * @author jeecg-boot
- * @date   2021-02-20
  * @version V1.0
+ * @date 2021-02-20
  */
 @Data
 @TableName("ctop_etl_kuaishou_video_info")
 public class EtlKuaishouVideoInfo {
 
-	/**id*/
-	@TableId(type = IdType.AUTO)
-	private Long id;
-	/**视频唯一标识*/
-	private String videoCode;
-	private String videoName;
-	/**初次产生消耗时间*/
-	private Date stateDate;
-	/**url*/
-	private String url;
-	/**coverUrl*/
-	private String coverUrl;
-	/**渠道类型*/
-	private String channelType;
-	/**渠道名称*/
-	private String channelName;
-	/**planId*/
-	private String planId;
-	/**planName*/
-	private String planName;
-	/**clipId*/
-	private String clipId;
-	/**clipName*/
-	private String clipName;
-	/**shotId*/
-	private String shotId;
-	/**shotName*/
-	private String shotName;
-	/**designTeamLeaderId*/
-	private String designTeamLeaderId;
-	/**designTeamLeaderName*/
-	private String designTeamLeaderName;
-	/**createTime*/
-	private Date createTime;
-	/**updateTime*/
-	private Date updateTime;
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+    /**
+     * 视频唯一标识
+     */
+    private String companyId;
+    private String companyName;
+    private String videoCode;
+    private String videoName;
+    /**
+     * 初次产生消耗时间
+     */
+    private Date stateDate;
+    /**
+     * url
+     */
+    private String url;
+    /**
+     * coverUrl
+     */
+    private String coverUrl;
+    /**
+     * 渠道类型
+     */
+    private String channelType;
+    /**
+     * 渠道名称
+     */
+    private String channelName;
+    /**
+     * planId
+     */
+    private String planId;
+    /**
+     * planName
+     */
+    private String planName;
+    /**
+     * clipId
+     */
+    private String clipId;
+    /**
+     * clipName
+     */
+    private String clipName;
+    /**
+     * shotId
+     */
+    private String shotId;
+    /**
+     * shotName
+     */
+    private String shotName;
+    /**
+     * designTeamLeaderId
+     */
+    private String designTeamLeaderId;
+    /**
+     * designTeamLeaderName
+     */
+    private String designTeamLeaderName;
+    /**
+     * createTime
+     */
+    private Date createTime;
+    /**
+     * updateTime
+     */
+    private Date updateTime;
 }

+ 7 - 2
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/material/mapper/EtlKuaishouVideoInfoMapper.java

@@ -4,15 +4,20 @@ import cn.com.ctop.kuaishou.modules.material.entity.EtlKuaishouVideoInfo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * 快手视频报表信息
+ *
  * @author: jeecg-boot
- * @date:   2021-02-20
+ * @date: 2021-02-20
  * @cersion: V1.0
  */
 public interface EtlKuaishouVideoInfoMapper extends BaseMapper<EtlKuaishouVideoInfo> {
 
     String getVideoMinDate(@Param(value = "signature") String signature);
 
-    void replaceVideoInfo(@Param(value = "etlKuaishouVideoInfo")EtlKuaishouVideoInfo etlKuaishouVideoInfo);
+    void replaceVideoInfo(@Param(value = "etlKuaishouVideoInfo") EtlKuaishouVideoInfo etlKuaishouVideoInfo);
+
+    void addBatch(@Param("addList") List<EtlKuaishouVideoInfo> addList);
 }

+ 50 - 7
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/material/mapper/xml/EtlKuaishouVideoInfoMapper.xml

@@ -4,6 +4,8 @@
     <insert id="replaceVideoInfo" parameterType="cn.com.ctop.kuaishou.modules.material.entity.EtlKuaishouVideoInfo">
         replace into ctop_etl_kuaishou_video_info
             (
+            company_id,
+            company_name,
             video_code,
             video_name,
             state_date,
@@ -21,9 +23,11 @@
             design_team_leader_name)
             values
             (
-           #{etlKuaishouVideoInfo.videoCode},
-           #{etlKuaishouVideoInfo.videoName},
-           #{etlKuaishouVideoInfo.stateDate},
+                #{etlKuaishouVideoInfo.companyId},
+                #{etlKuaishouVideoInfo.companyName},
+                #{etlKuaishouVideoInfo.videoCode},
+                #{etlKuaishouVideoInfo.videoName},
+                #{etlKuaishouVideoInfo.stateDate},
                 #{etlKuaishouVideoInfo.url},
                 #{etlKuaishouVideoInfo.coverUrl},
                 #{etlKuaishouVideoInfo.channelType},
@@ -37,10 +41,49 @@
                 #{etlKuaishouVideoInfo.designTeamLeaderId},
                 #{etlKuaishouVideoInfo.designTeamLeaderName}
         )
-
-
-
-
+    </insert>
+    <insert id="addBatch">
+        replace into ctop_etl_kuaishou_video_info
+        (
+        company_id,
+        company_name,
+        video_code,
+        video_name,
+        state_date,
+        url,
+        cover_url,
+        channel_type,
+        channel_name,
+        plan_id,
+        plan_name,
+        clip_id,
+        clip_name,
+        shot_id,
+        shot_name,
+        design_team_leader_id,
+        design_team_leader_name)
+        values
+        <foreach collection="addList" item="ad" separator=",">
+            (
+            #{ad.companyId},
+            #{ad.companyName},
+            #{ad.videoCode},
+            #{ad.videoName},
+            #{ad.stateDate},
+            #{ad.url},
+            #{ad.coverUrl},
+            #{ad.channelType},
+            #{ad.channelName},
+            #{ad.planId},
+            #{ad.planName},
+            #{ad.clipId},
+            #{ad.clipName},
+            #{ad.shotId},
+            #{ad.shotName},
+            #{ad.designTeamLeaderId},
+            #{ad.designTeamLeaderName}
+            )
+        </foreach>
     </insert>
 
     <select id="getVideoMinDate" resultType="java.lang.String">

+ 4 - 2
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/material/service/IEtlKuaishouVideoInfoService.java

@@ -6,11 +6,13 @@ import com.baomidou.mybatisplus.extension.service.IService;
 /**
  * @Description: 快手视频报表信息
  * @Author: jeecg-boot
- * @Date:   2021-02-20
+ * @Date: 2021-02-20
  * @Version: V1.0
  */
 public interface IEtlKuaishouVideoInfoService extends IService<EtlKuaishouVideoInfo> {
-    void  etlKuaishouVideoInfo(String date);
+    void etlKuaishouVideoInfo(String date);
 
     EtlKuaishouVideoInfo getOneByVideoCode(String signature);
+
+
 }

+ 86 - 50
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/material/service/impl/EtlKuaishouVideoInfoServiceImpl.java

@@ -2,36 +2,37 @@ package cn.com.ctop.kuaishou.modules.material.service.impl;
 
 import cn.com.ctop.common.module.entity.MaterialInfo;
 import cn.com.ctop.common.module.entity.SysUser;
-import cn.com.ctop.common.module.mapper.SysUserMapper;
 import cn.com.ctop.common.module.service.IMaterialAscriptionService;
 import cn.com.ctop.common.module.service.IMaterialInfoService;
 import cn.com.ctop.common.module.service.ISysUserService;
-import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouVideoGet;
+import cn.com.ctop.common.module.service.IUserCompanyService;
+import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouVideoGetService;
 import cn.com.ctop.kuaishou.modules.material.entity.EtlKuaishouVideoInfo;
 import cn.com.ctop.kuaishou.modules.material.mapper.EtlKuaishouVideoInfoMapper;
 import cn.com.ctop.kuaishou.modules.material.service.IEtlKuaishouVideoInfoService;
-import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouReportDailyAccountMapper;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 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   2021-02-20
  * @version V1.0
+ * @date 2021-02-20
  */
 @Service
 @Slf4j
@@ -46,100 +47,135 @@ public class EtlKuaishouVideoInfoServiceImpl extends ServiceImpl<EtlKuaishouVide
     private ISysUserService sysUserService;
     @Autowired
     private IMaterialInfoService materialInfoService;
-    ExecutorService executorService = Executors.newFixedThreadPool(200);
+    @Autowired
+    private IUserCompanyService companyService;
+    ExecutorService executorService = Executors.newFixedThreadPool(5);
+    ExecutorService videoExecutorService = Executors.newFixedThreadPool(10);
+
     @Override
     public void etlKuaishouVideoInfo(String date) {
-        //1:查询当前日期内的所有存在md5码信息的视频数据
-        List<KuaiShouVideoGet> videoGets = videoGetService.getVideoInfoGroupBySignature(date);
-        if(null!=videoGets&&!videoGets.isEmpty()){
-            CountDownLatch countDownLatch = new CountDownLatch(videoGets.size());
-            videoGets.forEach(videoGet -> {
-                executorService.submit(()->{
+        Date startDate = DateUtils.getStartDate(date);
+        Date endDate = DateUtils.getEndDate(date);
+        List<JSONObject> videoList = videoGetService.getVideoListByDate(startDate, endDate);
+        if (Check.isNull(videoList)) {
+            return;
+        }
+        log.info("日期:{},视频数量:{}", date, videoList.size());
+        List<List<JSONObject>> partition = Lists.partition(videoList, 500);
+        for (int i = 0; i < partition.size(); i++) {
+            List<JSONObject> videos = partition.get(i);
+            executorService.submit(() -> {
+                List<EtlKuaishouVideoInfo> addList = new ArrayList<>();
+                for (int j = 0; j < videos.size(); j++) {
+                    JSONObject videoJson = videos.get(j);
+                    if (Check.isNull(videoJson)) {
+                        continue;
+                    }
+                    String signature = videoJson.getString("signature");
+                    if (Check.isNull(signature)) {
+                        continue;
+                    }
                     try {
                         //1:查询素材名称
                         EtlKuaishouVideoInfo etlKuaishouVideoInfo = new EtlKuaishouVideoInfo();
-                        MaterialInfo materialInfo = materialInfoService.getMaterialInfoByCode(videoGet.getSignature());
-                        if(null != materialInfo){
+                        MaterialInfo materialInfo = materialInfoService.getMaterialInfoByCode(signature);
+                        if (null != materialInfo) {
                             etlKuaishouVideoInfo.setVideoName(materialInfo.getMaterialName());
-                        }else{
-                            etlKuaishouVideoInfo.setVideoName(videoGet.getPhotoName());
+                        } else {
+                            etlKuaishouVideoInfo.setVideoName(videoJson.getString("photoName"));
                         }
-                        etlKuaishouVideoInfo.setVideoCode(videoGet.getSignature());
-                        etlKuaishouVideoInfo.setUrl(videoGet.getUrl());
-                        etlKuaishouVideoInfo.setCoverUrl(videoGet.getCoverUrl());
-                        etlKuaishouVideoInfo.setChannelType(videoGet.getChannelType().toString());
-                        if(videoGet.getChannelType() == 0){
+                        etlKuaishouVideoInfo.setVideoCode(signature);
+                        etlKuaishouVideoInfo.setUrl(videoJson.getString("url"));
+                        etlKuaishouVideoInfo.setCoverUrl(videoJson.getString("coverUrl"));
+                        String channelType = videoJson.getString("channelType");
+                        etlKuaishouVideoInfo.setChannelType(channelType);
+                        if (channelType.equals("0")) {
                             etlKuaishouVideoInfo.setChannelName("内部");
-                        }else {
+                        } else {
                             etlKuaishouVideoInfo.setChannelName("素造");
                         }
                         //查询相关设计人员信息
-                        JSONObject ascription = ascriptionService.getDetailByCode(videoGet.getSignature());
-                        if(null!=ascription){
-                            String clipId = ascription.getString("clipId");
-                            if(null!=clipId&&!clipId.trim().equals("")){
+                        String clipId = null;
+                        JSONObject ascription = ascriptionService.getDetailByCode(signature);
+                        if (null != ascription) {
+                            clipId = ascription.getString("clipId");
+                            if (null != clipId && !"".equals(clipId.trim())) {
                                 etlKuaishouVideoInfo.setClipId(clipId);
                                 //根据id查询剪辑所属的设计负责人
                                 SysUser user = sysUserService.getById(clipId);
-                                if(null!=user){
+                                if (null != user) {
                                     String roleCode = sysUserService.getRoleCodeByUserId(user.getId());
-                                    if(null!=roleCode&&roleCode.trim().equals("designTeamLeader")){
+                                    if (null != roleCode && "designTeamLeader".equals(roleCode.trim())) {
                                         etlKuaishouVideoInfo.setDesignTeamLeaderId(user.getId());
                                         etlKuaishouVideoInfo.setDesignTeamLeaderName(user.getRealname());
-                                    }else{
+                                    } else {
                                         etlKuaishouVideoInfo.setDesignTeamLeaderId(user.getLeaderId());
                                         etlKuaishouVideoInfo.setDesignTeamLeaderName(user.getLeaderName());
                                     }
                                 }
                             }
                             String clipName = ascription.getString("clipName");
-                            if(null!=clipName&&!clipName.trim().equals("")){
+                            if (null != clipName && !"".equals(clipName.trim())) {
                                 etlKuaishouVideoInfo.setClipName(clipName);
                             }
                             String planId = ascription.getString("planId");
-                            if(null!=planId&&!planId.trim().equals("")){
+                            if (null != planId && !"".equals(planId.trim())) {
                                 etlKuaishouVideoInfo.setPlanId(planId);
                             }
                             String planName = ascription.getString("planName");
-                            if(null!=planName&&!planName.trim().equals("")){
+                            if (null != planName && !"".equals(planName.trim())) {
                                 etlKuaishouVideoInfo.setPlanName(planName);
                             }
                             String shotId = ascription.getString("shotId");
-                            if(null!=shotId&&!shotId.trim().equals("")){
+                            if (null != shotId && !"".equals(shotId.trim())) {
                                 etlKuaishouVideoInfo.setShotId(shotId);
                             }
                             String shotName = ascription.getString("shotName");
-                            if(null!=shotName&&!shotName.trim().equals("")){
+                            if (null != shotName && !"".equals(shotName.trim())) {
                                 etlKuaishouVideoInfo.setShotName(shotName);
                             }
                         }
+                        if (Check.isNull(clipId)) {
+                            Long accountId = videoJson.getLong("accountId");
+                            if (!Check.isNull(accountId)) {
+                                JSONObject companyJson = companyService.getCompanyInfoByAccountId(accountId);
+                                if (!Check.isNull(companyJson)) {
+                                    etlKuaishouVideoInfo.setCompanyId(companyJson.getString("companyId"));
+                                    etlKuaishouVideoInfo.setCompanyName(companyJson.getString("companyName"));
+                                }
+                            }
+                        } else {
+                            JSONObject companyJson = companyService.getCompanyInfoByUserId(clipId);
+                            etlKuaishouVideoInfo.setCompanyId(companyJson.getString("companyId"));
+                            etlKuaishouVideoInfo.setCompanyName(companyJson.getString("companyName"));
+                        }
                         //查询视频初次消耗时间
-                        String minDate = etlKuaishouVideoInfoMapper.getVideoMinDate(videoGet.getSignature());
-                        if(null!=minDate&&!"".equals(minDate)){
-                            Date getDate = DateUtils.parseDate(minDate,"yyyy-MM-dd");
+                        String minDate = etlKuaishouVideoInfoMapper.getVideoMinDate(signature);
+                        if (null != minDate && !"".equals(minDate)) {
+                            Date getDate = DateUtils.parseDate(minDate, "yyyy-MM-dd");
                             etlKuaishouVideoInfo.setStateDate(getDate);
                         }
-                        etlKuaishouVideoInfoMapper.replaceVideoInfo(etlKuaishouVideoInfo);
-                    }catch (Exception e){
+                        addList.add(etlKuaishouVideoInfo);
+                    } catch (Exception e) {
                         e.printStackTrace();
-                    }finally {
-                        countDownLatch.countDown();
                     }
-                });
+                }
+                if (!Check.isNull(addList)) {
+                    etlKuaishouVideoInfoMapper.addBatch(addList);
+
+                }
             });
-            try {
-                countDownLatch.await();
-            } catch (InterruptedException e) {
-                e.printStackTrace();
-            }
-            log.info("{}数据获取完成",date);
         }
+        log.info("{}数据获取完成", date);
     }
+
+
     @Override
     public EtlKuaishouVideoInfo getOneByVideoCode(String signature) {
-        QueryWrapper<EtlKuaishouVideoInfo>queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("video_code",signature);
+        QueryWrapper<EtlKuaishouVideoInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("video_code", signature);
         queryWrapper.last("limit 1");
         return this.getOne(queryWrapper);
     }
+
 }

+ 141 - 87
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/entity/EtlKuaishouAccountMaterialReportDaily.java

@@ -1,109 +1,163 @@
 package cn.com.ctop.kuaishou.modules.report.entity;
 
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.util.Date;
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import org.springframework.format.annotation.DateTimeFormat;
-import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * 快手账户素材报表清洗表
+ *
  * @author jeecg-boot
- * @date   2021-02-25
  * @version V1.0
+ * @date 2021-02-25
  */
 @Data
 @TableName("ctop_etl_kuaishou_account_material_report_daily")
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-@ApiModel(value="ctop_etl_kuaishou_account_material_report_daily对象", description="快手账户素材报表清洗表")
+@ApiModel(value = "ctop_etl_kuaishou_account_material_report_daily对象", description = "快手账户素材报表清洗表")
 public class EtlKuaishouAccountMaterialReportDaily {
 
-	/**id*/
-	@TableId(type = IdType.AUTO)
-	private Long id;
-	private Long photoId;
-	/**账户ID*/
-	private Long accountId;
-	/**channelType*/
-	private Integer channelType;
-	/**signature*/
-	private String signature;
-	/**companyId*/
-	private String companyId;
-	/**companyName*/
-	private String companyName;
-	/**projectId*/
-	private String projectId;
-	/**projectName*/
-	private String projectName;
-	/**封面url*/
-	private String coverUrl;
-	/**视频url*/
-	private String photoUrl;
-	/**素材类型*/
-	private String materialType;
-	/**花费(元)*/
-	private BigDecimal charge;
-	/**曝光数*/
-	private Long photoShow;
-	/**素材曝光数*/
-	private Long aclick;
-	/**行为数*/
-	private Long bclick;
-	/**应用下载数据-安卓下载开始数*/
-	private Long downloadStarted;
-	/**应用下载数据-安卓下载完成数*/
-	private Long downloadCompleted;
-	/**应用下载数据-激活数*/
-	private Long activation;
-	/**提交按钮点击数*/
-	private Long submit;
-	/**日期*/
-	private Date statDate;
-	/**封面点击数*/
-	private Long photoClick;
-	/**应用下载数据-首日付费次数*/
-	private Long eventPayFirstDay;
-	/**应用下载数据-首日付费金额*/
-	private BigDecimal eventPayPurchaseAmountFirstDay;
-	/**应用下载数据-付费次数*/
-	private Long eventPay;
-	/**应用下载数据-付费金额*/
-	private BigDecimal eventPayPurchaseAmount;
-	/**应用下载数据-注册数*/
-	private Long eventRegister;
-	/**应用下载数据-完件数*/
-	private Long eventJinJianApp;
-	/**应用下载数据-授信数*/
-	private Long eventCreditGrantApp;
-	/**应用下载数据-付款成功数*/
-	private Long eventOrderPaid;
-	/**应用下载数据-付款成功金额*/
-	private BigDecimal eventOrderPaidPurchaseAmount;
-	/**落地页数据-落地页完件数*/
-	private Long eventJinJianLandingPage;
-	/**落地页数据-落地页授信数*/
-	private Long eventCreditGrantLandingPage;
-	/**应用下载数据-次留数(仅支持分日查询)*/
-	private Long eventNextDayStay;
-	/**落地页数据-表单提交数*/
-	private Long formCount;
-	/**3s播放数*/
-	@TableField(value = "play_3s_count")
-	private Long play3sCount;
-	/**创建时间*/
-	private Date createTime;
-	/**修改时间*/
-	private Date updateTime;
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+    private Long photoId;
+    /**
+     * 账户ID
+     */
+    private Long accountId;
+    /**
+     * signature
+     */
+    private String signature;
+    /**
+     * projectId
+     */
+    private String projectId;
+    /**
+     * projectName
+     */
+    private String projectName;
+    /**封面url*/
+
+    /**视频url*/
+    /**
+     * 素材类型
+     */
+    private String materialType;
+    /**
+     * 花费(元)
+     */
+    private BigDecimal charge;
+    /**
+     * 曝光数
+     */
+    private Long photoShow;
+    /**
+     * 素材曝光数
+     */
+    private Long aclick;
+    /**
+     * 行为数
+     */
+    private Long bclick;
+    /**
+     * 应用下载数据-安卓下载开始数
+     */
+    private Long downloadStarted;
+    /**
+     * 应用下载数据-安卓下载完成数
+     */
+    private Long downloadCompleted;
+    /**
+     * 应用下载数据-激活数
+     */
+    private Long activation;
+    /**
+     * 提交按钮点击数
+     */
+    private Long submit;
+    /**
+     * 日期
+     */
+    private Date statDate;
+    /**
+     * 封面点击数
+     */
+    private Long photoClick;
+    /**
+     * 应用下载数据-首日付费次数
+     */
+    private Long eventPayFirstDay;
+    /**
+     * 应用下载数据-首日付费金额
+     */
+    private BigDecimal eventPayPurchaseAmountFirstDay;
+    /**
+     * 应用下载数据-付费次数
+     */
+    private Long eventPay;
+    /**
+     * 应用下载数据-付费金额
+     */
+    private BigDecimal eventPayPurchaseAmount;
+    /**
+     * 应用下载数据-注册数
+     */
+    private Long eventRegister;
+    /**
+     * 应用下载数据-完件数
+     */
+    private Long eventJinJianApp;
+    /**
+     * 应用下载数据-授信数
+     */
+    private Long eventCreditGrantApp;
+    /**
+     * 应用下载数据-付款成功数
+     */
+    private Long eventOrderPaid;
+    /**
+     * 应用下载数据-付款成功金额
+     */
+    private BigDecimal eventOrderPaidPurchaseAmount;
+    /**
+     * 落地页数据-落地页完件数
+     */
+    private Long eventJinJianLandingPage;
+    /**
+     * 落地页数据-落地页授信数
+     */
+    private Long eventCreditGrantLandingPage;
+    /**
+     * 应用下载数据-次留数(仅支持分日查询)
+     */
+    private Long eventNextDayStay;
+    /**
+     * 落地页数据-表单提交数
+     */
+    private Long formCount;
+    /**
+     * 3s播放数
+     */
+    @TableField(value = "play_3s_count")
+    private Long play3sCount;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改时间
+     */
+    private Date updateTime;
 }

+ 14 - 7
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/EtlKuaishouAccountMaterialReportDailyMapper.java

@@ -8,19 +8,20 @@ import java.util.List;
 
 /**
  * 快手账户素材报表清洗表
+ *
  * @author: jeecg-boot
- * @date:   2021-02-25
+ * @date: 2021-02-25
  * @cersion: V1.0
  */
 public interface EtlKuaishouAccountMaterialReportDailyMapper extends BaseMapper<EtlKuaishouAccountMaterialReportDaily> {
 
     void etlKuaishouAccountMaterialReportDailyData(@Param(value = "date") String date);
 
-    List<EtlKuaishouAccountMaterialReportDaily> etlKuaishouAccountMaterialReportDailyList(@Param(value = "date")String date,@Param(value = "accountId")Long accountId);
+    List<EtlKuaishouAccountMaterialReportDaily> etlKuaishouAccountMaterialReportDailyList(@Param(value = "date") String date, @Param(value = "accountId") Long accountId);
 
-    void replaceBatch(@Param(value = "records")List<EtlKuaishouAccountMaterialReportDaily> getList);
+    void replaceBatch(@Param(value = "records") List<EtlKuaishouAccountMaterialReportDaily> getList);
 
-    void replace(@Param(value = "report")EtlKuaishouAccountMaterialReportDaily report);
+    void replace(@Param(value = "report") EtlKuaishouAccountMaterialReportDaily report);
 
     void etlKuaishouVideoReportStateDate();
 
@@ -28,9 +29,15 @@ public interface EtlKuaishouAccountMaterialReportDailyMapper extends BaseMapper<
 
     void etlKuaishouVideoTypeZz(@Param(value = "videoType") String videoType);
 
-    void etlKuaishouVideoTypeZr(@Param(value = "videoType")String videoType);
+    void etlKuaishouVideoTypeZr(@Param(value = "videoType") String videoType);
 
-    void etlBytedanceVideoTypeZr(@Param(value = "videoType")String videoType);
+    void etlBytedanceVideoTypeZr(@Param(value = "videoType") String videoType);
 
-    void etlBytedanceVideoTypeZz(@Param(value = "videoType")String videoType);
+    void etlBytedanceVideoTypeZz(@Param(value = "videoType") String videoType);
+
+    void addBatch(@Param("addList") List<EtlKuaishouAccountMaterialReportDaily> addList);
+
+    List<String> getDateList();
+
+    List<Long> getAccountList(String date);
 }

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

@@ -144,7 +144,9 @@
     </insert>
     <insert id="replace">
     replace into ctop_etl_kuaishou_account_material_report_daily(
-        photo_id,photo_url,cover_url
+        photo_id,
+        photo_url,
+        cover_url,
         company_id ,
         company_name ,
         project_id ,
@@ -177,7 +179,7 @@
         play_3s_count)
         values
         (
-    #{report.photoId},
+       #{report.photoId},
     #{report.photoUrl},
     #{report.coverUrl},
             #{report.companyId},
@@ -212,6 +214,7 @@
             #{report.play3sCount}
         )
     </insert>
+
     <update id="etlKuaishouVideoReportStateDate">
         UPDATE ctop_etl_kuaishou_video_info info
             LEFT JOIN ( select video_code,min(report.stat_date) as minDate from ctop_kuaishou_report_daily_material report left join ctop_kuaishou_video_get ckvg on report.account_id = ckvg.account_id
@@ -289,6 +292,81 @@ where 1=1
 and m.stat_date = #{date} and m.account_id = #{accountId}
 group by m.account_id,m.photo_id
     </select>
+    <select id="getDateList" resultType="java.lang.String">
+        SELECT DISTINCT stat_date  from  ctop_kuaishou_report_daily_material ORDER BY stat_date DESC
+    </select>
+    <select id="getAccountList" resultType="java.lang.Long">
+       SELECT DISTINCT account_id  from  ctop_kuaishou_report_daily_material where stat_date = #{date}
+    </select>
+
+
+    <insert id="addBatch">
+        replace into ctop_etl_kuaishou_account_material_report_daily(
+        project_id,
+        project_name,
+        photo_id,
+        account_id,
+        signature,
+        charge,
+        photo_show,
+        aclick,
+        bclick,
+        download_started,
+        download_completed,
+        activation,
+        submit,
+        stat_date,
+        photo_click,
+        event_pay_first_day,
+        event_pay_purchase_amount_first_day,
+        event_pay,
+        event_pay_purchase_amount,
+        event_register,
+        event_jin_jian_app,
+        event_credit_grant_app,
+        event_order_paid,
+        event_order_paid_purchase_amount,
+        event_jin_jian_landing_page,
+        event_credit_grant_landing_page,
+        event_next_day_stay,
+        form_count,
+        play_3s_count)
+        values
+        <foreach collection="addList" item="report" separator=",">
+            (
+            #{report.projectId},
+            #{report.projectName},
+            #{report.photoId},
+            #{report.accountId},
+            #{report.signature},
+            #{report.charge},
+            #{report.photoShow},
+            #{report.aclick},
+            #{report.bclick},
+            #{report.downloadStarted},
+            #{report.downloadCompleted},
+            #{report.activation},
+            #{report.submit},
+            #{report.statDate},
+            #{report.photoClick},
+            #{report.eventPayFirstDay},
+            #{report.eventPayPurchaseAmountFirstDay},
+            #{report.eventPay},
+            #{report.eventPayPurchaseAmount},
+            #{report.eventRegister},
+            #{report.eventJinJianApp},
+            #{report.eventCreditGrantApp},
+            #{report.eventOrderPaid},
+            #{report.eventOrderPaidPurchaseAmount},
+            #{report.eventJinJianLandingPage},
+            #{report.eventCreditGrantLandingPage},
+            #{report.eventNextDayStay},
+            #{report.formCount},
+            #{report.play3sCount}
+            )
+        </foreach>
+
+    </insert>
 
 
 </mapper>

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

@@ -3,6 +3,8 @@ package cn.com.ctop.kuaishou.modules.report.service;
 import cn.com.ctop.kuaishou.modules.report.entity.EtlKuaishouAccountMaterialReportDaily;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * @Description: 快手账户素材报表清洗表
  * @Author: jeecg-boot
@@ -19,4 +21,10 @@ public interface IEtlKuaishouAccountMaterialReportDailyService extends IService<
 
     void etlKuaishouVideoType();
 
+    void cleanVideoInfo(Long accountId,String statDate);
+
+
+    List<String> getDateList();
+
+    List<Long> getAccountListByDate(String date);
 }

+ 51 - 8
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/EtlKuaishouAccountMaterialReportDailyServiceImpl.java

@@ -2,11 +2,16 @@ package cn.com.ctop.kuaishou.modules.report.service.impl;
 
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
+import cn.com.ctop.common.module.service.IProjectService;
+import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouReportDailyMaterialService;
 import cn.com.ctop.kuaishou.modules.report.entity.EtlKuaishouAccountMaterialReportDaily;
 import cn.com.ctop.kuaishou.modules.report.mapper.EtlKuaishouAccountMaterialReportDailyMapper;
 import cn.com.ctop.kuaishou.modules.report.service.IEtlKuaishouAccountMaterialReportDailyService;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -19,9 +24,10 @@ import java.util.concurrent.Executors;
 
 /**
  * 快手账户素材报表清洗表
+ *
  * @author jeecg-boot
- * @date   2021-02-25
  * @version V1.0
+ * @date 2021-02-25
  */
 @Service
 @Slf4j
@@ -30,21 +36,24 @@ public class EtlKuaishouAccountMaterialReportDailyServiceImpl extends ServiceImp
     private EtlKuaishouAccountMaterialReportDailyMapper etlKuaishouAccountMaterialReportDailyMapper;
     @Autowired
     private ICtopOauthTokenService tokenService;
+    @Autowired
+    private IKuaiShouReportDailyMaterialService dailyMaterialService;
     static ExecutorService etlExecutorService = Executors.newFixedThreadPool(10);
+    static ExecutorService accountEtlExecutorService = Executors.newFixedThreadPool(10);
 
     @Override
     public void etlKuaishouAccountMaterialReportInfo(String formatDate) {
         List<CtopOauthToken> tokens = tokenService.selectKuaiShouToken();
         CountDownLatch countDownLatch = new CountDownLatch(tokens.size());
-        tokens.forEach(token -> etlExecutorService.submit(()->{
+        tokens.forEach(token -> etlExecutorService.submit(() -> {
             try {
-                List<EtlKuaishouAccountMaterialReportDaily> getList = etlKuaishouAccountMaterialReportDailyMapper.etlKuaishouAccountMaterialReportDailyList(formatDate,token.getAccountId());
-                if(null!=getList&&!getList.isEmpty()){
-                    getList.forEach(report->etlKuaishouAccountMaterialReportDailyMapper.replace(report));
+                List<EtlKuaishouAccountMaterialReportDaily> getList = etlKuaishouAccountMaterialReportDailyMapper.etlKuaishouAccountMaterialReportDailyList(formatDate, token.getAccountId());
+                if (null != getList && !getList.isEmpty()) {
+                    getList.forEach(report -> etlKuaishouAccountMaterialReportDailyMapper.replace(report));
                 }
-            }catch (Exception e){
+            } catch (Exception e) {
                 e.printStackTrace();
-            }finally {
+            } finally {
                 countDownLatch.countDown();
             }
         }));
@@ -53,7 +62,7 @@ public class EtlKuaishouAccountMaterialReportDailyServiceImpl extends ServiceImp
         } catch (InterruptedException e) {
             e.printStackTrace();
         }
-        log.info("{}数据获取完成",formatDate);
+        log.info("{}数据获取完成", formatDate);
     }
 
     @Override
@@ -73,4 +82,38 @@ public class EtlKuaishouAccountMaterialReportDailyServiceImpl extends ServiceImp
         etlKuaishouAccountMaterialReportDailyMapper.etlBytedanceVideoTypeZr(CtopAdConstant.VIDEO_TYPR_ZR);
         etlKuaishouAccountMaterialReportDailyMapper.etlBytedanceVideoTypeZz(CtopAdConstant.VIDEO_TYPR_ZZ);
     }
+
+    @Autowired
+    private IProjectService projectService;
+
+    @Override
+    public void cleanVideoInfo(Long accountId, String statDate) {
+        accountEtlExecutorService.submit(() -> {
+            log.info("开始:{},账户数据清洗",accountId);
+            JSONObject projectJson = projectService.getProjectByAccountId(accountId);
+            Long projectId = projectJson.getLong("projectId");
+            String projectName = projectJson.getString("projectName");
+            List<EtlKuaishouAccountMaterialReportDaily> reportList = dailyMaterialService.getReportList(accountId, statDate, projectId, projectName);
+            if (Check.isNull(reportList)) {
+                return;
+            }
+            List<List<EtlKuaishouAccountMaterialReportDaily>> partition = Lists.partition(reportList, 500);
+            for (int i = 0; i < partition.size(); i++) {
+                List<EtlKuaishouAccountMaterialReportDaily> addList = partition.get(i);
+                if (!Check.isNull(addList)) {
+                    etlKuaishouAccountMaterialReportDailyMapper.addBatch(addList);
+                }
+            }
+        });
+    }
+
+    @Override
+    public List<String> getDateList() {
+        return etlKuaishouAccountMaterialReportDailyMapper.getDateList();
+    }
+
+    @Override
+    public List<Long> getAccountListByDate(String date) {
+        return etlKuaishouAccountMaterialReportDailyMapper.getAccountList(date);
+    }
 }