Explorar o código

人群分析报表聚合

huangxuechao %!s(int64=3) %!d(string=hai) anos
pai
achega
ddd02be154

+ 37 - 0
jeecg-boot-finance/src/test/java/org/jeecg/modules/finance/FinanceTest.java

@@ -2,10 +2,14 @@ package org.jeecg.modules.finance;
 
 import cn.com.ctop.common.module.mapper.MailLogMapper;
 import cn.com.ctop.common.module.utils.CorpWexinUtils;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouAudienceReportDailyGenderService;
 import com.alibaba.fastjson.JSONObject;
 import org.jeecg.JeecgSystemApplication;
+import org.jeecg.ctop.finance.policy.entity.CwjsPolicyInfo;
+import org.jeecg.ctop.finance.policy.service.ICwjsPolicyInfoService;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
@@ -57,5 +61,38 @@ public class FinanceTest {
         System.out.println(str);
         System.out.println(str3);
     }
+    @Resource
+    ICwjsPolicyInfoService policyInfoService;
+    @Test
+    public void ICwjsPolicyInfoServiceTest(){
+        CwjsPolicyInfo cwjsPolicyInfo = new CwjsPolicyInfo();
+        cwjsPolicyInfo.setAdvertiserName("厕所");
+        cwjsPolicyInfo.setProductName("厕所");
+        cwjsPolicyInfo.setMediaType(2);
+        cwjsPolicyInfo.setCreateUserId("26bbe90edc5b475ca41ec3f76aa65067");
+        cwjsPolicyInfo.setPolicyStartDate("2021-08-10");
+        cwjsPolicyInfo.setPolicyEndDate("2021-08-15");
+        boolean ok = policyInfoService.isExistCwjsPolicyInfo(cwjsPolicyInfo);
+        System.out.println(ok);
+
+        cwjsPolicyInfo.setPolicyStartDate("2021-08-08");
+        cwjsPolicyInfo.setPolicyEndDate("2021-08-09");
+        System.out.println(policyInfoService.isExistCwjsPolicyInfo(cwjsPolicyInfo));
+
+        cwjsPolicyInfo.setPolicyStartDate("2021-08-08");
+        cwjsPolicyInfo.setPolicyEndDate("2021-08-10");
+        System.out.println(policyInfoService.isExistCwjsPolicyInfo(cwjsPolicyInfo));
+
+        cwjsPolicyInfo.setPolicyStartDate("2021-08-11");
+        cwjsPolicyInfo.setPolicyEndDate("2021-08-12");
+        System.out.println(policyInfoService.isExistCwjsPolicyInfo(cwjsPolicyInfo));
 
+    }
+
+    @Autowired
+    IKuaishouAudienceReportDailyGenderService audienceReportDailyGenderService;
+    @Test
+    public void IKuaishouAudienceReportDailyGenderServiceTest(){
+        audienceReportDailyGenderService.mergeAudienceReportDailyDate("2021-07-20");
+    }
 }

+ 3 - 1
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/report/entity/KuaishouAudienceReportDailyGender.java

@@ -18,5 +18,7 @@ import lombok.experimental.Accessors;
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
 @ApiModel(value = "ctop_kuaishou_audience_report_daily_gender对象", description = "人群分析报表")
-public class KuaishouAudienceReportDailyGender  extends KuaishouAudienceReportDaily {
+public class KuaishouAudienceReportDailyGender extends KuaishouAudienceReportDaily {
+
+
 }

+ 4 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/KuaishouAudienceReportDailyGenderMapper.java

@@ -17,4 +17,8 @@ public interface KuaishouAudienceReportDailyGenderMapper extends BaseMapper<Kuai
     void replaceBatch(@Param(value = "data") List<KuaishouAudienceReportDailyGender> data);
 
     void replaceBatchNew(@Param(value = "data") List<KuaishouAudienceReportDailyGender> data);
+
+    List<KuaishouAudienceReportDailyGender> selectByStatDate(String statDate);
+
+    void replaceBatchNewMerge(@Param(value = "data") List<KuaishouAudienceReportDailyGender> data);
 }

+ 92 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouAudienceReportDailyGenderMapper.xml

@@ -498,4 +498,96 @@
             )
         </foreach>
     </insert>
+
+    <select id="selectByStatDate" resultType="cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyGender">
+        select * from ctop_kuaishou_audience_report_daily_gender where stat_date = #{statDate} and project_id is not null and signature is not null
+    </select>
+
+    <insert id="replaceBatchNewMerge">
+        replace into ctop_kuaishou_audience_report_daily_gender_new (
+        project_id,
+        signature,
+        stat_date,
+        gender,
+        aclick,
+        bclick,
+        photo_click_cost,
+        download_started,
+        download_completed,
+        activation,
+        submit,
+        photo_show,
+        photo_click,
+        photo_click_ratio,
+        charge,
+        action_ratio,
+        impression_1k_cost,
+        action_cost,
+        event_pay_first_day,
+        event_pay_purchase_amount_first_day,
+        event_pay_first_day_roi,
+        event_pay,
+        event_pay_purchase_amount,
+        event_pay_roi,
+        event_register,
+        event_register_cost,
+        event_register_ratio,
+        event_jin_jian_app,
+        event_jin_jian_app_cost,
+        event_credit_grant_app,
+        event_credit_grant_app_cost,
+        event_order_paid,
+        event_order_paid_purchase_amount,
+        event_next_day_stay_cost,
+        event_next_day_stay_ratio,
+        event_order_paid_cost,
+        event_next_day_stay,
+        event_app_invoked,
+        event_credit_grant_app_ratio
+        )
+        values
+        <foreach collection="data" item="da" separator=",">
+            (
+            #{da.projectId},
+            #{da.signature},
+            #{da.statDate},
+            #{da.gender},
+            #{da.aclick},
+            #{da.bclick},
+            #{da.photoClickCost},
+            #{da.downloadStarted},
+            #{da.downloadCompleted},
+            #{da.activation},
+            #{da.submit},
+            #{da.photoShow},
+            #{da.photoClick},
+            #{da.photoClickRatio},
+            #{da.charge},
+            #{da.actionRatio},
+            #{da.impression_1kCost},
+            #{da.actionCost},
+            #{da.eventPayFirstDay},
+            #{da.eventPayPurchaseAmountFirstDay},
+            #{da.eventPayFirstDayRoi},
+            #{da.eventPay},
+            #{da.eventPayPurchaseAmount},
+            #{da.eventPayRoi},
+            #{da.eventRegister},
+            #{da.eventRegisterCost},
+            #{da.eventRegisterRatio},
+            #{da.eventJinJianApp},
+            #{da.eventJinJianAppCost},
+            #{da.eventCreditGrantApp},
+            #{da.eventCreditGrantAppCost},
+            #{da.eventOrderPaid},
+            #{da.eventOrderPaidPurchaseAmount},
+            #{da.eventNextDayStayCost},
+            #{da.eventNextDayStayRatio},
+            #{da.eventOrderPaidCost},
+            #{da.eventNextDayStay},
+            #{da.eventAppInvoked},
+            #{da.eventCreditGrantAppRatio}
+            )
+        </foreach>
+    </insert>
 </mapper>

+ 2 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouAudienceReportDailyGenderService.java

@@ -11,4 +11,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IKuaishouAudienceReportDailyGenderService extends IService<KuaishouAudienceReportDailyGender> {
 
+    void mergeAudienceReportDailyDate(String statDate);
+
 }

+ 112 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouAudienceReportDailyGenderServiceImpl.java

@@ -1,5 +1,7 @@
 package cn.com.ctop.kuaishou.modules.report.service.impl;
 
+import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDaily;
 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;
@@ -7,6 +9,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.*;
+
 /**
  * 人群分析报表
  *
@@ -17,5 +23,111 @@ import org.springframework.stereotype.Service;
 @Slf4j
 @Service
 public class KuaishouAudienceReportDailyGenderServiceImpl extends ServiceImpl<KuaishouAudienceReportDailyGenderMapper, KuaishouAudienceReportDailyGender> implements IKuaishouAudienceReportDailyGenderService {
+    @Resource
+    KuaishouAudienceReportDailyGenderMapper genderMapper;
+
+    public void mergeAudienceReportDailyDate(String statDate){
+        List<KuaishouAudienceReportDailyGender> genderList = genderMapper.selectByStatDate(statDate);
+        Map<String,KuaishouAudienceReportDailyGender> genderResultMap = new HashMap<>();
+        List<KuaishouAudienceReportDailyGender> result = new ArrayList<>();
+        if(!Check.isNull(genderList)){
+            genderList.forEach(gender ->{
+                String key = gender.getProjectId()+gender.getGender()+gender.getSignature()+gender.getStatDate();
+                if(genderResultMap.containsKey(key)){
+                    KuaishouAudienceReportDailyGender mergeGender = genderResultMap.get(key);
+                    merge(mergeGender, gender);
+                }else {
+                    genderResultMap.put(key,gender);
+                }
+            });
+        }
+
+        if(!Check.isNull(genderResultMap)){
+            Set<String> keys = genderResultMap.keySet();
+            keys.forEach(key -> result.add(genderResultMap.get(key)));
+        }
+
+        if(!Check.isNull(result)){
+            result.forEach(a -> {
+                System.out.println(a.toString());
+            });
+            saveAudienceReportDailyGenderToDb(result);
+        }
+    }
+
+    public void merge(KuaishouAudienceReportDaily o1, KuaishouAudienceReportDaily o2){
+        o1.setAclick(o1.getAclick()+o2.getAclick());
+        o1.setBclick(o1.getBclick()+o2.getBclick());
+        o1.setPhotoClickCost(o1.getPhotoClickCost()+o2.getPhotoClickCost());
+        o1.setDownloadStarted(o1.getDownloadStarted()+o2.getDownloadStarted());
+        o1.setDownloadCompleted(o1.getDownloadCompleted()+o2.getDownloadCompleted());
+        o1.setActivation(o1.getActivation()+o2.getActivation());
+        o1.setSubmit(o1.getSubmit()+o2.getSubmit());
+        o1.setPhotoShow(o1.getPhotoShow()+o2.getPhotoShow());
+        o1.setPhotoClickRatio(o1.getPhotoClickRatio()+o2.getPhotoClickRatio());
+        o1.setPhotoClick(o1.getPhotoClick()+o2.getPhotoClick());
+        o1.setCharge(o1.getCharge()+o2.getCharge());
+        o1.setActionRatio(o1.getActionRatio()+o2.getActionRatio());
+//        if(!Check.isNull(o1.getImpression_1kCost()) && !Check.isNull(o2.getImpression_1kCost())){
+//        }else{
+//            o1.setImpression_1kCost(!Check.isNull(o1.getImpression_1kCost()) ? o1.getImpression_1kCost() : !Check.isNull(o2.getImpression_1kCost()) ? o2.getImpression_1kCost() : null);
+//        }
+
+        o1.setImpression_1kCost(add(o1.getImpression_1kCost(),o2.getImpression_1kCost()));
+        o1.setActionCost(add(o1.getActionCost(),o2.getActionCost()));
+        o1.setEventPayFirstDay(o1.getEventPayFirstDay()+o2.getEventPayFirstDay());
+        o1.setEventPayPurchaseAmountFirstDay(add(o1.getEventPayPurchaseAmountFirstDay(),o2.getEventPayPurchaseAmountFirstDay()));
+
+        o1.setEventPayFirstDayRoi(o1.getEventPayFirstDayRoi()+o2.getEventPayFirstDayRoi());
+        o1.setEventPay(o1.getEventPay()+o2.getEventPay());
+        o1.setEventPayPurchaseAmount(add(o1.getEventPayPurchaseAmount(),o2.getEventPayPurchaseAmount()));
+
+        o1.setEventPayRoi(o1.getEventPayRoi()+o2.getEventPayRoi());
+        o1.setEventRegister(o1.getEventRegister()+o2.getEventRegister());
+        o1.setEventRegisterCost(add(o1.getEventRegisterCost(),o2.getEventRegisterCost()));
+
+        o1.setEventRegisterRatio(o1.getEventRegisterRatio()+o2.getEventRegisterRatio());
+        o1.setEventJinJianApp(o1.getEventJinJianApp()+o2.getEventJinJianApp());
+        o1.setEventJinJianAppCost(add(o1.getEventJinJianAppCost(),o2.getEventJinJianAppCost()));
+        o1.setEventCreditGrantApp(o1.getEventCreditGrantApp()+o2.getEventCreditGrantApp());
+        o1.setEventCreditGrantAppCost(add(o1.getEventCreditGrantAppCost(),o2.getEventCreditGrantAppCost()));
+        o1.setEventOrderPaid(o1.getEventOrderPaid()+o2.getEventOrderPaid());
+        o1.setEventOrderPaidPurchaseAmount(add(o1.getEventOrderPaidPurchaseAmount(),o2.getEventOrderPaidPurchaseAmount()));
+        o1.setEventNextDayStayCost(add(o1.getEventNextDayStayCost(),o2.getEventNextDayStayCost()));
+        o1.setEventNextDayStayRatio(add(o1.getEventNextDayStayRatio(),o2.getEventNextDayStayRatio()));
+        o1.setEventOrderPaidCost(add(o1.getEventOrderPaidCost(),o2.getEventOrderPaidCost()));
+
+        o1.setEventNextDayStay(o1.getEventNextDayStay()+o2.getEventNextDayStay());
+        o1.setEventAppInvoked(o1.getEventAppInvoked()+o2.getEventAppInvoked());
+        o1.setEventCreditGrantAppRatio(add(o1.getEventCreditGrantAppRatio(),o2.getEventCreditGrantAppRatio()));
+    }
+
+    public BigDecimal add(BigDecimal b1, BigDecimal b2){
+        if(!Check.isNull(b1) && !Check.isNull(b2)){
+            return b1.add(b2);
+        }else{
+            return !Check.isNull(b1) ? b1 : !Check.isNull(b2) ? b2 : new BigDecimal(0);
+        }
+    }
+
+    private void saveAudienceReportDailyGenderToDb(List<KuaishouAudienceReportDailyGender> mergeGenderList) {
+        if(mergeGenderList == null || mergeGenderList.isEmpty()){
+            return;
+        }
+
+        List<KuaishouAudienceReportDailyGender> batchList = new ArrayList<>();
+        for(KuaishouAudienceReportDailyGender mergeGender : mergeGenderList){
+            batchList.add(mergeGender);
+
+            if(batchList.size() >= 1000){
+                genderMapper.replaceBatchNewMerge(batchList);
+                batchList.clear();
+            }
+        }
 
+        if(batchList.isEmpty() == false){
+            genderMapper.replaceBatchNewMerge(batchList);
+            batchList.clear();
+        }
+    }
 }

+ 203 - 11
jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java

@@ -1,30 +1,222 @@
 package org.jeecg;
 
+import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.mapper.MailLogMapper;
+import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.common.module.utils.CorpWexinUtils;
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouUnitLevelOperationRecord;
+import cn.com.ctop.kuaishou.modules.ai.mapper.AiKuaishouUnitLevelOperationRecordMapper;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouAudienceReportDailyGenderService;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouAudienceReportDailyService;
 import com.alibaba.fastjson.JSONObject;
+import org.jeecg.common.util.DateUtils;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Scanner;
+import java.util.concurrent.CountDownLatch;
 
 @RunWith(SpringRunner.class)
 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,classes = JeecgSystemApplication.class)
 public class SampleTest {
-    @Resource
-    CorpWexinUtils corpWexinUtils;
-    @Resource
-    MailLogMapper mailLogMapper;
+
+    @Autowired
+    IKuaishouAudienceReportDailyGenderService audienceReportDailyGenderService;
     @Test
-    public void weixin(){
-        JSONObject wChatIdByUserId = mailLogMapper.getWChatIdByUserId("26bbe90edc5b475ca41ec3f76aa65067");
-        StringBuilder text = new StringBuilder();
-        text.append("您有一条销售政策需要审核,该客户为:");
-        text.append("测试");
-        text.append(",请及时登录助手平台-销售政策页面进行审核,谢谢!");
-        corpWexinUtils.sendMessageByWeChatId(wChatIdByUserId,text.toString());
+    public void IKuaishouAudienceReportDailyGenderServiceTest(){
+        audienceReportDailyGenderService.mergeAudienceReportDailyDate("2021-07-20");
     }
 
+
+
+//    @Resource
+//    CorpWexinUtils corpWexinUtils;
+//    @Resource
+//    MailLogMapper mailLogMapper;
+//    @Test
+//    public void weixin(){
+//        JSONObject wChatIdByUserId = mailLogMapper.getWChatIdByUserId("26bbe90edc5b475ca41ec3f76aa65067");
+//        StringBuilder text = new StringBuilder();
+//        text.append("您有一条销售政策需要审核,该客户为:");
+//        text.append("测试");
+//        text.append(",请及时登录助手平台-销售政策页面进行审核,谢谢!");
+//        corpWexinUtils.sendMessageByWeChatId(wChatIdByUserId,text.toString());
+//    }
+//
+//    @Autowired
+//    IKuaishouAudienceReportDailyService kuaishouAudienceReportDailyService;
+//    @Resource
+//    AiKuaishouUnitLevelOperationRecordMapper kuaishouUnitLevelOperationRecordMapper;
+//    @Test
+//    public void getAudienceReport() throws InterruptedException {
+//        int page = 1;
+//        int pageSize = 2000;
+//        Date beginDate = DateUtils.parseDate("2021-05-01", "yyyy-MM-dd");
+//        Date endDate = DateUtils.parseDate("2021-06-01", "yyyy-MM-dd");
+//
+//        while (beginDate.before(endDate)){
+//            Date mulDate = beginDate;
+//            List<AiKuaishouUnitLevelOperationRecord> planIdsAndUnitIds = kuaishouUnitLevelOperationRecordMapper.selectAllByAccountId(mulDate, DateUtils.addDay(mulDate,1));
+//            countDownLatch = new CountDownLatch(planIdsAndUnitIds.size());
+//            planIdsAndUnitIds.forEach(planIdAndUnitId -> executorService.submit(() -> {
+//                try{
+//                    CtopOauthToken token = tokenService.getTokenByAccountId(planIdAndUnitId.getAccountId());
+//                    if(!Check.isNull(token)){
+//                        Date startDate = mulDate;
+//                        Date enDate = DateUtils.addDay(startDate, 30);
+//                        // province: 省级地域分布, city: 地级地域分布,gender: 性别分布,ageSegment: 年龄分布clientId: 系统分布 businessInterestTags: 商业兴趣分布
+//                        while (startDate.before(enDate)){
+//                            kuaishouAudienceReportDailyService.crowdAnalysisReport2(token, DateUtils.formatDate(startDate,"yyyy-MM-dd"), "ageSegment", planIdAndUnitId.getCampaignId(), planIdAndUnitId.getUnitId(), page, pageSize);
+//                            System.out.println("获取完毕 -> unit:" + planIdAndUnitId.getUnitId() +",日期:" + DateUtils.formatDate(startDate,"yyyy-MM-dd"));
+//                            startDate = DateUtils.addDay(startDate, 1);
+//                        }
+//
+//                    }else {
+//                        System.out.println("token异常 -》 accountId:"+planIdAndUnitId.getAccountId());
+//                    }
+//                }catch (Exception e){
+//                }finally {
+//                    countDownLatch.countDown();
+//                }
+//            }));
+//            beginDate = DateUtils.addDay(beginDate, 1);
+//            countDownLatch.await();
+//        }
+//
+//        System.out.println("走完了~");
+//
+//    }
+//    @Autowired
+//    cn.com.ctop.kuaishou.modules.report.service.IKuaishouPullTaskInfoService kuaishouPullTaskInfoService;
+//    /**
+//     * 发布任务到表里,大家消耗任务。  458  淘特项目所有账户从6月1日开始到现在所有的最新的数据
+//     */
+//    @Test
+//    public void initKusishouTaskInfo() {
+//        Date beginDate = DateUtils.parseDate("2021-06-01", "yyyy-MM-dd");
+//        Date endDate = DateUtils.parseDate("2021-08-04", "yyyy-MM-dd");
+//        while (beginDate.before(endDate)) {
+//            Date mulDate = beginDate;
+//            List<KuaishouPullTaskInfo> result = new ArrayList<>();
+//            List<Long> accountIds = kuaishouUnitLevelOperationRecordMapper.selectAllAccountIds(mulDate, DateUtils.addDay(mulDate, 1));
+//            accountIds.forEach(accountId -> {
+//                KuaishouPullTaskInfo taskInfo = new KuaishouPullTaskInfo();
+//                taskInfo.setAccountId(accountId);
+//                taskInfo.setTargetDate(DateUtils.formatDate(mulDate,"yyyy-MM-dd"));
+//                result.add(taskInfo);
+//            });
+//            kuaishouPullTaskInfoService.saveBatch(result);
+//            beginDate = DateUtils.addDay(beginDate, 1);
+//        }
+//
+//    }
+
+//    public void getAudienceReport() throws InterruptedException{
+//        int page = 1;
+//        int pageSize = 2000;
+//
+//        System.out.println("");
+//        System.out.println("");
+//        System.out.println("");
+//        System.out.println("");
+//        System.out.println("拉取人群报表数据服务已开始执行!");
+//        Scanner scan = new Scanner(System.in);
+//        System.out.println("请输入要运行几个任务:");
+//        int num = scan.nextInt();
+//        System.out.println("即将执行"+num+"个任务,执行完毕会自动退出此程序。");
+//        System.out.println("");
+//        System.out.println("");
+//        System.out.println("");
+//        System.out.println("");
+//        List<KuaishouPullTaskInfo> taskInfos = kuaishouPullTaskInfoMapper.getTaskInfos(num);
+//        System.exit(0);
+//        if(!Check.isNull(taskInfos)){
+//            taskInfos.forEach(taskInfo -> taskInfo.setStatus(1));
+//            kuaishouPullTaskInfoService.updateBatchById(taskInfos);
+//
+//            for (KuaishouPullTaskInfo taskInfo : taskInfos) {
+//                Date mulDate = DateUtils.parseDate(taskInfo.getTargetDate(), "yyyy-MM-dd");
+//                List<AiKuaishouUnitLevelOperationRecord> planIdsAndUnitIds = kuaishouUnitLevelOperationRecordMapper.selectAllByAccountIdAndDate(taskInfo.getAccountId(), mulDate, DateUtils.addDay(mulDate, 1));
+//                countDownLatch = new CountDownLatch(planIdsAndUnitIds.size());
+//                planIdsAndUnitIds.forEach(planIdAndUnitId -> executorService.submit(() -> {
+//                    try {
+//                        CtopOauthToken token = tokenService.getTokenByAccountId(planIdAndUnitId.getAccountId());
+//                        if (!Check.isNull(token)) {
+//                            Date startDate = mulDate;
+//                            Date enDate = DateUtils.addDay(startDate, 30);
+//                            // province: 省级地域分布, city: 地级地域分布,gender: 性别分布,ageSegment: 年龄分布clientId: 系统分布 businessInterestTags: 商业兴趣分布
+//                            while (startDate.before(enDate)) {
+//                                kuaishouAudienceReportDailyService.crowdAnalysisReport2(token, DateUtils.formatDate(startDate, "yyyy-MM-dd"), "province", planIdAndUnitId.getCampaignId(), planIdAndUnitId.getUnitId(), page, pageSize);
+//                                kuaishouAudienceReportDailyService.crowdAnalysisReport2(token, DateUtils.formatDate(startDate, "yyyy-MM-dd"), "city", planIdAndUnitId.getCampaignId(), planIdAndUnitId.getUnitId(), page, pageSize);
+//                                kuaishouAudienceReportDailyService.crowdAnalysisReport2(token, DateUtils.formatDate(startDate, "yyyy-MM-dd"), "gender", planIdAndUnitId.getCampaignId(), planIdAndUnitId.getUnitId(), page, pageSize);
+//                                kuaishouAudienceReportDailyService.crowdAnalysisReport2(token, DateUtils.formatDate(startDate, "yyyy-MM-dd"), "clientId", planIdAndUnitId.getCampaignId(), planIdAndUnitId.getUnitId(), page, pageSize);
+//                                kuaishouAudienceReportDailyService.crowdAnalysisReport2(token, DateUtils.formatDate(startDate, "yyyy-MM-dd"), "ageSegment", planIdAndUnitId.getCampaignId(), planIdAndUnitId.getUnitId(), page, pageSize);
+//                                kuaishouAudienceReportDailyService.crowdAnalysisReport2(token, DateUtils.formatDate(startDate, "yyyy-MM-dd"), "businessInterestTags", planIdAndUnitId.getCampaignId(), planIdAndUnitId.getUnitId(), page, pageSize);
+//                                System.out.println("获取完毕 -> unit:" + planIdAndUnitId.getUnitId() + ",日期:" + DateUtils.formatDate(startDate, "yyyy-MM-dd"));
+//                                startDate = DateUtils.addDay(startDate, 1);
+//                            }
+//
+//                        } else {
+//                            System.out.println("token异常 -》 accountId:" + planIdAndUnitId.getAccountId());
+//                        }
+//                    } catch (Exception e) {
+//                    } finally {
+//                        countDownLatch.countDown();
+//                    }
+//                }));
+//                countDownLatch.await();
+//            }
+//            System.out.println("11111111111111111111111111111111111111111111111111111111");
+//            System.out.println("11111111111111111111111111执行完毕111111111111111111111111");
+//            System.out.println("11111111111111111111111111111111111111111111111111111111");
+//            System.exit(0);
+//        }else{
+//            List<KuaishouPullTaskLog> taskLogs = kuaishouPullTaskLogMapper.getTaskInfos(num * 1000);
+//            if(Check.isNull(taskLogs)){
+//                System.out.println("所有的表里的任务走完啦,请联系发布任务!!!");
+//                return;
+//            }
+//
+//            taskLogs.forEach(taskLog -> taskLog.setStatus(1));
+//            kuaishouPullTaskLogService.updateBatchById(taskLogs);
+//
+//            countDownLatch = new CountDownLatch(taskLogs.size());
+//            taskLogs.forEach(taskLog -> executorService.submit(() -> {
+//                try {
+//                    CtopOauthToken token = tokenService.getTokenByAccountId(taskLog.getAccountId());
+//                    if (!Check.isNull(token)) {
+//                        Date startDate = DateUtils.parseDate(taskLog.getTargetDate(),"yyyy-MM-dd");
+//                        // province: 省级地域分布, city: 地级地域分布,gender: 性别分布,ageSegment: 年龄分布clientId: 系统分布 businessInterestTags: 商业兴趣分布
+//                        kuaishouAudienceReportDailyService.crowdAnalysisReport2(token, taskLog.getTargetDate(), "province", taskLog.getPlanId(), taskLog.getUnitId(), page, pageSize);
+//                        kuaishouAudienceReportDailyService.crowdAnalysisReport2(token, taskLog.getTargetDate(), "city", taskLog.getPlanId(), taskLog.getUnitId(), page, pageSize);
+//                        kuaishouAudienceReportDailyService.crowdAnalysisReport2(token, taskLog.getTargetDate(), "gender", taskLog.getPlanId(), taskLog.getUnitId(), page, pageSize);
+//                        kuaishouAudienceReportDailyService.crowdAnalysisReport2(token, taskLog.getTargetDate(), "clientId", taskLog.getPlanId(), taskLog.getUnitId(), page, pageSize);
+//                        kuaishouAudienceReportDailyService.crowdAnalysisReport2(token, taskLog.getTargetDate(), "ageSegment", taskLog.getPlanId(), taskLog.getUnitId(), page, pageSize);
+//                        kuaishouAudienceReportDailyService.crowdAnalysisReport2(token, taskLog.getTargetDate(), "businessInterestTags", taskLog.getPlanId(), taskLog.getUnitId(), page, pageSize);
+//                        System.out.println("获取完毕 -> unit:" + taskLog.getUnitId() + ",日期:" + taskLog.getTargetDate());
+//                    } else {
+//                        System.out.println("token异常 -》 accountId:" + taskLog.getAccountId());
+//                    }
+//                } catch (Exception e) {
+//                } finally {
+//                    countDownLatch.countDown();
+//                }
+//            }));
+//            countDownLatch.await();
+//
+//            System.out.println("11111111111111111111111111111111111111111111111111111111");
+//            System.out.println("11111111111111111111111111执行完毕111111111111111111111111");
+//            System.out.println("11111111111111111111111111111111111111111111111111111111");
+//            System.exit(0);
+//        }
+//
+//
+//    }
 }