Przeglądaj źródła

Merge branch 'master' into test

syh 5 lat temu
rodzic
commit
739a8bd4fe
17 zmienionych plików z 452 dodań i 27 usunięć
  1. 8 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/UReportFileBindUserController.java
  2. 8 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/UReportFileController.java
  3. 1 8
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/BytedanceAdvertiserDailyReportLoadJob.java
  4. 1 7
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/BytedanceAdvertiserHourlyReportLoadJob.java
  5. 55 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/BytedanceCreativeDailyReportLoadJob.java
  6. 62 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/BytedanceCreativeHourlyReportLoadJob.java
  7. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/BytedancePlanDailyReportLoadJob.java
  8. 10 1
      module-report/src/main/java/cn/com/ctop/bytedance/entity/BytedanceCreativeHourlyReport.java
  9. 2 0
      module-report/src/main/java/cn/com/ctop/bytedance/mapper/BytedanceCreativeDailyReportMapper.java
  10. 4 0
      module-report/src/main/java/cn/com/ctop/bytedance/mapper/BytedanceCreativeHourlyReportMapper.java
  11. 133 0
      module-report/src/main/java/cn/com/ctop/bytedance/mapper/xml/BytedanceCreativeDailyReportMapper.xml
  12. 135 1
      module-report/src/main/java/cn/com/ctop/bytedance/mapper/xml/BytedanceCreativeHourlyReportMapper.xml
  13. 1 1
      module-report/src/main/java/cn/com/ctop/bytedance/service/IBytedanceCreativeDailyReportService.java
  14. 3 0
      module-report/src/main/java/cn/com/ctop/bytedance/service/IBytedanceCreativeHourlyReportService.java
  15. 5 3
      module-report/src/main/java/cn/com/ctop/bytedance/service/impl/BytedanceCreativeDailyReportServiceImpl.java
  16. 9 0
      module-report/src/main/java/cn/com/ctop/bytedance/service/impl/BytedanceCreativeHourlyReportServiceImpl.java
  17. 14 5
      module-report/src/main/java/cn/com/ctop/bytedance/service/impl/ReportServiceImpl.java

+ 8 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/UReportFileBindUserController.java

@@ -73,7 +73,15 @@ public class UReportFileBindUserController {
         Result<IPage<UReportFileBindUser>> result = new Result<>();
         LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         uReportFileBindUser.setUserId(user.getId());
+        String fileName = null;
+        if (null != uReportFileBindUser.getFileName() && !uReportFileBindUser.getFileName().trim().equals("")) {
+            fileName = uReportFileBindUser.getFileName();
+            uReportFileBindUser.setFileName(null);
+        }
         QueryWrapper<UReportFileBindUser> queryWrapper = QueryGenerator.initQueryWrapper(uReportFileBindUser, req.getParameterMap());
+        if (null != fileName) {
+            queryWrapper.like("file_name", fileName);
+        }
         Page<UReportFileBindUser> page = new Page<>(pageNo, pageSize);
         IPage<UReportFileBindUser> pageList = uReportFileBindUserService.page(page, queryWrapper);
         result.setSuccess(true);

+ 8 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/UReportFileController.java

@@ -66,7 +66,15 @@ public class UReportFileController {
                                                     @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
                                                     HttpServletRequest req) {
         Result<IPage<UReportFile>> result = new Result<IPage<UReportFile>>();
+        String name = null;
+        if (null != uReportFile.getName() && !uReportFile.getName().trim().equals("")) {
+            name = uReportFile.getName();
+            uReportFile.setName(null);
+        }
         QueryWrapper<UReportFile> queryWrapper = QueryGenerator.initQueryWrapper(uReportFile, req.getParameterMap());
+        if (null != name) {
+            queryWrapper.like("name", name);
+        }
         Page<UReportFile> page = new Page<UReportFile>(pageNo, pageSize);
         IPage<UReportFile> pageList = uReportFileService.page(page, queryWrapper);
         result.setSuccess(true);

+ 1 - 8
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/BytedanceAdvertiserDailyReportLoadJob.java

@@ -44,15 +44,8 @@ public class BytedanceAdvertiserDailyReportLoadJob implements Job {
             executorService.submit(new Runnable() {
                 @Override
                 public void run() {
-                    //1: 获取广告主信息数据
+                    //获取广告主信息数据
                     reportService.getAdvertiserReport(token, getDate, getDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
-//            2:获取广告组信息数据
-//            reportService.getAdvertiserCampaignReport(token, getDate, getDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
-                    //3:获取广告计划信息数据
-//            reportService.getAdvertiserPlanReport(token, getDate, getDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
-                    //4: 获取广告创意信息数据
-//            reportService.getAdvertiserCreativeReport(token, getDate, getDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
-
                 }
             });
         });

+ 1 - 7
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/BytedanceAdvertiserHourlyReportLoadJob.java

@@ -50,14 +50,8 @@ public class BytedanceAdvertiserHourlyReportLoadJob implements Job {
             executorService.submit(new Runnable() {
                 @Override
                 public void run() {
-                    //1: 获取广告主信息数据
+                    //获取广告主信息数据
                     reportService.getAdvertiserReport(token, finalGetDate, finalGetDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_HOURLY);
-                    //2:获取广告组信息数据
-                    //reportService.getAdvertiserCampaignReport(token, finalGetDate, finalGetDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_HOURLY);
-                    //3:获取广告计划信息数据
-                    //reportService.getAdvertiserPlanReport(token, finalGetDate, finalGetDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_HOURLY);
-                    //4: 获取广告创意信息数据
-                    //reportService.getAdvertiserCreativeReport(token, finalGetDate, finalGetDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_HOURLY);
                 }
 
             });

+ 55 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/BytedanceCreativeDailyReportLoadJob.java

@@ -0,0 +1,55 @@
+package org.jeecg.modules.ctop.job;
+
+import cn.com.ctop.bytedance.service.IReportService;
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.common.module.service.ICtopOauthTokenService;
+import cn.com.ctop.common.module.utils.CtopAdConstant;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.DateUtils;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+/**
+ * @author syh
+ * 头条创意日报数据获取任务
+ * 第二天凌晨跑前一天的数据
+ */
+@Slf4j
+public class BytedanceCreativeDailyReportLoadJob implements Job {
+    @Autowired
+    private ICtopOauthTokenService tokenService;
+    @Autowired
+    private IReportService reportService;
+    static ExecutorService executorService = null;
+
+
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        Date getDate = DateUtils.addDay(new Date(), -1);
+        //1:查询当日数据
+        List<CtopOauthToken> tokens = tokenService.getTokenListByType(CtopAdConstant.PLATFORM_TYPE_BYTEDANCE);
+        if (null == tokens || tokens.size() <= 0) {
+            log.info("定时获取头条数据异常:为获取到可用的token");
+            return;
+        }
+        executorService = Executors.newFixedThreadPool(5);
+        tokens.forEach(token -> {
+            executorService.submit(new Runnable() {
+                @Override
+                public void run() {
+                    //4: 获取广告创意信息数据
+                    reportService.getAdvertiserCreativeReport(token, getDate, getDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
+                }
+            });
+        });
+    }
+
+
+}

+ 62 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/BytedanceCreativeHourlyReportLoadJob.java

@@ -0,0 +1,62 @@
+package org.jeecg.modules.ctop.job;
+
+import cn.com.ctop.bytedance.service.IReportService;
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.common.module.service.ICtopOauthTokenService;
+import cn.com.ctop.common.module.utils.CtopAdConstant;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.DateUtils;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+/**
+ * @author syh
+ * 头条创意时报获取任务
+ */
+@Slf4j
+public class BytedanceCreativeHourlyReportLoadJob implements Job {
+    @Autowired
+    private ICtopOauthTokenService tokenService;
+    @Autowired
+    private IReportService reportService;
+    static ExecutorService executorService = null;
+
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        log.info("头条时报数据获取开始");
+        Date getDate = new Date();
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH");
+        String hour = simpleDateFormat.format(getDate);
+        if (null != hour && "00".equals(hour)) {
+            getDate = DateUtils.addDay(getDate, -1);
+        }
+        //1:查询当日数据
+        List<CtopOauthToken> tokens = tokenService.getTokenListByType(CtopAdConstant.PLATFORM_TYPE_BYTEDANCE);
+        if (null == tokens || tokens.size() <= 0) {
+            log.info("定时获取头条小时数据异常:未获取到可用的token");
+            return;
+        }
+        executorService = Executors.newFixedThreadPool(4);
+        Date finalGetDate = getDate;
+        tokens.forEach(token -> {
+            executorService.submit(new Runnable() {
+                @Override
+                public void run() {
+                    //获取广告创意信息数据
+                    reportService.getAdvertiserCreativeReport(token, finalGetDate, finalGetDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_HOURLY);
+                }
+
+            });
+
+        });
+        log.info("头条时报数据获取结束");
+    }
+}

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/BytedancePlanDailyReportLoadJob.java

@@ -42,7 +42,7 @@ public class BytedancePlanDailyReportLoadJob implements Job {
             return;
         }
         tokens.forEach(token -> {
-            //3:获取广告计划信息数据
+            //获取广告计划信息数据
             reportService.getAdvertiserPlanReport(token, getDate, getDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
         });
         //清洗关于作业帮数据

+ 10 - 1
module-report/src/main/java/cn/com/ctop/bytedance/entity/BytedanceCreativeHourlyReport.java

@@ -8,9 +8,11 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+import org.jeecg.common.util.DateUtils;
 import org.jeecgframework.poi.excel.annotation.Excel;
 
 import java.math.BigDecimal;
+import java.text.ParseException;
 import java.util.Date;
 
 /**
@@ -44,6 +46,8 @@ public class BytedanceCreativeHourlyReport {
     @Excel(name = "数据起始时间", width = 15)
     @ApiModelProperty(value = "数据起始时间")
     private String statDatetime;
+
+    private Integer statHour;
     /**
      * 展示量
      */
@@ -437,7 +441,12 @@ public class BytedanceCreativeHourlyReport {
         }
         String statDatetime = data.getString("stat_datetime");
         if (null != statDatetime && !"".equals(statDatetime.trim())) {
-            this.statDatetime = statDatetime;
+            try {
+                this.statDatetime = DateUtils.getDateByDateStr(statDatetime);
+                this.statHour = DateUtils.getHour(statDatetime);
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
         }
         Long shopping = data.getLong("shopping");
         if (null != shopping) {

+ 2 - 0
module-report/src/main/java/cn/com/ctop/bytedance/mapper/BytedanceCreativeDailyReportMapper.java

@@ -2,6 +2,7 @@ package cn.com.ctop.bytedance.mapper;
 
 import cn.com.ctop.bytedance.entity.BytedanceCreativeDailyReport;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -18,4 +19,5 @@ public interface BytedanceCreativeDailyReportMapper extends BaseMapper<Bytedance
     List<BytedanceCreativeDailyReport> bytedanceCreativeAccountReport(Map<String, Object> paramsMap);
 
 
+    void replaceBatch(@Param(value = "report") List<BytedanceCreativeDailyReport> dailyReports);
 }

+ 4 - 0
module-report/src/main/java/cn/com/ctop/bytedance/mapper/BytedanceCreativeHourlyReportMapper.java

@@ -2,6 +2,9 @@ package cn.com.ctop.bytedance.mapper;
 
 import cn.com.ctop.bytedance.entity.BytedanceCreativeHourlyReport;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * @Description: 广告创意日报表信息
@@ -11,4 +14,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface BytedanceCreativeHourlyReportMapper extends BaseMapper<BytedanceCreativeHourlyReport> {
 
+    void replaceBatch(@Param(value = "reports") List<BytedanceCreativeHourlyReport> hourlyReports);
 }

+ 133 - 0
module-report/src/main/java/cn/com/ctop/bytedance/mapper/xml/BytedanceCreativeDailyReportMapper.xml

@@ -93,5 +93,138 @@
         limit 100
     </select>
 
+    <insert id="replaceBatch">
+        replace into ctop_bytedance_report_plan_daily(
+        id,
+        advertiser_id ,
+        stat_datetime,
+        show_num,
+        click,
+        convert_num,
+        cost,
+        active,
+        download_finish,
+        download_start,
+        click_install,
+        install_finish,
+        register,
+        pay_count,
+        in_app_uv,
+        in_app_detail_uv,
+        in_app_cart,
+        in_app_order,
+        in_app_pay,
+        phone,
+        form,
+        map_search,
+        button,
+        view,
+        qq,
+        lottery,
+        vote,
+        redirect,
+        shopping,
+        consult,
+        wechat,
+        phone_confirm,
+        phone_connect,
+        consult_effective,
+        total_play,
+        valid_play,
+        wifi_play,
+        play_duration_sum,
+        play25_feed_break,
+        play50_feed_break,
+        play75_feed_break,
+        play100_feed_break,
+        advanced_creative_phone_click,
+        advanced_creative_counsel_click,
+        advanced_creative_form_click,
+        share,
+        comment,
+        like_num,
+        follow,
+        home_visited,
+        ies_challenge_click,
+        ies_music_click,
+        interact_per_cost,
+        next_day_open,
+        next_day_open_rate,
+        next_day_open_cost,
+        ad_id,
+        ad_name,
+        campaign_id,
+        create_time,
+        update_time,
+        creative_id)
+        values
+        <foreach collection="reports" item="report" separator=",">
+            (
+            #{report.id},
+            #{report.advertiserId},
+            #{report.statDatetime},
+            #{report.showNum},
+            #{report.click},
+            #{report.convertNum},
+            #{report.cost},
+            #{report.active},
+            #{report.downloadFinish},
+            #{report.downloadStart},
+            #{report.click_install},
+            #{report.installFinish},
+            #{report.register},
+            #{report.payCount},
+            #{report.inAppUv},
+            #{report.inAppDetailUv},
+            #{report.inAppCart},
+            #{report.inAppOrder},
+            #{report.inAppPay},
+            #{report.phone},
+            #{report.form},
+            #{report.mapSearch},
+            #{report.button},
+            #{report.view},
+            #{report.qq},
+            #{report.lottery},
+            #{report.vote},
+            #{report.redirect},
+            #{report.shopping},
+            #{report.consult},
+            #{report.wechat},
+            #{report.phoneConfirm},
+            #{report.phoneConnect},
+            #{report.consultEffective},
+            #{report.totalPlay},
+            #{report.validPlay},
+            #{report.wifiPlay},
+            #{report.playDurationSum},
+            #{report.play25FeedBreak},
+            #{report.play50FeedBreak},
+            #{report.play75FeedBreak},
+            #{report.play100FeedBreak},
+            #{report.advancedCreativePhoneClick},
+            #{report.advancedCreativeCounselClick},
+            #{report.advancedCreativeFormClick},
+            #{report.share},
+            #{report.comment},
+            #{report.likeNum},
+            #{report.follow},
+            #{report.homeVisited},
+            #{report.iesChallengeClick},
+            #{report.iesMusicClick},
+            #{report.interactPerCost},
+            #{report.nextDayOpen},
+            #{report.nextDayOpenRate},
+            #{report.nextDayOpenCost},
+            #{report.adId},
+            #{report.adName},
+            #{report.campaignId},
+            #{report.createTime},
+            #{report.updateTime},
+            #{report.creativeId
+            )
+        </foreach>
+    </insert>
+
 
 </mapper>

+ 135 - 1
module-report/src/main/java/cn/com/ctop/bytedance/mapper/xml/BytedanceCreativeHourlyReportMapper.xml

@@ -1,5 +1,139 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cn.com.ctop.bytedance.mapper.BytedanceCreativeHourlyReportMapper">
-
+    <insert id="replaceBatch">
+        replace into ctop_bytedance_report_plan_hourly(
+        id,
+        advertiser_id ,
+        stat_datetime,
+        stat_hour,
+        show_num,
+        click,
+        convert_num,
+        cost,
+        active,
+        download_finish,
+        download_start,
+        click_install,
+        install_finish,
+        register,
+        pay_count,
+        in_app_uv,
+        in_app_detail_uv,
+        in_app_cart,
+        in_app_order,
+        in_app_pay,
+        phone,
+        form,
+        map_search,
+        button,
+        view,
+        qq,
+        lottery,
+        vote,
+        redirect,
+        shopping,
+        consult,
+        wechat,
+        phone_confirm,
+        phone_connect,
+        consult_effective,
+        total_play,
+        valid_play,
+        wifi_play,
+        play_duration_sum,
+        play25_feed_break,
+        play50_feed_break,
+        play75_feed_break,
+        play100_feed_break,
+        advanced_creative_phone_click,
+        advanced_creative_counsel_click,
+        advanced_creative_form_click,
+        share,
+        comment,
+        like_num,
+        follow,
+        home_visited,
+        ies_challenge_click,
+        ies_music_click,
+        interact_per_cost,
+        next_day_open,
+        next_day_open_rate,
+        next_day_open_cost,
+        ad_id,
+        ad_name,
+        campaign_id,
+        create_time,
+        update_time,
+        creative_id,
+        stat_datahour)
+        values
+        <foreach collection="reports" item="report" separator=",">
+            (
+            #{report.id},
+            #{report.advertiserId},
+            #{report.statDatetime},
+            #{report.statHour},
+            #{report.showNum},
+            #{report.click},
+            #{report.convertNum},
+            #{report.cost},
+            #{report.active},
+            #{report.downloadFinish},
+            #{report.downloadStart},
+            #{report.click_install},
+            #{report.installFinish},
+            #{report.register},
+            #{report.payCount},
+            #{report.inAppUv},
+            #{report.inAppDetailUv},
+            #{report.inAppCart},
+            #{report.inAppOrder},
+            #{report.inAppPay},
+            #{report.phone},
+            #{report.form},
+            #{report.mapSearch},
+            #{report.button},
+            #{report.view},
+            #{report.qq},
+            #{report.lottery},
+            #{report.vote},
+            #{report.redirect},
+            #{report.shopping},
+            #{report.consult},
+            #{report.wechat},
+            #{report.phoneConfirm},
+            #{report.phoneConnect},
+            #{report.consultEffective},
+            #{report.totalPlay},
+            #{report.validPlay},
+            #{report.wifiPlay},
+            #{report.playDurationSum},
+            #{report.play25FeedBreak},
+            #{report.play50FeedBreak},
+            #{report.play75FeedBreak},
+            #{report.play100FeedBreak},
+            #{report.advancedCreativePhoneClick},
+            #{report.advancedCreativeCounselClick},
+            #{report.advancedCreativeFormClick},
+            #{report.share},
+            #{report.comment},
+            #{report.likeNum},
+            #{report.follow},
+            #{report.homeVisited},
+            #{report.iesChallengeClick},
+            #{report.iesMusicClick},
+            #{report.interactPerCost},
+            #{report.nextDayOpen},
+            #{report.nextDayOpenRate},
+            #{report.nextDayOpenCost},
+            #{report.adId},
+            #{report.adName},
+            #{report.campaignId},
+            #{report.createTime},
+            #{report.updateTime},
+            #{report.creativeId
+            )
+        </foreach>
+    </insert>
 </mapper>

+ 1 - 1
module-report/src/main/java/cn/com/ctop/bytedance/service/IBytedanceCreativeDailyReportService.java

@@ -19,5 +19,5 @@ public interface IBytedanceCreativeDailyReportService extends IService<Bytedance
     List<BytedanceCreativeDailyReport> bytedanceCreativeAccountReportList(JSONObject json);
 
 
-
+    void replaceBatch(List<BytedanceCreativeDailyReport> dailyReports);
 }

+ 3 - 0
module-report/src/main/java/cn/com/ctop/bytedance/service/IBytedanceCreativeHourlyReportService.java

@@ -3,6 +3,8 @@ package cn.com.ctop.bytedance.service;
 import cn.com.ctop.bytedance.entity.BytedanceCreativeHourlyReport;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * @Description: 广告创意日报表信息
  * @Author: jeecg-boot
@@ -11,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IBytedanceCreativeHourlyReportService extends IService<BytedanceCreativeHourlyReport> {
 
+    void replaceBatch(List<BytedanceCreativeHourlyReport> hourlyReports);
 }

+ 5 - 3
module-report/src/main/java/cn/com/ctop/bytedance/service/impl/BytedanceCreativeDailyReportServiceImpl.java

@@ -2,14 +2,11 @@ package cn.com.ctop.bytedance.service.impl;
 
 import cn.com.ctop.bytedance.entity.BytedanceCreativeDailyReport;
 import cn.com.ctop.bytedance.mapper.BytedanceCreativeDailyReportMapper;
-import cn.com.ctop.bytedance.mapper.MaterialReportMapper;
 import cn.com.ctop.bytedance.service.IBytedanceCreativeDailyReportService;
 import cn.com.ctop.common.module.utils.Check;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -60,4 +57,9 @@ public class BytedanceCreativeDailyReportServiceImpl extends ServiceImpl<Bytedan
         return bytedanceCreativeDailyReportMapper.bytedanceCreativeAccountReport(paramsMap);
     }
 
+    @Override
+    public void replaceBatch(List<BytedanceCreativeDailyReport> dailyReports) {
+        bytedanceCreativeDailyReportMapper.replaceBatch(dailyReports);
+    }
+
 }

+ 9 - 0
module-report/src/main/java/cn/com/ctop/bytedance/service/impl/BytedanceCreativeHourlyReportServiceImpl.java

@@ -4,8 +4,11 @@ import cn.com.ctop.bytedance.entity.BytedanceCreativeHourlyReport;
 import cn.com.ctop.bytedance.mapper.BytedanceCreativeHourlyReportMapper;
 import cn.com.ctop.bytedance.service.IBytedanceCreativeHourlyReportService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * @Description: 广告创意日报表信息
  * @Author: jeecg-boot
@@ -14,5 +17,11 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class BytedanceCreativeHourlyReportServiceImpl extends ServiceImpl<BytedanceCreativeHourlyReportMapper, BytedanceCreativeHourlyReport> implements IBytedanceCreativeHourlyReportService {
+    @Autowired
+    private BytedanceCreativeHourlyReportMapper reportMapper;
 
+    @Override
+    public void replaceBatch(List<BytedanceCreativeHourlyReport> hourlyReports) {
+        reportMapper.replaceBatch(hourlyReports);
+    }
 }

+ 14 - 5
module-report/src/main/java/cn/com/ctop/bytedance/service/impl/ReportServiceImpl.java

@@ -219,7 +219,6 @@ public class ReportServiceImpl implements IReportService {
     }
 
     private void getPlanReportByPage(CtopOauthToken token, ByteDanceAdvertiserReportDTO conditions, int page) {
-        log.info("获取头条计划报表,accountId:{}", token.getAccountId());
         conditions.setPage(page);
         var config = new SerializeConfig();
         config.propertyNamingStrategy = PropertyNamingStrategy.SnakeCase;
@@ -228,12 +227,12 @@ public class ReportServiceImpl implements IReportService {
         var code = getObject.getInteger("code");
         var message = getObject.getString("message");
         if (null == code || code != 0) {
-            log.error("广告计划报表数据获取异常:{}", message);
+            log.error("广告计划报表数据获取异常=》account:{};message:{}", token.getAccountId(), message);
             return;
         }
         var dataArray = getObject.getJSONObject("data").getJSONArray("list");
         if (null == dataArray || dataArray.size() <= 0) {
-            log.info("广告计划报表获取完成=》accountId:{}", token.getAccountId());
+//            log.info("广告计划报表获取完成=》accountId:{}", token.getAccountId());
             return;
         }
         List<BytedancePlanHourlyReport> hourlyReports = new ArrayList<>();
@@ -327,16 +326,26 @@ public class ReportServiceImpl implements IReportService {
             log.info("广告创意报表信息为空=》accountId:{}", token.getAccountId());
             return;
         }
+        List<BytedanceCreativeHourlyReport> hourlyReports = new ArrayList<>();
+        List<BytedanceCreativeDailyReport> dailyReports = new ArrayList<>();
         for (var i = 0; i < dataArray.size(); i++) {
             var data = dataArray.getJSONObject(i);
             if (null != conditions.getTimeGranularity() && CtopAdConstant.BYTEDANCE_REPORT_TYPE_HOURLY.equals(conditions.getTimeGranularity())) {
                 var hourlyReport = new BytedanceCreativeHourlyReport(data, token.getAccountId());
-                creativeHourlyReportService.saveOrUpdate(hourlyReport);
+//                creativeHourlyReportService.saveOrUpdate(hourlyReport);
+                hourlyReports.add(hourlyReport);
             } else {
                 var dailyReport = new BytedanceCreativeDailyReport(data, token.getAccountId());
-                creativeDailyReportService.saveOrUpdate(dailyReport);
+//                creativeDailyReportService.saveOrUpdate(dailyReport);
+                dailyReports.add(dailyReport);
             }
         }
+
+        if (null != conditions.getTimeGranularity() && CtopAdConstant.BYTEDANCE_REPORT_TYPE_HOURLY.equals(conditions.getTimeGranularity())) {
+            creativeHourlyReportService.replaceBatch(hourlyReports);
+        } else {
+            creativeDailyReportService.replaceBatch(dailyReports);
+        }
         getCreativeReportByPage(token, conditions, page + 1);
     }