浏览代码

adq日报+重试

yumeng 1 年之前
父节点
当前提交
3efdd3a209

+ 33 - 2
job-adq/src/main/java/cn/com/ctop/job/adq/controller/AdqController.java

@@ -1,6 +1,7 @@
 package cn.com.ctop.job.adq.controller;
 
 import cn.com.ctop.job.adq.data.service.IAdqReportService;
+import cn.com.ctop.job.adq.data.service.IAdqRetryReportService;
 import cn.com.ctop.job.adq.data.utils.Check;
 import cn.com.ctop.job.adq.data.utils.DateUtils;
 import com.alibaba.fastjson.JSONObject;
@@ -31,7 +32,8 @@ public class AdqController {
     private static ExecutorService dailyExecutorService = Executors.newFixedThreadPool(3);
     @Autowired
     private IAdqReportService adqReportService;
-
+    @Autowired
+    private IAdqRetryReportService retryReportService;
 
     @GetMapping("/testCreativeHour")
     public JSONObject testRefreshToken(String date) {
@@ -44,7 +46,7 @@ public class AdqController {
             dailyExecutorService.submit(new Runnable() {
                 @Override
                 public void run() {
-                    adqReportService.getAdqCreativeHour(advertiserId, accessToken, date, date, 1);
+                    adqReportService.getAdqCreativeHour(advertiserId, accessToken, date, date, 1, 1);
                 }
             });
         }
@@ -52,4 +54,33 @@ public class AdqController {
     }
 
 
+    @GetMapping("/testCreativeDaily")
+    public JSONObject testCreativeDaily() {
+        List<JSONObject> accountList = adqReportService.getErrorLogs();
+        if (!Check.isNull(accountList)) {
+            for (int i = 0; i < accountList.size(); i++) {
+                JSONObject jsonObject = accountList.get(i);
+                Long id = jsonObject.getLong("id");
+                Long advertiserId = jsonObject.getLong("advertiserId");
+                String startDate = jsonObject.getString("startDate");
+                String endDate = jsonObject.getString("endDate");
+                String dataDimension = jsonObject.getString("dataDimension");
+                String dataType = jsonObject.getString("dataType");
+                String accessToken = jsonObject.getString("accessToken");
+
+                if ("creative".equals(dataDimension)) {
+                    if (dataType.equals("hour")) { // 广告时报
+                        retryReportService.getCreativeHourRetry(id, advertiserId, accessToken, startDate, endDate, 1);
+
+                    }
+                    if (dataType.equals("daily")) { // 广告日报
+                        retryReportService.getCreativeDailyRetry(id, advertiserId, accessToken, startDate, endDate, 1);
+                    }
+                }
+            }
+        }
+        return null;
+    }
+
+
 }

+ 297 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/entity/AdqCreativeReportDaily.java

@@ -0,0 +1,297 @@
+package cn.com.ctop.job.adq.data.entity;
+
+import java.math.BigDecimal;
+
+
+/**
+ * 广点通创意时报对象 adq_creative_report_hour
+ *
+ * @author ruoyi
+ * @date 2025-03-06
+ */
+public class AdqCreativeReportDaily {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 广告主ID
+     */
+    private Long advertiserId;
+
+    /**
+     * 广告组ID
+     */
+    private Long adgroupId;
+    private String adgroupName;
+
+    /**
+     * 创意ID
+     */
+    private Long dynamicCreativeId;
+
+    /**
+     * 创意名称
+     */
+    private String dynamicCreativeName;
+
+    /**
+     * 数据起始时间
+     */
+    private Long statTimeDay;
+
+
+    /**
+     * 消耗
+     */
+    private BigDecimal cost;
+
+    /**
+     * 展示
+     */
+    private Long viewCount;
+
+    /**
+     * 点击
+     */
+    private Long validClickCount;
+
+    /**
+     * 转化
+     */
+    private Long conversionsCount;
+
+    /**
+     * 深度转化
+     */
+    private Long deepConversionsCount;
+
+    /**
+     * APP激活次数
+     */
+    private Long activatedCount;
+
+    /**
+     * 注册次数
+     */
+    private Long regPv;
+
+    /**
+     * 次日留存次数
+     */
+    private Long retentionCount;
+
+    /**
+     * 视频有效播放次数
+     */
+    private Long videoOuterPlayCount;
+
+    /**
+     * 100%进度播放次数
+     */
+    private Long videoOuterPlay100Count;
+
+    /**
+     * 关键行为转化次数
+     */
+    private Long keyBehaviorConversionsCount;
+
+    /**
+     * 付费次数
+     */
+    private Long purchasePv;
+
+    /**
+     * 付费金额
+     */
+    private BigDecimal purchaseAmount;
+
+    /**
+     * 首次付费人数
+     */
+    private Long firstPayCount;
+
+    public Long getAdvertiserId() {
+        return advertiserId;
+    }
+
+    public void setAdvertiserId(Long advertiserId) {
+        this.advertiserId = advertiserId;
+    }
+
+    public Long getAdgroupId() {
+        return adgroupId;
+    }
+
+    public void setAdgroupId(Long adgroupId) {
+        this.adgroupId = adgroupId;
+    }
+
+    public String getAdgroupName() {
+        return adgroupName;
+    }
+
+    public void setAdgroupName(String adgroupName) {
+        this.adgroupName = adgroupName;
+    }
+
+    public Long getDynamicCreativeId() {
+        return dynamicCreativeId;
+    }
+
+    public void setDynamicCreativeId(Long dynamicCreativeId) {
+        this.dynamicCreativeId = dynamicCreativeId;
+    }
+
+    public String getDynamicCreativeName() {
+        return dynamicCreativeName;
+    }
+
+    public void setDynamicCreativeName(String dynamicCreativeName) {
+        this.dynamicCreativeName = dynamicCreativeName;
+    }
+
+    public Long getStatTimeDay() {
+        return statTimeDay;
+    }
+
+    public void setStatTimeDay(Long statTimeDay) {
+        this.statTimeDay = statTimeDay;
+    }
+
+    public BigDecimal getCost() {
+        return cost;
+    }
+
+    public void setCost(BigDecimal cost) {
+        this.cost = cost;
+    }
+
+    public Long getViewCount() {
+        return viewCount;
+    }
+
+    public void setViewCount(Long viewCount) {
+        this.viewCount = viewCount;
+    }
+
+    public Long getValidClickCount() {
+        return validClickCount;
+    }
+
+    public void setValidClickCount(Long validClickCount) {
+        this.validClickCount = validClickCount;
+    }
+
+    public Long getConversionsCount() {
+        return conversionsCount;
+    }
+
+    public void setConversionsCount(Long conversionsCount) {
+        this.conversionsCount = conversionsCount;
+    }
+
+    public Long getDeepConversionsCount() {
+        return deepConversionsCount;
+    }
+
+    public void setDeepConversionsCount(Long deepConversionsCount) {
+        this.deepConversionsCount = deepConversionsCount;
+    }
+
+    public Long getActivatedCount() {
+        return activatedCount;
+    }
+
+    public void setActivatedCount(Long activatedCount) {
+        this.activatedCount = activatedCount;
+    }
+
+    public Long getRegPv() {
+        return regPv;
+    }
+
+    public void setRegPv(Long regPv) {
+        this.regPv = regPv;
+    }
+
+    public Long getRetentionCount() {
+        return retentionCount;
+    }
+
+    public void setRetentionCount(Long retentionCount) {
+        this.retentionCount = retentionCount;
+    }
+
+    public Long getVideoOuterPlayCount() {
+        return videoOuterPlayCount;
+    }
+
+    public void setVideoOuterPlayCount(Long videoOuterPlayCount) {
+        this.videoOuterPlayCount = videoOuterPlayCount;
+    }
+
+    public Long getVideoOuterPlay100Count() {
+        return videoOuterPlay100Count;
+    }
+
+    public void setVideoOuterPlay100Count(Long videoOuterPlay100Count) {
+        this.videoOuterPlay100Count = videoOuterPlay100Count;
+    }
+
+    public Long getKeyBehaviorConversionsCount() {
+        return keyBehaviorConversionsCount;
+    }
+
+    public void setKeyBehaviorConversionsCount(Long keyBehaviorConversionsCount) {
+        this.keyBehaviorConversionsCount = keyBehaviorConversionsCount;
+    }
+
+    public Long getPurchasePv() {
+        return purchasePv;
+    }
+
+    public void setPurchasePv(Long purchasePv) {
+        this.purchasePv = purchasePv;
+    }
+
+    public BigDecimal getPurchaseAmount() {
+        return purchaseAmount;
+    }
+
+    public void setPurchaseAmount(BigDecimal purchaseAmount) {
+        this.purchaseAmount = purchaseAmount;
+    }
+
+    public Long getFirstPayCount() {
+        return firstPayCount;
+    }
+
+    public void setFirstPayCount(Long firstPayCount) {
+        this.firstPayCount = firstPayCount;
+    }
+
+    @Override
+    public String toString() {
+        return "AdqCreativeReportDaily{" +
+                "advertiserId=" + advertiserId +
+                ", adgroupId=" + adgroupId +
+                ", adgroupName='" + adgroupName + '\'' +
+                ", dynamicCreativeId=" + dynamicCreativeId +
+                ", dynamicCreativeName='" + dynamicCreativeName + '\'' +
+                ", statTimeDay=" + statTimeDay +
+                ", cost=" + cost +
+                ", viewCount=" + viewCount +
+                ", validClickCount=" + validClickCount +
+                ", conversionsCount=" + conversionsCount +
+                ", deepConversionsCount=" + deepConversionsCount +
+                ", activatedCount=" + activatedCount +
+                ", regPv=" + regPv +
+                ", retentionCount=" + retentionCount +
+                ", videoOuterPlayCount=" + videoOuterPlayCount +
+                ", videoOuterPlay100Count=" + videoOuterPlay100Count +
+                ", keyBehaviorConversionsCount=" + keyBehaviorConversionsCount +
+                ", purchasePv=" + purchasePv +
+                ", purchaseAmount=" + purchaseAmount +
+                ", firstPayCount=" + firstPayCount +
+                '}';
+    }
+}

+ 155 - 126
job-adq/src/main/java/cn/com/ctop/job/adq/data/entity/AdqCreativeReportHour.java

@@ -1,6 +1,7 @@
 package cn.com.ctop.job.adq.data.entity;
 
 import java.math.BigDecimal;
+
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
@@ -11,275 +12,303 @@ import org.apache.commons.lang3.builder.ToStringStyle;
  * @author ruoyi
  * @date 2025-03-06
  */
-public class AdqCreativeReportHour
-{
+public class AdqCreativeReportHour {
     private static final long serialVersionUID = 1L;
 
-    /** 广告主ID */
+    /**
+     * 广告主ID
+     */
     private Long advertiserId;
 
-    /** 广告组ID */
+    /**
+     * 广告组ID
+     */
     private Long adgroupId;
+    private String adgroupName;
 
-    /** 创意ID */
+    /**
+     * 创意ID
+     */
     private Long dynamicCreativeId;
 
-    /** 创意名称 */
+    /**
+     * 创意名称
+     */
     private String dynamicCreativeName;
 
-    /** 数据起始时间 */
+    /**
+     * 数据起始时间
+     */
     private Long statTimeDay;
 
-    /** 小时 */
+    /**
+     * 小时
+     */
     private Long hour;
 
-    /** 消耗 */
+    /**
+     * 消耗
+     */
     private BigDecimal cost;
 
-    /** 展示 */
+    /**
+     * 展示
+     */
     private Long viewCount;
 
-    /** 点击 */
+    /**
+     * 点击
+     */
     private Long validClickCount;
 
-    /** 转化 */
+    /**
+     * 转化
+     */
     private Long conversionsCount;
 
-    /** 深度转化 */
+    /**
+     * 深度转化
+     */
     private Long deepConversionsCount;
 
-    /** APP激活次数 */
+    /**
+     * APP激活次数
+     */
     private Long activatedCount;
 
-    /** 注册次数 */
+    /**
+     * 注册次数
+     */
     private Long regPv;
 
-    /** 次日留存次数 */
+    /**
+     * 次日留存次数
+     */
     private Long retentionCount;
 
-    /** 视频有效播放次数 */
+    /**
+     * 视频有效播放次数
+     */
     private Long videoOuterPlayCount;
 
-    /** 100%进度播放次数 */
+    /**
+     * 100%进度播放次数
+     */
     private Long videoOuterPlay100Count;
 
-    /** 关键行为转化次数 */
+    /**
+     * 关键行为转化次数
+     */
     private Long keyBehaviorConversionsCount;
 
-    /** 付费次数 */
+    /**
+     * 付费次数
+     */
     private Long purchasePv;
 
-    /** 付费金额 */
+    /**
+     * 付费金额
+     */
     private BigDecimal purchaseAmount;
 
-    /** 首次付费人数 */
+    /**
+     * 首次付费人数
+     */
     private Long firstPayCount;
 
-    public void setAdvertiserId(Long advertiserId)
-    {
+    public void setAdvertiserId(Long advertiserId) {
         this.advertiserId = advertiserId;
     }
 
-    public Long getAdvertiserId()
-    {
+    public Long getAdvertiserId() {
         return advertiserId;
     }
-    public void setAdgroupId(Long adgroupId)
-    {
+
+    public void setAdgroupId(Long adgroupId) {
         this.adgroupId = adgroupId;
     }
 
-    public Long getAdgroupId()
-    {
+    public Long getAdgroupId() {
         return adgroupId;
     }
-    public void setDynamicCreativeId(Long dynamicCreativeId)
-    {
+
+    public void setDynamicCreativeId(Long dynamicCreativeId) {
         this.dynamicCreativeId = dynamicCreativeId;
     }
 
-    public Long getDynamicCreativeId()
-    {
+    public Long getDynamicCreativeId() {
         return dynamicCreativeId;
     }
-    public void setDynamicCreativeName(String dynamicCreativeName)
-    {
+
+    public void setDynamicCreativeName(String dynamicCreativeName) {
         this.dynamicCreativeName = dynamicCreativeName;
     }
 
-    public String getDynamicCreativeName()
-    {
+    public String getDynamicCreativeName() {
         return dynamicCreativeName;
     }
-    public void setStatTimeDay(Long statTimeDay)
-    {
+
+    public void setStatTimeDay(Long statTimeDay) {
         this.statTimeDay = statTimeDay;
     }
 
-    public Long getStatTimeDay()
-    {
+    public Long getStatTimeDay() {
         return statTimeDay;
     }
-    public void setHour(Long hour)
-    {
+
+    public void setHour(Long hour) {
         this.hour = hour;
     }
 
-    public Long getHour()
-    {
+    public Long getHour() {
         return hour;
     }
-    public void setCost(BigDecimal cost)
-    {
+
+    public void setCost(BigDecimal cost) {
         this.cost = cost;
     }
 
-    public BigDecimal getCost()
-    {
+    public BigDecimal getCost() {
         return cost;
     }
-    public void setViewCount(Long viewCount)
-    {
+
+    public void setViewCount(Long viewCount) {
         this.viewCount = viewCount;
     }
 
-    public Long getViewCount()
-    {
+    public Long getViewCount() {
         return viewCount;
     }
-    public void setValidClickCount(Long validClickCount)
-    {
+
+    public void setValidClickCount(Long validClickCount) {
         this.validClickCount = validClickCount;
     }
 
-    public Long getValidClickCount()
-    {
+    public Long getValidClickCount() {
         return validClickCount;
     }
-    public void setConversionsCount(Long conversionsCount)
-    {
+
+    public void setConversionsCount(Long conversionsCount) {
         this.conversionsCount = conversionsCount;
     }
 
-    public Long getConversionsCount()
-    {
+    public Long getConversionsCount() {
         return conversionsCount;
     }
-    public void setDeepConversionsCount(Long deepConversionsCount)
-    {
+
+    public void setDeepConversionsCount(Long deepConversionsCount) {
         this.deepConversionsCount = deepConversionsCount;
     }
 
-    public Long getDeepConversionsCount()
-    {
+    public Long getDeepConversionsCount() {
         return deepConversionsCount;
     }
-    public void setActivatedCount(Long activatedCount)
-    {
+
+    public void setActivatedCount(Long activatedCount) {
         this.activatedCount = activatedCount;
     }
 
-    public Long getActivatedCount()
-    {
+    public Long getActivatedCount() {
         return activatedCount;
     }
-    public void setRegPv(Long regPv)
-    {
+
+    public void setRegPv(Long regPv) {
         this.regPv = regPv;
     }
 
-    public Long getRegPv()
-    {
+    public Long getRegPv() {
         return regPv;
     }
-    public void setRetentionCount(Long retentionCount)
-    {
+
+    public void setRetentionCount(Long retentionCount) {
         this.retentionCount = retentionCount;
     }
 
-    public Long getRetentionCount()
-    {
+    public Long getRetentionCount() {
         return retentionCount;
     }
-    public void setVideoOuterPlayCount(Long videoOuterPlayCount)
-    {
+
+    public void setVideoOuterPlayCount(Long videoOuterPlayCount) {
         this.videoOuterPlayCount = videoOuterPlayCount;
     }
 
-    public Long getVideoOuterPlayCount()
-    {
+    public Long getVideoOuterPlayCount() {
         return videoOuterPlayCount;
     }
-    public void setVideoOuterPlay100Count(Long videoOuterPlay100Count)
-    {
+
+    public void setVideoOuterPlay100Count(Long videoOuterPlay100Count) {
         this.videoOuterPlay100Count = videoOuterPlay100Count;
     }
 
-    public Long getVideoOuterPlay100Count()
-    {
+    public Long getVideoOuterPlay100Count() {
         return videoOuterPlay100Count;
     }
-    public void setKeyBehaviorConversionsCount(Long keyBehaviorConversionsCount)
-    {
+
+    public void setKeyBehaviorConversionsCount(Long keyBehaviorConversionsCount) {
         this.keyBehaviorConversionsCount = keyBehaviorConversionsCount;
     }
 
-    public Long getKeyBehaviorConversionsCount()
-    {
+    public Long getKeyBehaviorConversionsCount() {
         return keyBehaviorConversionsCount;
     }
-    public void setPurchasePv(Long purchasePv)
-    {
+
+    public void setPurchasePv(Long purchasePv) {
         this.purchasePv = purchasePv;
     }
 
-    public Long getPurchasePv()
-    {
+    public Long getPurchasePv() {
         return purchasePv;
     }
-    public void setPurchaseAmount(BigDecimal purchaseAmount)
-    {
+
+    public void setPurchaseAmount(BigDecimal purchaseAmount) {
         this.purchaseAmount = purchaseAmount;
     }
 
-    public BigDecimal getPurchaseAmount()
-    {
+    public BigDecimal getPurchaseAmount() {
         return purchaseAmount;
     }
-    public void setFirstPayCount(Long firstPayCount)
-    {
+
+    public void setFirstPayCount(Long firstPayCount) {
         this.firstPayCount = firstPayCount;
     }
 
-    public Long getFirstPayCount()
-    {
+    public Long getFirstPayCount() {
         return firstPayCount;
     }
 
+    public String getAdgroupName() {
+        return adgroupName;
+    }
+
+    public void setAdgroupName(String adgroupName) {
+        this.adgroupName = adgroupName;
+    }
+
     @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-                .append("advertiserId", getAdvertiserId())
-                .append("adgroupId", getAdgroupId())
-                .append("dynamicCreativeId", getDynamicCreativeId())
-                .append("dynamicCreativeName", getDynamicCreativeName())
-                .append("statTimeDay", getStatTimeDay())
-                .append("hour", getHour())
-                .append("cost", getCost())
-                .append("viewCount", getViewCount())
-                .append("validClickCount", getValidClickCount())
-                .append("conversionsCount", getConversionsCount())
-                .append("deepConversionsCount", getDeepConversionsCount())
-                .append("activatedCount", getActivatedCount())
-                .append("regPv", getRegPv())
-                .append("retentionCount", getRetentionCount())
-                .append("videoOuterPlayCount", getVideoOuterPlayCount())
-                .append("videoOuterPlay100Count", getVideoOuterPlay100Count())
-                .append("keyBehaviorConversionsCount", getKeyBehaviorConversionsCount())
-                .append("purchasePv", getPurchasePv())
-                .append("purchaseAmount", getPurchaseAmount())
-                .append("firstPayCount", getFirstPayCount())
-
-                .toString();
+    public String
+    toString() {
+        return "AdqCreativeReportHour{" +
+                "advertiserId=" + advertiserId +
+                ", adgroupId=" + adgroupId +
+                ", adgroupName='" + adgroupName + '\'' +
+                ", dynamicCreativeId=" + dynamicCreativeId +
+                ", dynamicCreativeName='" + dynamicCreativeName + '\'' +
+                ", statTimeDay=" + statTimeDay +
+                ", hour=" + hour +
+                ", cost=" + cost +
+                ", viewCount=" + viewCount +
+                ", validClickCount=" + validClickCount +
+                ", conversionsCount=" + conversionsCount +
+                ", deepConversionsCount=" + deepConversionsCount +
+                ", activatedCount=" + activatedCount +
+                ", regPv=" + regPv +
+                ", retentionCount=" + retentionCount +
+                ", videoOuterPlayCount=" + videoOuterPlayCount +
+                ", videoOuterPlay100Count=" + videoOuterPlay100Count +
+                ", keyBehaviorConversionsCount=" + keyBehaviorConversionsCount +
+                ", purchasePv=" + purchasePv +
+                ", purchaseAmount=" + purchaseAmount +
+                ", firstPayCount=" + firstPayCount +
+                '}';
     }
 }

+ 103 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/entity/AdqErrorLog.java

@@ -0,0 +1,103 @@
+package cn.com.ctop.job.adq.data.entity;
+
+
+/**
+ *
+ *
+ * @author ruoyi
+ * @date 2025-03-07
+ */
+public class AdqErrorLog {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+    /**
+     * 广告主ID
+     */
+    private Long advertiserId;
+
+    /**
+     * 开始日期
+     */
+    private String startDate;
+
+    /**
+     * 结束日期
+     */
+    private String endDate;
+
+    /**
+     * 数据纬度 promoter广告纬度
+     */
+    private String dataDimension;
+
+    /**
+     * hour:时报 daily:日报
+     */
+    private String dataType;
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setAdvertiserId(Long advertiserId) {
+        this.advertiserId = advertiserId;
+    }
+
+    public Long getAdvertiserId() {
+        return advertiserId;
+    }
+
+    public void setStartDate(String startDate) {
+        this.startDate = startDate;
+    }
+
+    public String getStartDate() {
+        return startDate;
+    }
+
+    public void setEndDate(String endDate) {
+        this.endDate = endDate;
+    }
+
+    public String getEndDate() {
+        return endDate;
+    }
+
+    public void setDataDimension(String dataDimension) {
+        this.dataDimension = dataDimension;
+    }
+
+    public String getDataDimension() {
+        return dataDimension;
+    }
+
+    public void setDataType(String dataType) {
+        this.dataType = dataType;
+    }
+
+    public String getDataType() {
+        return dataType;
+    }
+
+    @Override
+    public String
+    toString() {
+        return "BytedanceErrorLog{" +
+                "id=" + id +
+                ", advertiserId=" + advertiserId +
+                ", startDate='" + startDate + '\'' +
+                ", endDate='" + endDate + '\'' +
+                ", dataDimension='" + dataDimension + '\'' +
+                ", dataType='" + dataType + '\'' +
+                '}';
+    }
+}

+ 10 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/AdqReportMapper.java

@@ -1,6 +1,8 @@
 package cn.com.ctop.job.adq.data.mapper;
 
+import cn.com.ctop.job.adq.data.entity.AdqCreativeReportDaily;
 import cn.com.ctop.job.adq.data.entity.AdqCreativeReportHour;
+import cn.com.ctop.job.adq.data.entity.AdqErrorLog;
 import com.alibaba.fastjson.JSONObject;
 import org.apache.ibatis.annotations.Param;
 
@@ -10,4 +12,12 @@ public interface AdqReportMapper {
     void addsHourList(@Param("adds") List<AdqCreativeReportHour> hourList);
 
     List<JSONObject> getAccountList();
+
+    void addsDaily(@Param("adds") List<AdqCreativeReportDaily> dailies);
+
+    void replaceErrorInfo(AdqErrorLog errorInfo);
+
+    List<JSONObject> getErrorLogs();
+
+    void deleteInfoByErrorId(@Param("errorId") Long errorId);
 }

+ 4 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/AdqRetryReportMapper.java

@@ -0,0 +1,4 @@
+package cn.com.ctop.job.adq.data.mapper;
+
+public interface AdqRetryReportMapper {
+}

+ 82 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/xml/AdqReportMapper.xml

@@ -7,6 +7,7 @@
         replace into adq_creative_report_hour (
         advertiser_id,
         adgroup_id,
+        adgroup_name,
         dynamic_creative_id,
         dynamic_creative_name,
         stat_time_day,
@@ -32,6 +33,7 @@
 
             #{item.advertiserId},
             #{item.adgroupId},
+            #{item.adgroupName},
             #{item.dynamicCreativeId},
             #{item.dynamicCreativeName},
             #{item.statTimeDay},
@@ -53,10 +55,90 @@
             )
         </foreach>
     </insert>
+    <insert id="addsDaily">
+        replace into adq_creative_report_daily (
+        advertiser_id,
+        adgroup_id,
+        adgroup_name,
+        dynamic_creative_id,
+        dynamic_creative_name,
+        stat_time_day,
+        cost,
+        view_count,
+        valid_click_count,
+        conversions_count,
+        deep_conversions_count,
+        activated_count,
+        reg_pv,
+        retention_count,
+        video_outer_play_count,
+        video_outer_play100_count,
+        key_behavior_conversions_count,
+        purchase_pv,
+        purchase_amount,
+        first_pay_count
+        )
+        values
+        <foreach collection="adds" item="item" separator=",">
+            (
+            #{item.advertiserId},
+            #{item.adgroupId},
+            #{item.adgroupName},
+            #{item.dynamicCreativeId},
+            #{item.dynamicCreativeName},
+            #{item.statTimeDay},
+            #{item.cost},
+            #{item.viewCount},
+            #{item.validClickCount},
+            #{item.conversionsCount},
+            #{item.deepConversionsCount},
+            #{item.activatedCount},
+            #{item.regPv},
+            #{item.retentionCount},
+            #{item.videoOuterPlayCount},
+            #{item.videoOuterPlay100Count},
+            #{item.keyBehaviorConversionsCount},
+            #{item.purchasePv},
+            #{item.purchaseAmount},
+            #{item.firstPayCount}
+            )
+        </foreach>
+
+    </insert>
+    <insert id="replaceErrorInfo">
+        replace into adq_error_log
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="advertiserId != null">advertiser_id,</if>
+            <if test="startDate != null">start_date,</if>
+            <if test="endDate != null">end_date,</if>
+            <if test="dataDimension != null">data_dimension,</if>
+            <if test="dataType != null">data_type,</if>
+
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="advertiserId != null">#{advertiserId},</if>
+            <if test="startDate != null">#{startDate},</if>
+            <if test="endDate != null">#{endDate},</if>
+            <if test="dataDimension != null">#{dataDimension},</if>
+            <if test="dataType != null">#{dataType},</if>
+
+        </trim>
+    </insert>
+    <delete id="deleteInfoByErrorId">
+        DELETE
+        FROM adq_error_log
+        WHERE id = #{errorId}
+    </delete>
     <select id="getAccountList" resultType="com.alibaba.fastjson.JSONObject">
         SELECT t1.advertiser_id AS 'advertiserId', t2.access_token AS 'accessToken'
         FROM deepthink.adq_advertiser_list t1
                  LEFT JOIN deepthink.adq_auth_list t2 ON t1.admin_advertiser_id = t2.admin_advertiser_id
 
     </select>
+    <select id="getErrorLogs" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT t1.id AS 'id', t1.advertiser_id AS 'advertiserId', t1.start_date AS 'startDate', t1.end_date AS 'endDate', t1.data_dimension AS 'dataDimension', t1.data_type AS 'dataType', t3.access_token AS 'accessToken'
+        FROM adq_error_log t1
+                 LEFT JOIN deepthink.adq_advertiser_list t2 ON t1.advertiser_id = t2.advertiser_id
+                 LEFT JOIN deepthink.adq_auth_list t3 ON t2.admin_advertiser_id = t3.admin_advertiser_id
+    </select>
 </mapper>

+ 7 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/xml/AdqRetryReportMapper.xml

@@ -0,0 +1,7 @@
+<?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.job.adq.data.mapper.AdqRetryReportMapper">
+
+
+
+</mapper>

+ 5 - 1
job-adq/src/main/java/cn/com/ctop/job/adq/data/service/IAdqReportService.java

@@ -5,7 +5,11 @@ import com.alibaba.fastjson.JSONObject;
 import java.util.List;
 
 public interface IAdqReportService {
-    void getAdqCreativeHour(Long advertiserId, String accessToken, String startDate, String endDate,Integer page);
+    void getAdqCreativeHour(Long advertiserId, String accessToken, String startDate, String endDate,Integer page,Integer isLog);
 
     List<JSONObject> getAccountList();
+
+    void getAdqCreativeDaily(Long advertiserId, String accessToken, String date, String date1, Integer page,Integer isLog);
+
+    List<JSONObject> getErrorLogs();
 }

+ 7 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/service/IAdqRetryReportService.java

@@ -0,0 +1,7 @@
+package cn.com.ctop.job.adq.data.service;
+
+public interface IAdqRetryReportService {
+    void getCreativeHourRetry(Long id, Long advertiserId, String accessToken, String startDate, String endDate, Integer page);
+
+    void getCreativeDailyRetry(Long id, Long advertiserId, String accessToken, String startDate, String endDate, Integer page);
+}

+ 146 - 51
job-adq/src/main/java/cn/com/ctop/job/adq/data/service/impl/AdqReportServiceImpl.java

@@ -1,6 +1,8 @@
 package cn.com.ctop.job.adq.data.service.impl;
 
+import cn.com.ctop.job.adq.data.entity.AdqCreativeReportDaily;
 import cn.com.ctop.job.adq.data.entity.AdqCreativeReportHour;
+import cn.com.ctop.job.adq.data.entity.AdqErrorLog;
 import cn.com.ctop.job.adq.data.mapper.AdqReportMapper;
 import cn.com.ctop.job.adq.data.service.IAdqReportService;
 import cn.com.ctop.job.adq.data.utils.Check;
@@ -26,63 +28,78 @@ public class AdqReportServiceImpl implements IAdqReportService {
     private AdqReportMapper adqReportMapper;
 
     @Override
-    public void getAdqCreativeHour(Long advertiserId, String accessToken, String startDate, String endDate, Integer page) {
-        Map<String, Object> paramsMap = new HashMap<>();
-        paramsMap.put("access_token", accessToken);
-        long timestamp = Instant.now().getEpochSecond();
-        paramsMap.put("timestamp", String.valueOf(timestamp));
-        paramsMap.put("nonce", RandomStringGenerator.generateRandomString(32));
-        paramsMap.put("page", page);
-        paramsMap.put("page_size", 1000);
-        paramsMap.put("account_id", advertiserId);
-        paramsMap.put("level", "REPORT_LEVEL_DYNAMIC_CREATIVE");
-        JSONObject date_range = new JSONObject();
-        date_range.put("start_date", startDate);
-        date_range.put("end_date", endDate);
-        paramsMap.put("date_range", date_range);
-        JSONArray group_by = new JSONArray();
-        group_by.add("hour");
-        group_by.add("adgroup_id");
-        group_by.add("dynamic_creative_id");
-        paramsMap.put("group_by", group_by);
-        JSONArray fieldsList = FieldsConfig.getFieldsList();
-        paramsMap.put("fields", fieldsList);
-        Integer totalNumber = 0;
-        List<AdqCreativeReportHour> hourList = new ArrayList<>();
-        String s = HttpUtils.httpGet("https://api.e.qq.com/v3.0/hourly_reports/get", paramsMap, null);
-        JSONObject jsonObject = JSONObject.parseObject(s);
-        if (!Check.isNull(jsonObject)) {
-            Integer code = jsonObject.getInteger("code");
-            if (code == 0) {
-                JSONObject data = jsonObject.getJSONObject("data");
-                if (!Check.isNull(data)) {
-                    JSONObject pageInfo = data.getJSONObject("page_info");
-                    if (!Check.isNull(pageInfo)) {
-                        totalNumber = pageInfo.getInteger("total_number");
-                    }
+    public void getAdqCreativeHour(Long advertiserId, String accessToken, String startDate, String endDate, Integer page, Integer isLog) {
+        try {
+
 
-                    JSONArray list = data.getJSONArray("list");
-                    if (!Check.isNull(list)) {
-                        for (int i = 0; i < list.size(); i++) {
-                            JSONObject dataJson = list.getJSONObject(i);
-                            AdqCreativeReportHour hourReport = JSONObject.parseObject(dataJson.toJSONString(), AdqCreativeReportHour.class);
-                            hourReport.setAdvertiserId(advertiserId);
-                            hourReport.setStatTimeDay(Long.valueOf(startDate.replace("-", "")));
-                            hourList.add(hourReport);
+            Map<String, Object> paramsMap = new HashMap<>();
+            paramsMap.put("access_token", accessToken);
+            long timestamp = Instant.now().getEpochSecond();
+            paramsMap.put("timestamp", String.valueOf(timestamp));
+            paramsMap.put("nonce", RandomStringGenerator.generateRandomString(32));
+            paramsMap.put("page", page);
+            paramsMap.put("page_size", 1000);
+            paramsMap.put("account_id", advertiserId);
+            paramsMap.put("level", "REPORT_LEVEL_DYNAMIC_CREATIVE");
+            JSONObject date_range = new JSONObject();
+            date_range.put("start_date", startDate);
+            date_range.put("end_date", endDate);
+            paramsMap.put("date_range", date_range);
+            JSONArray group_by = new JSONArray();
+            group_by.add("hour");
+            group_by.add("adgroup_id");
+            group_by.add("dynamic_creative_id");
+            paramsMap.put("group_by", group_by);
+            JSONArray fieldsList = FieldsConfig.getFieldsList();
+            paramsMap.put("fields", fieldsList);
+            Integer totalNumber = 0;
+            List<AdqCreativeReportHour> hourList = new ArrayList<>();
+            String s = HttpUtils.httpGet("https://api.e.qq.com/v3.0/hourly_reports/get", paramsMap, null);
+            JSONObject jsonObject = JSONObject.parseObject(s);
+            if (!Check.isNull(jsonObject)) {
+                Integer code = jsonObject.getInteger("code");
+                if (code == 0) {
+                    JSONObject data = jsonObject.getJSONObject("data");
+                    if (!Check.isNull(data)) {
+                        JSONObject pageInfo = data.getJSONObject("page_info");
+                        if (!Check.isNull(pageInfo)) {
+                            totalNumber = pageInfo.getInteger("total_number");
+                        }
+                        JSONArray list = data.getJSONArray("list");
+                        if (!Check.isNull(list)) {
+                            for (int i = 0; i < list.size(); i++) {
+                                JSONObject dataJson = list.getJSONObject(i);
+                                AdqCreativeReportHour hourReport = JSONObject.parseObject(dataJson.toJSONString(), AdqCreativeReportHour.class);
+                                hourReport.setAdvertiserId(advertiserId);
+                                hourReport.setStatTimeDay(Long.valueOf(startDate.replace("-", "")));
+                                hourList.add(hourReport);
+                            }
                         }
                     }
+                } else {
+                    log.error("请求创意时报失败,account_id:{},返回信息:{}", advertiserId, jsonObject);
+                    if (isLog == 1) {
+                        AdqErrorLog errorInfo = new AdqErrorLog();
+                        errorInfo.setAdvertiserId(advertiserId);
+                        errorInfo.setStartDate(startDate);
+                        errorInfo.setEndDate(endDate);
+                        errorInfo.setDataDimension("creative");
+                        errorInfo.setDataType("hour");
+                        adqReportMapper.replaceErrorInfo(errorInfo);
+                    }
+                    return;
                 }
+            }
+            if (!Check.isNull(hourList)) {
+                adqReportMapper.addsHourList(hourList);
+            }
+            if (totalNumber >= 1000) {
+                getAdqCreativeHour(advertiserId, accessToken, startDate, endDate, page + 1, isLog);
             } else {
-                log.error("请求创意时报失败,account_id:{},返回信息:{}", advertiserId, jsonObject);
+                log.error("请求创意时报完成,account_id:{},日期:{}", advertiserId, startDate);
             }
-        }
-        if (!Check.isNull(hourList)) {
-            adqReportMapper.addsHourList(hourList);
-        }
-        if (totalNumber >= 1000) {
-            getAdqCreativeHour(advertiserId, accessToken, startDate, endDate, page + 1);
-        } else {
-            log.error("请求创意时报完成,account_id:{},日期:{}", advertiserId, startDate);
+        } catch (Exception e) {
+            e.printStackTrace();
         }
 
     }
@@ -91,4 +108,82 @@ public class AdqReportServiceImpl implements IAdqReportService {
     public List<JSONObject> getAccountList() {
         return adqReportMapper.getAccountList();
     }
+
+    @Override
+    public void getAdqCreativeDaily(Long advertiserId, String accessToken, String startDate, String endDate, Integer page, Integer isLog) {
+        try {
+            Map<String, Object> paramsMap = new HashMap<>();
+            paramsMap.put("access_token", accessToken);
+            long timestamp = Instant.now().getEpochSecond();
+            paramsMap.put("timestamp", String.valueOf(timestamp));
+            paramsMap.put("nonce", RandomStringGenerator.generateRandomString(32));
+            paramsMap.put("page", page);
+            paramsMap.put("page_size", 1000);
+            paramsMap.put("account_id", advertiserId);
+            paramsMap.put("level", "REPORT_LEVEL_DYNAMIC_CREATIVE");
+            JSONObject date_range = new JSONObject();
+            date_range.put("start_date", startDate);
+            date_range.put("end_date", endDate);
+            paramsMap.put("date_range", date_range);
+            JSONArray group_by = new JSONArray();
+            group_by.add("adgroup_id");
+            group_by.add("dynamic_creative_id");
+            paramsMap.put("group_by", group_by);
+            JSONArray fieldsList = FieldsConfig.getFieldsList();
+            paramsMap.put("fields", fieldsList);
+            Integer totalNumber = 0;
+            List<AdqCreativeReportDaily> dailies = new ArrayList<>();
+            String s = HttpUtils.httpGet("https://api.e.qq.com/v3.0/hourly_reports/get", paramsMap, null);
+            JSONObject jsonObject = JSONObject.parseObject(s);
+            if (!Check.isNull(jsonObject)) {
+                Integer code = jsonObject.getInteger("code");
+                if (code == 0) {
+                    JSONObject data = jsonObject.getJSONObject("data");
+                    if (!Check.isNull(data)) {
+                        JSONObject pageInfo = data.getJSONObject("page_info");
+                        if (!Check.isNull(pageInfo)) {
+                            totalNumber = pageInfo.getInteger("total_number");
+                        }
+                        JSONArray list = data.getJSONArray("list");
+                        if (!Check.isNull(list)) {
+                            for (int i = 0; i < list.size(); i++) {
+                                JSONObject dataJson = list.getJSONObject(i);
+                                AdqCreativeReportDaily hourReport = JSONObject.parseObject(dataJson.toJSONString(), AdqCreativeReportDaily.class);
+                                hourReport.setAdvertiserId(advertiserId);
+                                hourReport.setStatTimeDay(Long.valueOf(startDate.replace("-", "")));
+                                dailies.add(hourReport);
+                            }
+                        }
+                    }
+                } else {
+                    log.error("请求创意日报失败,account_id:{},返回信息:{}", advertiserId, jsonObject);
+                    if (isLog == 1) {
+                        AdqErrorLog errorInfo = new AdqErrorLog();
+                        errorInfo.setAdvertiserId(advertiserId);
+                        errorInfo.setStartDate(startDate);
+                        errorInfo.setEndDate(endDate);
+                        errorInfo.setDataDimension("creative");
+                        errorInfo.setDataType("daily");
+                        adqReportMapper.replaceErrorInfo(errorInfo);
+                    }
+                    return;
+                }
+            }
+            if (!Check.isNull(dailies)) {
+                adqReportMapper.addsDaily(dailies);
+            }
+            if (totalNumber >= 1000) {
+                getAdqCreativeDaily(advertiserId, accessToken, startDate, endDate, page + 1, isLog);
+            } else {
+                log.error("请求创意日报完成,account_id:{},日期:{}", advertiserId, startDate);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public List<JSONObject> getErrorLogs() {
+        return adqReportMapper.getErrorLogs();
+    }
 }

+ 158 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/service/impl/AdqRetryReportServiceImpl.java

@@ -0,0 +1,158 @@
+package cn.com.ctop.job.adq.data.service.impl;
+
+import cn.com.ctop.job.adq.data.entity.AdqCreativeReportDaily;
+import cn.com.ctop.job.adq.data.entity.AdqCreativeReportHour;
+import cn.com.ctop.job.adq.data.mapper.AdqReportMapper;
+import cn.com.ctop.job.adq.data.service.IAdqRetryReportService;
+import cn.com.ctop.job.adq.data.utils.Check;
+import cn.com.ctop.job.adq.data.utils.FieldsConfig;
+import cn.com.ctop.job.adq.data.utils.HttpUtils;
+import cn.com.ctop.job.adq.utils.RandomStringGenerator;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static jdk.nashorn.internal.runtime.regexp.joni.Config.log;
+
+@Slf4j
+@Service
+public class AdqRetryReportServiceImpl implements IAdqRetryReportService {
+    @Autowired
+    private AdqReportMapper adqReportMapper;
+
+    @Override
+    public void getCreativeHourRetry(Long errorId, Long advertiserId, String accessToken, String startDate, String endDate, Integer page) {
+        Map<String, Object> paramsMap = new HashMap<>();
+        paramsMap.put("access_token", accessToken);
+        long timestamp = Instant.now().getEpochSecond();
+        paramsMap.put("timestamp", String.valueOf(timestamp));
+        paramsMap.put("nonce", RandomStringGenerator.generateRandomString(32));
+        paramsMap.put("page", page);
+        paramsMap.put("page_size", 1000);
+        paramsMap.put("account_id", advertiserId);
+        paramsMap.put("level", "REPORT_LEVEL_DYNAMIC_CREATIVE");
+        JSONObject date_range = new JSONObject();
+        date_range.put("start_date", startDate);
+        date_range.put("end_date", endDate);
+        paramsMap.put("date_range", date_range);
+        JSONArray group_by = new JSONArray();
+        group_by.add("hour");
+        group_by.add("adgroup_id");
+        group_by.add("dynamic_creative_id");
+        paramsMap.put("group_by", group_by);
+        JSONArray fieldsList = FieldsConfig.getFieldsList();
+        paramsMap.put("fields", fieldsList);
+        Integer totalNumber = 0;
+        List<AdqCreativeReportHour> hourList = new ArrayList<>();
+        String s = HttpUtils.httpGet("https://api.e.qq.com/v3.0/hourly_reports/get", paramsMap, null);
+        JSONObject jsonObject = JSONObject.parseObject(s);
+        if (!Check.isNull(jsonObject)) {
+            Integer code = jsonObject.getInteger("code");
+            if (code == 0) {
+                JSONObject data = jsonObject.getJSONObject("data");
+                if (!Check.isNull(data)) {
+                    JSONObject pageInfo = data.getJSONObject("page_info");
+                    if (!Check.isNull(pageInfo)) {
+                        totalNumber = pageInfo.getInteger("total_number");
+                    }
+                    JSONArray list = data.getJSONArray("list");
+                    if (!Check.isNull(list)) {
+                        for (int i = 0; i < list.size(); i++) {
+                            JSONObject dataJson = list.getJSONObject(i);
+                            AdqCreativeReportHour hourReport = JSONObject.parseObject(dataJson.toJSONString(), AdqCreativeReportHour.class);
+                            hourReport.setAdvertiserId(advertiserId);
+                            hourReport.setStatTimeDay(Long.valueOf(startDate.replace("-", "")));
+                            hourList.add(hourReport);
+                        }
+                    }
+                }
+            } else {
+                log.error("请求创意时报失败,account_id:{},返回信息:{}", advertiserId, jsonObject);
+                return;
+            }
+        }
+        if (!Check.isNull(hourList)) {
+            adqReportMapper.addsHourList(hourList);
+        }
+        if (totalNumber >= 1000) {
+            getCreativeHourRetry(errorId, advertiserId, accessToken, startDate, endDate, page + 1);
+        } else {
+            log.error("请求创意时报完成,account_id:{},日期:{}", advertiserId, startDate);
+            adqReportMapper.deleteInfoByErrorId(errorId);
+        }
+    }
+
+    @Override
+    public void getCreativeDailyRetry(Long errorId, Long advertiserId, String accessToken, String startDate, String endDate, Integer page) {
+
+        try {
+            Map<String, Object> paramsMap = new HashMap<>();
+            paramsMap.put("access_token", accessToken);
+            long timestamp = Instant.now().getEpochSecond();
+            paramsMap.put("timestamp", String.valueOf(timestamp));
+            paramsMap.put("nonce", RandomStringGenerator.generateRandomString(32));
+            paramsMap.put("page", page);
+            paramsMap.put("page_size", 1000);
+            paramsMap.put("account_id", advertiserId);
+            paramsMap.put("level", "REPORT_LEVEL_DYNAMIC_CREATIVE");
+            JSONObject date_range = new JSONObject();
+            date_range.put("start_date", startDate);
+            date_range.put("end_date", endDate);
+            paramsMap.put("date_range", date_range);
+            JSONArray group_by = new JSONArray();
+            group_by.add("adgroup_id");
+            group_by.add("dynamic_creative_id");
+            paramsMap.put("group_by", group_by);
+            JSONArray fieldsList = FieldsConfig.getFieldsList();
+            paramsMap.put("fields", fieldsList);
+            Integer totalNumber = 0;
+            List<AdqCreativeReportDaily> dailies = new ArrayList<>();
+            String s = HttpUtils.httpGet("https://api.e.qq.com/v3.0/hourly_reports/get", paramsMap, null);
+            JSONObject jsonObject = JSONObject.parseObject(s);
+            if (!Check.isNull(jsonObject)) {
+                Integer code = jsonObject.getInteger("code");
+                if (code == 0) {
+                    JSONObject data = jsonObject.getJSONObject("data");
+                    if (!Check.isNull(data)) {
+                        JSONObject pageInfo = data.getJSONObject("page_info");
+                        if (!Check.isNull(pageInfo)) {
+                            totalNumber = pageInfo.getInteger("total_number");
+                        }
+                        JSONArray list = data.getJSONArray("list");
+                        if (!Check.isNull(list)) {
+                            for (int i = 0; i < list.size(); i++) {
+                                JSONObject dataJson = list.getJSONObject(i);
+                                AdqCreativeReportDaily hourReport = JSONObject.parseObject(dataJson.toJSONString(), AdqCreativeReportDaily.class);
+                                hourReport.setAdvertiserId(advertiserId);
+                                hourReport.setStatTimeDay(Long.valueOf(startDate.replace("-", "")));
+                                dailies.add(hourReport);
+                            }
+                        }
+                    }
+                } else {
+                    log.error("请求创意日报失败,account_id:{},返回信息:{}", advertiserId, jsonObject);
+                    return;
+                }
+            }
+            if (!Check.isNull(dailies)) {
+                adqReportMapper.addsDaily(dailies);
+            }
+            if (totalNumber >= 1000) {
+                getCreativeDailyRetry(errorId, advertiserId, accessToken, startDate, endDate, page + 1);
+            } else {
+                log.error("请求创意日报完成,account_id:{},日期:{}", advertiserId, startDate);
+                adqReportMapper.deleteInfoByErrorId(errorId);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 1 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/utils/FieldsConfig.java

@@ -11,6 +11,7 @@ public class FieldsConfig {
         JSONArray fields = new JSONArray();
         fields.add("account_id");
         fields.add("adgroup_id");
+        fields.add("adgroup_name");
         fields.add("hour");
         fields.add("dynamic_creative_id");
         fields.add("dynamic_creative_name");

+ 25 - 2
job-adq/src/main/java/cn/com/ctop/job/adq/handler/AdqCreativeReportJob.java

@@ -23,6 +23,7 @@ import java.util.concurrent.Executors;
 @Component
 public class AdqCreativeReportJob {
     private static ExecutorService hourExecutorService = Executors.newFixedThreadPool(3);
+    private static ExecutorService dailyExecutorService = Executors.newFixedThreadPool(3);
     @Autowired
     private IAdqReportService adqReportService;
 
@@ -41,7 +42,7 @@ public class AdqCreativeReportJob {
         hourExecutorService.submit(new Runnable() {
             @Override
             public void run() {
-                adqReportService.getAdqCreativeHour(advertiserId, accessToken, nowDate, nowDate, 1);
+                adqReportService.getAdqCreativeHour(advertiserId, accessToken, nowDate, nowDate, 1, 2);
             }
         });
     }
@@ -63,7 +64,29 @@ public class AdqCreativeReportJob {
         hourExecutorService.submit(new Runnable() {
             @Override
             public void run() {
-                adqReportService.getAdqCreativeHour(advertiserId, accessToken, yesDate, yesDate, 1);
+                adqReportService.getAdqCreativeHour(advertiserId, accessToken, yesDate, yesDate, 1, 1);
+            }
+        });
+    }
+
+
+    @XxlJob("yesDateCreativeDaily")
+    public void yesDateCreativeDaily() throws Exception {
+        String param = XxlJobHelper.getJobParam(); // 执行参数
+        if (Check.isNull(param)) {
+            log.error("入参为空");
+            return;
+        }
+
+        String nowDate = DateUtils.getNowDate("yyyy-MM-dd");
+        String yesDate = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, -1);
+        String[] s = param.split("_");
+        Long advertiserId = Long.valueOf(s[0]);
+        String accessToken = s[1];
+        dailyExecutorService.submit(new Runnable() {
+            @Override
+            public void run() {
+                adqReportService.getAdqCreativeDaily(advertiserId, accessToken, yesDate, yesDate, 1, 1);
             }
         });
     }

+ 85 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/handler/AdqRetryReportJob.java

@@ -0,0 +1,85 @@
+package cn.com.ctop.job.adq.handler;
+
+
+import cn.com.ctop.job.adq.data.service.IAdqReportService;
+import cn.com.ctop.job.adq.data.service.IAdqRetryReportService;
+import cn.com.ctop.job.adq.data.utils.Check;
+import cn.com.ctop.job.adq.data.utils.DateUtils;
+import com.alibaba.fastjson.JSONObject;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+
+/**
+ * 广告主定时任务
+ *
+ * @throws Exception
+ */
+@Slf4j
+@Component
+public class AdqRetryReportJob {
+
+    private static ExecutorService dailyExecutorService = Executors.newFixedThreadPool(2);
+    private static ExecutorService hourrExecutorService = Executors.newFixedThreadPool(2);
+
+
+    @Autowired
+    private IAdqReportService adqReportService;
+    @Autowired
+    private IAdqRetryReportService retryReportService;
+
+    @XxlJob("adqRetryReport")
+    public void promoterReport() throws Exception {
+        List<JSONObject> accountList = adqReportService.getErrorLogs();
+        if (!Check.isNull(accountList)) {
+            for (int i = 0; i < accountList.size(); i++) {
+                JSONObject jsonObject = accountList.get(i);
+                Long id = jsonObject.getLong("id");
+                Long advertiserId = jsonObject.getLong("advertiserId");
+                String startDate = jsonObject.getString("startDate");
+                String endDate = jsonObject.getString("endDate");
+                String dataDimension = jsonObject.getString("dataDimension");
+                String dataType = jsonObject.getString("dataType");
+                String accessToken = jsonObject.getString("accessToken");
+
+                if ("creative".equals(dataDimension)) {
+                    if (dataType.equals("hour")) { // 广告时报
+                        hourrExecutorService.submit(new Runnable() {
+                            @Override
+                            public void run() {
+                                if (!Check.isNull(accessToken)) {
+                                    retryReportService.getCreativeHourRetry(id, advertiserId, accessToken, startDate, endDate, 1);
+                                }
+                            }
+                        });
+                    }
+                    if (dataType.equals("daily")) { // 广告日报
+                        dailyExecutorService.submit(new Runnable() {
+                            @Override
+                            public void run() {
+                                if (!Check.isNull(accessToken)) {
+                                    retryReportService.getCreativeDailyRetry(id, advertiserId, accessToken, startDate, endDate, 1);
+
+                                }
+                            }
+                        });
+                    }
+                }
+
+
+            }
+
+        } else {
+            log.info("重试列表为空");
+        }
+
+    }
+
+}