|
@@ -555,12 +555,13 @@ public class DataDashboardService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- @Scheduled(cron = "0 0 4 * * ?")
|
|
|
- public void scheduleIntermediateIndicatorsExport() {
|
|
|
+ @XxlJob("scheduleExportIntermediateIndicators")
|
|
|
+ public ReturnT<String> scheduleIntermediateIndicatorsExport(String param) {
|
|
|
List<String> dateStrList = DateUtils.getBeforeDays(null, 3);
|
|
|
for (String date : dateStrList) {
|
|
|
exportFeishuIntermediateIndicators(date, dateStrList, sheetToken, "OuaLWV");
|
|
|
}
|
|
|
+ return ReturnT.SUCCESS;
|
|
|
}
|
|
|
|
|
|
public void intermediateIndicatorsExport(String dateStr) {
|
|
@@ -601,8 +602,11 @@ public class DataDashboardService {
|
|
|
|
|
|
List<Pair<String, String>> styles = Arrays
|
|
|
.asList(
|
|
|
+ Pair.of("V", "#,##0.00"),
|
|
|
Pair.of("AH", "#,##0.00"),
|
|
|
Pair.of("AM", "#,##0.00"),
|
|
|
+ Pair.of("BB", "#,##0.00"),
|
|
|
+ Pair.of("BK", "#,##0.00"),
|
|
|
Pair.of("F", "0.00%"),
|
|
|
Pair.of("O", "0.00%"),
|
|
|
Pair.of("P", "0.00%"),
|
|
@@ -618,7 +622,18 @@ public class DataDashboardService {
|
|
|
Pair.of("AN", "0.00%"),
|
|
|
Pair.of("AO", "0.00%"),
|
|
|
Pair.of("AP", "0.00%"),
|
|
|
- Pair.of("AQ", "0.00%")
|
|
|
+ Pair.of("AQ", "0.00%"),
|
|
|
+ Pair.of("AV", "0.00%"),
|
|
|
+ Pair.of("AW", "0.00%"),
|
|
|
+ Pair.of("AX", "0.00%"),
|
|
|
+ Pair.of("BC", "0.00%"),
|
|
|
+ Pair.of("BD", "0.00%"),
|
|
|
+ Pair.of("BE", "0.00%"),
|
|
|
+ Pair.of("BF", "0.00%"),
|
|
|
+ Pair.of("BL", "0.00%"),
|
|
|
+ Pair.of("BM", "0.00%"),
|
|
|
+ Pair.of("BN", "0.00%"),
|
|
|
+ Pair.of("BO", "0.00%")
|
|
|
);
|
|
|
|
|
|
doSendFeishuSheet(dateStrs, sheetToken, sheetId, rowNum, rows, 3, styles);
|
|
@@ -645,7 +660,7 @@ public class DataDashboardService {
|
|
|
Map<String, Article> articleMap = articleList.stream().collect(Collectors.toMap(Article::getWxSn, o -> o));
|
|
|
List<Article> todayPublish = articleList.stream().filter(o -> o.getUpdateTime() > dateStart).collect(Collectors.toList());
|
|
|
if (CollectionUtils.isEmpty(todayPublish)) {
|
|
|
- return result;
|
|
|
+ return new ArrayList<>();
|
|
|
}
|
|
|
Map<String, List<Article>> hisPublishMap = articleList.stream().collect(Collectors.groupingBy(Article::getTitle));
|
|
|
List<String> wxSnList = articleList.stream().map(Article::getWxSn).distinct().collect(Collectors.toList());
|
|
@@ -691,7 +706,7 @@ public class DataDashboardService {
|
|
|
setPublishSourcePerformance(item, accountAvgInfoIndexMap, articleDetailInfoMap, publishSortLogMap,
|
|
|
type, scoreHisPublishTimeMap, wxsnHisDistinctSetMap, list);
|
|
|
// 发布未来表现
|
|
|
-// setPublishFuturePerformance(item, data, poolLevel, futurePublishMap, publishSortLogMap, small);
|
|
|
+ setPublishFuturePerformance(item, data, poolLevel, futurePublishMap, publishSortLogMap, small);
|
|
|
|
|
|
titles.add(data.getTitle());
|
|
|
poolTitles.add(data.getTitle());
|
|
@@ -705,34 +720,89 @@ public class DataDashboardService {
|
|
|
Map<String, Map<String, Map<Integer, PublishSortLog>>> publishSortLogMap,
|
|
|
List<String> small) {
|
|
|
List<Article> futurePublishList = futurePublishMap.get(data.getTitle());
|
|
|
- Integer futurePoolLevel = getArticlePoolLevel(data, futurePublishList, small);
|
|
|
+ if (CollectionUtils.isEmpty(futurePublishList)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ int futurePoolLevel = getArticlePoolLevel(data, futurePublishList, small);
|
|
|
if (futurePoolLevel > poolLevel) {
|
|
|
-
|
|
|
+ if (futurePoolLevel == 2) {
|
|
|
+ item.setPromotionCountL2(item.getPromotionCountL2() + 1);
|
|
|
+ item.setPromotionRateL2((item.getPromotionCountL2() * 1.0) / item.getActualArticleReleaseCount());
|
|
|
+ } else if (futurePoolLevel == 3) {
|
|
|
+ item.setPromotionCountL3(item.getPromotionCountL3() + 1);
|
|
|
+ item.setPromotionRateL3((item.getPromotionCountL3() * 1.0) / item.getActualArticleReleaseCount());
|
|
|
+ } else if (futurePoolLevel == 4) {
|
|
|
+ item.setPromotionCountL4(item.getPromotionCountL4() + 1);
|
|
|
+ item.setPromotionRateL4((item.getPromotionCountL4() * 1.0) / item.getActualArticleReleaseCount());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ item.setT1DayFirstLayerUV(item.getT1DayFirstLayerUV() + data.getSecondFirstLevel());
|
|
|
+ item.setT1DayT0FissionUV(item.getT1DayT0FissionUV() + data.getSecondFission0());
|
|
|
+ item.setT2DayFirstLayerUV(item.getT2DayFirstLayerUV() + data.getThirdFirstLevel());
|
|
|
+ item.setT2DayT0FissionUV(item.getT2DayT0FissionUV() + data.getThirdFission0());
|
|
|
+ item.setT1DayAccountArticleRelevanceAvg(item.getAccountArticleRelevanceAvg());
|
|
|
+ item.setT2DayAccountArticleRelevanceAvg(item.getAccountArticleRelevanceAvg());
|
|
|
+ item.setT1DayViewBase(item.getViewBase());
|
|
|
+ item.setT2DayViewBase(item.getViewBase());
|
|
|
+ item.setT1DayViewCount(item.getViewCount());
|
|
|
+ item.setT2DayViewCount(item.getViewCount());
|
|
|
+ double t1DayAverageViewToBaseRatio = item.getT1DayAverageViewToBaseRatio();
|
|
|
+ if (data.getViewCount() > 0 && data.getAvgViewCount() > 0) {
|
|
|
+ double t1DayViewToBaseRatio = data.getViewCount() / data.getAvgViewCount();
|
|
|
+ t1DayAverageViewToBaseRatio = (t1DayAverageViewToBaseRatio * (item.getActualArticleReleaseCount() - 1)
|
|
|
+ + t1DayViewToBaseRatio) / item.getActualArticleReleaseCount();
|
|
|
+ }
|
|
|
+ item.setT1DayAverageViewToBaseRatio(t1DayAverageViewToBaseRatio);
|
|
|
+ double t1DayAverageMiniAppOpenRate = item.getT1DayAverageMiniAppOpenRate();
|
|
|
+ if (data.getSecondFirstLevel() > 0 && data.getAvgViewCount() > 0) {
|
|
|
+ double t1DayMiniAppOpenRate = data.getSecondFirstLevel() / data.getAvgViewCount();
|
|
|
+ t1DayAverageMiniAppOpenRate = (t1DayAverageMiniAppOpenRate * (item.getActualArticleReleaseCount() - 1)
|
|
|
+ + t1DayMiniAppOpenRate) / item.getActualArticleReleaseCount();
|
|
|
+ }
|
|
|
+ item.setT1DayAverageMiniAppOpenRate(t1DayAverageMiniAppOpenRate);
|
|
|
+ double t1DayAverageT0FissionRate = item.getT1DayAverageT0FissionRate();
|
|
|
+ if (data.getSecondFission0() > 0 && data.getSecondFirstLevel() > 0) {
|
|
|
+ double t1DayT0FissionRate = data.getSecondFission0() / (double) data.getSecondFirstLevel();
|
|
|
+ t1DayAverageT0FissionRate = (t1DayAverageT0FissionRate * (item.getActualArticleReleaseCount() - 1)
|
|
|
+ + t1DayT0FissionRate) / item.getActualArticleReleaseCount();
|
|
|
+ }
|
|
|
+ item.setT1DayAverageT0FissionRate(t1DayAverageT0FissionRate);
|
|
|
+ double t1DayAverageFirstLayerFissionToViewBaseRatio = item.getT1DayAverageFirstLayerFissionToViewBaseRatio();
|
|
|
+ if (data.getSecondFission0() > 0 && data.getAvgViewCount() > 0) {
|
|
|
+ double t1DayFirstLayerFissionToViewBaseRatio = data.getSecondFission0() / data.getAvgViewCount();
|
|
|
+ t1DayAverageFirstLayerFissionToViewBaseRatio = (t1DayAverageFirstLayerFissionToViewBaseRatio * (item.getActualArticleReleaseCount() - 1)
|
|
|
+ + t1DayFirstLayerFissionToViewBaseRatio) / item.getActualArticleReleaseCount();
|
|
|
+ }
|
|
|
+ item.setT1DayAverageFirstLayerFissionToViewBaseRatio(t1DayAverageFirstLayerFissionToViewBaseRatio);
|
|
|
+ double t2DayAverageViewToBaseRatio = item.getT2DayAverageViewToBaseRatio();
|
|
|
+ if (data.getViewCount() > 0 && data.getAvgViewCount() > 0) {
|
|
|
+ double t2DayViewToBaseRatio = data.getViewCount() / data.getAvgViewCount();
|
|
|
+ t2DayAverageViewToBaseRatio = (t2DayAverageViewToBaseRatio * (item.getActualArticleReleaseCount() - 1)
|
|
|
+ + t2DayViewToBaseRatio) / item.getActualArticleReleaseCount();
|
|
|
+ }
|
|
|
+ item.setT2DayAverageViewToBaseRatio(t2DayAverageViewToBaseRatio);
|
|
|
+ double t2DayAverageMiniAppOpenRate = item.getT2DayAverageMiniAppOpenRate();
|
|
|
+ if (data.getThirdFirstLevel() > 0 && data.getAvgViewCount() > 0) {
|
|
|
+ double t2DayMiniAppOpenRate = data.getThirdFirstLevel() / data.getAvgViewCount();
|
|
|
+ t2DayAverageMiniAppOpenRate = (t2DayAverageMiniAppOpenRate * (item.getActualArticleReleaseCount() - 1)
|
|
|
+ + t2DayMiniAppOpenRate) / item.getActualArticleReleaseCount();
|
|
|
}
|
|
|
- item.setPromotionCountL2(item.getPromotionCountL2());
|
|
|
- item.setPromotionCountL3(item.getPromotionCountL3());
|
|
|
- item.setPromotionCountL4(item.getPromotionCountL4());
|
|
|
- item.setPromotionRateL2(item.getPromotionRateL2());
|
|
|
- item.setPromotionRateL3(item.getPromotionRateL3());
|
|
|
- item.setPromotionRateL4(item.getPromotionRateL4());
|
|
|
- item.setT1DayViewCount(item.getT1DayViewCount());
|
|
|
- item.setT1DayFirstLayerUV(item.getT1DayFirstLayerUV());
|
|
|
- item.setT1DayT0FissionUV(item.getT1DayT0FissionUV());
|
|
|
- item.setT1DayAccountArticleRelevanceAvg(item.getT1DayAccountArticleRelevanceAvg());
|
|
|
- item.setT1DayAverageViewToBaseRatio(item.getT1DayAverageViewToBaseRatio());
|
|
|
- item.setT1DayAverageMiniAppOpenRate(item.getT1DayAverageMiniAppOpenRate());
|
|
|
- item.setT1DayAverageT0FissionRate(item.getT1DayAverageT0FissionRate());
|
|
|
- item.setT1DayAverageFirstLayerFissionToViewBaseRatio(item.getT1DayAverageFirstLayerFissionToViewBaseRatio());
|
|
|
- item.setT1DayViewBase(item.getT1DayViewBase());
|
|
|
- item.setT2DayViewCount(item.getT2DayViewCount());
|
|
|
- item.setT2DayFirstLayerUV(item.getT2DayFirstLayerUV());
|
|
|
- item.setT2DayT0FissionUV(item.getT2DayT0FissionUV());
|
|
|
- item.setT2DayAccountArticleRelevanceAvg(item.getT2DayAccountArticleRelevanceAvg());
|
|
|
- item.setT2DayAverageViewToBaseRatio(item.getT2DayAverageViewToBaseRatio());
|
|
|
- item.setT2DayAverageMiniAppOpenRate(item.getT2DayAverageMiniAppOpenRate());
|
|
|
- item.setT2DayAverageT0FissionRate(item.getT2DayAverageT0FissionRate());
|
|
|
- item.setT2DayAverageFirstLayerFissionToViewBaseRatio(item.getT2DayAverageFirstLayerFissionToViewBaseRatio());
|
|
|
- item.setT2DayViewBase(item.getT2DayViewBase());
|
|
|
+ item.setT2DayAverageMiniAppOpenRate(t2DayAverageMiniAppOpenRate);
|
|
|
+ double t2DayAverageT0FissionRate = item.getT2DayAverageT0FissionRate();
|
|
|
+ if (data.getThirdFission0() > 0 && data.getSecondFirstLevel() > 0) {
|
|
|
+ double t2DayT0FissionRate = data.getThirdFission0() / (double) data.getSecondFirstLevel();
|
|
|
+ t2DayAverageT0FissionRate = (t2DayAverageT0FissionRate * (item.getActualArticleReleaseCount() - 1)
|
|
|
+ + t2DayT0FissionRate) / item.getActualArticleReleaseCount();
|
|
|
+ }
|
|
|
+ item.setT2DayAverageT0FissionRate(t2DayAverageT0FissionRate);
|
|
|
+ double t2DayAverageFirstLayerFissionToViewBaseRatio = item.getT2DayAverageFirstLayerFissionToViewBaseRatio();
|
|
|
+ if (data.getThirdFission0() > 0 && data.getAvgViewCount() > 0) {
|
|
|
+ double t2DayFirstLayerFissionToViewBaseRatio = data.getThirdFission0() / data.getAvgViewCount();
|
|
|
+ t2DayAverageFirstLayerFissionToViewBaseRatio = (t2DayAverageFirstLayerFissionToViewBaseRatio * (item.getActualArticleReleaseCount() - 1)
|
|
|
+ + t2DayFirstLayerFissionToViewBaseRatio) / item.getActualArticleReleaseCount();
|
|
|
+ }
|
|
|
+ item.setT2DayAverageFirstLayerFissionToViewBaseRatio(t2DayAverageFirstLayerFissionToViewBaseRatio);
|
|
|
+
|
|
|
item.setT3DayViewCount(item.getT3DayViewCount());
|
|
|
item.setT3DayFirstLayerUV(item.getT3DayFirstLayerUV());
|
|
|
item.setT3DayT0FissionUV(item.getT3DayT0FissionUV());
|
|
@@ -763,10 +833,20 @@ public class DataDashboardService {
|
|
|
continue;
|
|
|
}
|
|
|
Date minDate = articleDetailInfos.stream().map(ArticleDetailInfo::getRecallDt).min(Date::compareTo).orElse(new Date());
|
|
|
+ Date secondDate = articleDetailInfos.stream().map(ArticleDetailInfo::getRecallDt).filter(o -> o.after(minDate)).min(Date::compareTo).orElse(new Date());
|
|
|
+ Date thirdDate = articleDetailInfos.stream().map(ArticleDetailInfo::getRecallDt).filter(o -> o.after(secondDate)).min(Date::compareTo).orElse(new Date());
|
|
|
int sumFirstLevel = 0;
|
|
|
int sumFission0 = 0;
|
|
|
int sumFission1 = 0;
|
|
|
int sumFission2 = 0;
|
|
|
+ int sumSecondFirstLevel = 0;
|
|
|
+ int sumSecondFission0 = 0;
|
|
|
+ int sumSecondFission1 = 0;
|
|
|
+ int sumSecondFission2 = 0;
|
|
|
+ int sumThirdFirstLevel = 0;
|
|
|
+ int sumThirdFission0 = 0;
|
|
|
+ int sumThirdFission1 = 0;
|
|
|
+ int sumThirdFission2 = 0;
|
|
|
for (ArticleDetailInfo articleDetailInfo : articleDetailInfos) {
|
|
|
if (articleDetailInfo.getRecallDt().equals(minDate)) {
|
|
|
sumFirstLevel += Optional.ofNullable(articleDetailInfo.getFirstLevel()).orElse(0);
|
|
@@ -774,6 +854,18 @@ public class DataDashboardService {
|
|
|
sumFission1 += Optional.ofNullable(articleDetailInfo.getFission1()).orElse(0);
|
|
|
sumFission2 += Optional.ofNullable(articleDetailInfo.getFission2()).orElse(0);
|
|
|
}
|
|
|
+ if (articleDetailInfo.getRecallDt().equals(secondDate)) {
|
|
|
+ sumSecondFirstLevel += Optional.ofNullable(articleDetailInfo.getFirstLevel()).orElse(0);
|
|
|
+ sumSecondFission0 += Optional.ofNullable(articleDetailInfo.getFission0()).orElse(0);
|
|
|
+ sumSecondFission1 += Optional.ofNullable(articleDetailInfo.getFission1()).orElse(0);
|
|
|
+ sumSecondFission2 += Optional.ofNullable(articleDetailInfo.getFission2()).orElse(0);
|
|
|
+ }
|
|
|
+ if (articleDetailInfo.getRecallDt().equals(thirdDate)) {
|
|
|
+ sumThirdFirstLevel += Optional.ofNullable(articleDetailInfo.getFirstLevel()).orElse(0);
|
|
|
+ sumThirdFission0 += Optional.ofNullable(articleDetailInfo.getFission0()).orElse(0);
|
|
|
+ sumThirdFission1 += Optional.ofNullable(articleDetailInfo.getFission1()).orElse(0);
|
|
|
+ sumThirdFission2 += Optional.ofNullable(articleDetailInfo.getFission2()).orElse(0);
|
|
|
+ }
|
|
|
}
|
|
|
Map<String, Map<String, AccountAvgInfo>> dateAvgMap = accountAvgInfoIndexMap.get(article.getGhId());
|
|
|
String hisPublishDate = DateUtils.timestampToYMDStr(article.getUpdateTime(), "yyyy-MM-dd");
|
|
@@ -799,6 +891,14 @@ public class DataDashboardService {
|
|
|
obj.setFission0(sumFission0);
|
|
|
obj.setFission1(sumFission1);
|
|
|
obj.setFission2(sumFission2);
|
|
|
+ obj.setSecondFirstLevel(sumSecondFirstLevel);
|
|
|
+ obj.setSecondFission0(sumSecondFission0);
|
|
|
+ obj.setSecondFission1(sumSecondFission1);
|
|
|
+ obj.setSecondFission2(sumSecondFission2);
|
|
|
+ obj.setThirdFirstLevel(sumThirdFirstLevel);
|
|
|
+ obj.setThirdFission0(sumThirdFission0);
|
|
|
+ obj.setThirdFission1(sumThirdFission1);
|
|
|
+ obj.setThirdFission2(sumThirdFission2);
|
|
|
obj.setWxSn(article.getWxSn());
|
|
|
if (Objects.nonNull(avgInfo)) {
|
|
|
obj.setAccountMode(avgInfo.getAccountMode());
|
|
@@ -880,15 +980,27 @@ public class DataDashboardService {
|
|
|
}
|
|
|
item.setRedundantFirstLayerUV(item.getRedundantFirstLayerUV() + sumFirstLevel);
|
|
|
item.setRedundantT0FissionUV(item.getRedundantT0FissionUV() + sumFission0);
|
|
|
+ double averageMiniAppOpenRate = item.getAverageMiniAppOpenRate();
|
|
|
if (item.getRedundantFirstLayerUV() > 0 && item.getRedundantViewCount() > 0) {
|
|
|
- item.setAverageMiniAppOpenRate(item.getRedundantFirstLayerUV() / (double) item.getRedundantViewCount());
|
|
|
+ double miniAppOpenRate = item.getRedundantFirstLayerUV() / (double) item.getRedundantViewCount();
|
|
|
+ averageMiniAppOpenRate = (averageMiniAppOpenRate * (item.getActualArticleReleaseCount() - 1)
|
|
|
+ + miniAppOpenRate) / item.getActualArticleReleaseCount();
|
|
|
}
|
|
|
- if (item.getRedundantFirstLayerUV() > 0 && item.getRedundantT0FissionUV() > 0) {
|
|
|
- item.setAverageT0FissionRate(item.getRedundantT0FissionUV() / (double) item.getRedundantFirstLayerUV());
|
|
|
+ item.setAverageMiniAppOpenRate(averageMiniAppOpenRate);
|
|
|
+ double averageT0FissionRate = item.getAverageT0FissionRate();
|
|
|
+ if (item.getRedundantT0FissionUV() > 0 && item.getRedundantFirstLayerUV() > 0) {
|
|
|
+ double t0FissionRate = item.getRedundantT0FissionUV() / (double) item.getRedundantFirstLayerUV();
|
|
|
+ averageT0FissionRate = (averageT0FissionRate * (item.getActualArticleReleaseCount() - 1)
|
|
|
+ + t0FissionRate) / item.getActualArticleReleaseCount();
|
|
|
}
|
|
|
+ item.setAverageT0FissionRate(averageT0FissionRate);
|
|
|
+ double averageFirstLayerFissionToViewBaseRatio = item.getAverageFirstLayerFissionToViewBaseRatio();
|
|
|
if (item.getRedundantViewBase() > 0 && item.getRedundantT0FissionUV() > 0) {
|
|
|
- item.setAverageFirstLayerFissionToViewBaseRatio(item.getRedundantT0FissionUV() / (double) item.getRedundantViewBase());
|
|
|
+ double firstLayerFissionToViewBaseRatio = item.getRedundantT0FissionUV() / (double) item.getRedundantViewBase();
|
|
|
+ averageFirstLayerFissionToViewBaseRatio = (averageFirstLayerFissionToViewBaseRatio *
|
|
|
+ (item.getActualArticleReleaseCount() - 1) + firstLayerFissionToViewBaseRatio) / item.getActualArticleReleaseCount();
|
|
|
}
|
|
|
+ item.setAverageFirstLayerFissionToViewBaseRatio(averageFirstLayerFissionToViewBaseRatio);
|
|
|
Map<String, Map<Integer, PublishSortLog>> dateSortMap = publishSortLogMap.get(publish.getGhId());
|
|
|
if (Objects.nonNull(dateSortMap)) {
|
|
|
String publishDateStr = DateUtils.timestampToYMDStr(publish.getUpdateTime(), "yyyyMMdd");
|