|
@@ -3823,4 +3823,93 @@ public class DataDashboardService {
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ @XxlJob("categoryGroupFunnelExport")
|
|
|
+ public ReturnT<String> categoryGroupFunnelJob(String param) {
|
|
|
+ List<String> dateStrList = DateUtils.getBeforeDays(null, null, 1);
|
|
|
+ categoryGroupFunnel(dateStrList);
|
|
|
+ return ReturnT.SUCCESS;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void categoryGroupFunnel(String dateStr) {
|
|
|
+ if (!StringUtils.hasText(dateStr)) {
|
|
|
+ dateStr = DateUtils.getBeforeDaysDateStr("yyyyMMdd", 1);
|
|
|
+ }
|
|
|
+ categoryGroupFunnel(Collections.singletonList(dateStr));
|
|
|
+ }
|
|
|
+
|
|
|
+ public void categoryGroupFunnel(List<String> dateStrList) {
|
|
|
+ List<CategoryGroupFunnelExport> exportList = new ArrayList<>();
|
|
|
+ dateStrList = Lists.reverse(dateStrList);
|
|
|
+ for (String dateStr : dateStrList) {
|
|
|
+ exportList.addAll(buildCategoryGroupFunnelExport(dateStr));
|
|
|
+ }
|
|
|
+ if (CollectionUtil.isEmpty(exportList)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ int rowNum = exportList.size();
|
|
|
+ List<List<Object>> rows = new ArrayList<>();
|
|
|
+ Field[] fields = CategoryGroupFunnelExport.class.getDeclaredFields();
|
|
|
+ for (CategoryGroupFunnelExport datum : exportList) {
|
|
|
+ List<Object> rowDatas = new ArrayList<>();
|
|
|
+ rows.add(rowDatas);
|
|
|
+
|
|
|
+ for (Field field : fields) {
|
|
|
+ field.setAccessible(true);
|
|
|
+ try {
|
|
|
+ rowDatas.add(field.get(datum));
|
|
|
+ } catch (IllegalAccessException e) {
|
|
|
+ log.error("获取值出错:{}", field.getName());
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new RuntimeException(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Pair<String, String>> styles = Arrays
|
|
|
+ .asList(
|
|
|
+ Pair.of("E", "0.00%"),
|
|
|
+ Pair.of("H", "0.00%")
|
|
|
+ );
|
|
|
+ doSendFeishuSheet(dateStrList, dailyDetailSheetToken, "0Lwz8A", rowNum, rows,
|
|
|
+ 2, styles, null, null);
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<CategoryGroupFunnelExport> buildCategoryGroupFunnelExport(String dateStr) {
|
|
|
+ List<CategoryGroupFunnelExport> result = new ArrayList<>();
|
|
|
+ Long start = DateUtils.getStartOfDay(dateStr, "yyyyMMdd") * 1000;
|
|
|
+ Long end = start + 86400000;
|
|
|
+ Date dateStart = DateUtils.getStartDateOfDay(start / 1000);
|
|
|
+ Date dateEnd = DateUtils.getStartDateOfDay(end / 1000);
|
|
|
+ // 匹配
|
|
|
+ List<CategoryGroupFunnelExport> matchCategoryList = longArticleBaseMapper.getCategoryMatchCount(dateStart, dateEnd);
|
|
|
+ Map<String, CategoryGroupFunnelExport> categoryMap = matchCategoryList.stream()
|
|
|
+ .collect(Collectors.toMap(CategoryGroupFunnelExport::getCategory, Function.identity()));
|
|
|
+ for (CategoryGroupFunnelExport item : matchCategoryList) {
|
|
|
+ item.setDateStr(dateStr);
|
|
|
+ if (Objects.nonNull(item.getMatchCount()) && item.getMatchCount() > 0) {
|
|
|
+ item.setMatchSuccessRate((double) item.getMatchSuccessCount() / item.getMatchCount());
|
|
|
+ }
|
|
|
+ result.add(item);
|
|
|
+ }
|
|
|
+ // 视频审核
|
|
|
+ List<CategoryGroupFunnelExport> auditCategoryList = longArticleBaseMapper.getCategoryTitleAuditCount(start, end);
|
|
|
+ for (CategoryGroupFunnelExport item : auditCategoryList) {
|
|
|
+ CategoryGroupFunnelExport export = categoryMap.get(item.getCategory());
|
|
|
+ if (Objects.isNull(export)) {
|
|
|
+ export = new CategoryGroupFunnelExport();
|
|
|
+ export.setDateStr(dateStr);
|
|
|
+ export.setCategory(item.getCategory());
|
|
|
+ result.add(export);
|
|
|
+ }
|
|
|
+ export.setVideoAuditPassCount(item.getVideoAuditPassCount());
|
|
|
+ export.setVideoAuditCount(item.getVideoAuditCount());
|
|
|
+ if (Objects.nonNull(item.getVideoAuditCount()) && item.getVideoAuditCount() > 0) {
|
|
|
+ export.setVideoAuditPassRate((double) item.getVideoAuditPassCount() / item.getVideoAuditCount());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // sum
|
|
|
+ return result;
|
|
|
+ }
|
|
|
}
|