瀏覽代碼

每日生成计划审核报表

wangyunpeng 6 月之前
父節點
當前提交
9ab0bb8712

+ 3 - 1
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/mapper/aigc/AigcBaseMapper.java

@@ -61,7 +61,9 @@ public interface AigcBaseMapper {
 
     List<CrawlerPlan> getColdCrawlerPlan(Long timeStart, Long timeEnd, List<String> planTags);
 
-    List<ProducePlanAuditCheckDTO> getColdProducePlanAudit(Long timeStart, Long timeEnd, List<String> planIds);
+    List<ProducePlanAuditCheckDTO> getProducePlanAudit(Long timeStart, Long timeEnd, List<String> planIds);
+
+    List<ProducePlanAuditCheckDTO> getProducePlanProduce(Long timeStart, Long timeEnd, List<String> planIds);
 
     List<PublishAccountTypeDTO> getAccountTypeList();
 }

+ 15 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/vo/ProducePlanAuditExport.java

@@ -0,0 +1,15 @@
+package com.tzld.longarticle.recommend.server.model.vo;
+
+import lombok.Data;
+
+@Data
+public class ProducePlanAuditExport {
+
+    private String dateStr;
+    private String planName;
+    private Integer hisNotAuditCount;
+    private Integer produceCount;
+    private Integer auditCount;
+    private Integer auditPassCount;
+    private Integer auditFailCount;
+}

+ 2 - 2
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/XxlJobService.java

@@ -264,7 +264,7 @@ public class XxlJobService {
         List<String> planIds = Arrays.asList("20241030070010871546586", "20240802080355355308981", "20240802021606053813696");
         List<ProducePlan> producePlans = producePlanRepository.findByIdIn(planIds);
         Map<String, String> producePlanMap = producePlans.stream().collect(Collectors.toMap(ProducePlan::getId, ProducePlan::getName));
-        List<ProducePlanAuditCheckDTO> producePlanList = aigcBaseMapper.getColdProducePlanAudit(
+        List<ProducePlanAuditCheckDTO> producePlanList = aigcBaseMapper.getProducePlanAudit(
                 timeStamp, timeStamp + 86400000, planIds);
         Map<String, List<ProducePlanAuditCheckDTO>> producePlanAuditMap = producePlanList.stream()
                 .collect(Collectors.groupingBy(ProducePlanAuditCheckDTO::getPlanId));
@@ -309,7 +309,7 @@ public class XxlJobService {
                 "20240802021606053813696");
         List<ProducePlan> producePlans = producePlanRepository.findByIdIn(planIds);
         Map<String, String> producePlanMap = producePlans.stream().collect(Collectors.toMap(ProducePlan::getId, ProducePlan::getName));
-        List<ProducePlanAuditCheckDTO> producePlanList = aigcBaseMapper.getColdProducePlanAudit(
+        List<ProducePlanAuditCheckDTO> producePlanList = aigcBaseMapper.getProducePlanAudit(
                 timeStamp, timeStamp + 86400000, planIds);
         Map<String, List<ProducePlanAuditCheckDTO>> producePlanAuditMap = producePlanList.stream()
                 .collect(Collectors.groupingBy(ProducePlanAuditCheckDTO::getPlanId));

+ 96 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recommend/DataDashboardService.java

@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
 import com.google.common.collect.Lists;
 import com.tzld.longarticle.recommend.server.common.enums.StatusEnum;
+import com.tzld.longarticle.recommend.server.common.enums.aigc.ProduceContentAuditStatusEnum;
 import com.tzld.longarticle.recommend.server.common.enums.recommend.AccountBusinessTypeEnum;
 import com.tzld.longarticle.recommend.server.common.enums.recommend.ArticleTypeEnum;
 import com.tzld.longarticle.recommend.server.common.enums.recommend.ContentPoolEnum;
@@ -14,6 +15,7 @@ import com.tzld.longarticle.recommend.server.common.enums.recommend.RankStrategy
 import com.tzld.longarticle.recommend.server.mapper.aigc.AigcBaseMapper;
 import com.tzld.longarticle.recommend.server.mapper.longArticle.LongArticleBaseMapper;
 import com.tzld.longarticle.recommend.server.model.dto.ProduceContentDTO;
+import com.tzld.longarticle.recommend.server.model.dto.ProducePlanAuditCheckDTO;
 import com.tzld.longarticle.recommend.server.model.dto.PublishContentDTO;
 import com.tzld.longarticle.recommend.server.model.entity.aigc.*;
 import com.tzld.longarticle.recommend.server.model.entity.crawler.AccountAvgInfo;
@@ -28,6 +30,7 @@ import com.tzld.longarticle.recommend.server.model.param.PublishContentParam;
 import com.tzld.longarticle.recommend.server.model.vo.FirstContentScoreExport;
 import com.tzld.longarticle.recommend.server.model.vo.IntermediateIndicatorsExport;
 import com.tzld.longarticle.recommend.server.model.vo.NewSortStrategyExport;
+import com.tzld.longarticle.recommend.server.model.vo.ProducePlanAuditExport;
 import com.tzld.longarticle.recommend.server.model.vo.aigc.ProduceAuditLayoutContentObjVO;
 import com.tzld.longarticle.recommend.server.repository.aigc.*;
 import com.tzld.longarticle.recommend.server.repository.crawler.AccountAvgInfoRepository;
@@ -1726,4 +1729,97 @@ public class DataDashboardService {
         }
     }
 
+    public void producePlanAuditExport(String dateStr) {
+        if (!StringUtils.hasText(dateStr)) {
+            dateStr = DateUtils.getBeforeDaysDateStr("yyyyMMdd", 1);
+        }
+        List<ProducePlanAuditExport> exportList = buildProducePlanAuditExport(dateStr);
+        if (CollectionUtil.isEmpty(exportList)) {
+            return;
+        }
+        int rowNum = exportList.size();
+        List<List<Object>> rows = new ArrayList<>();
+        Field[] fields = ProducePlanAuditExport.class.getDeclaredFields();
+        for (ProducePlanAuditExport 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());
+                }
+            }
+        }
+
+        doSendFeishuSheet(Collections.singletonList(dateStr), sheetToken, "28RgAZ", rowNum, rows,
+                2, null, null);
+    }
+
+    private List<ProducePlanAuditExport> buildProducePlanAuditExport(String dateStr) {
+        Long timeStamp = DateUtils.getStartOfDay(dateStr, "yyyyMMdd") * 1000;
+        List<String> planIds = Arrays.asList("20240802143345289374071", "20240802171417146947657",
+                "20240804003153130851174", "20241030070010871546586", "20240802080355355308981",
+                "20240802021606053813696");
+        List<ProducePlan> producePlans = producePlanRepository.findByIdIn(planIds);
+        Map<String, String> producePlanMap = producePlans.stream().collect(Collectors.toMap(ProducePlan::getId, ProducePlan::getName));
+        List<ProducePlanAuditCheckDTO> producePlanAudtiList = aigcBaseMapper.getProducePlanAudit(
+                timeStamp, timeStamp + 86400000, planIds);
+        Map<String, List<ProducePlanAuditCheckDTO>> producePlanAuditMap = producePlanAudtiList.stream()
+                .collect(Collectors.groupingBy(ProducePlanAuditCheckDTO::getPlanId));
+        List<ProducePlanAuditCheckDTO> producePlanProduceList = aigcBaseMapper.getProducePlanProduce(
+                timeStamp, timeStamp + 86400000, planIds);
+        Map<String, Integer> producePlanProduceMap = producePlanProduceList.stream()
+                .collect(Collectors.toMap(ProducePlanAuditCheckDTO::getPlanId, ProducePlanAuditCheckDTO::getNum));
+        List<ProducePlanAuditExport> exportList = new ArrayList<>();
+        Integer totalAuditNum = 0, totalAuditPassNum = 0, totalWaitingAuditNum = 0, totalAuditFailNum = 0, totalProduceNum = 0;
+        for (String planId : planIds) {
+            List<ProducePlanAuditCheckDTO> auditCheckDTOList = producePlanAuditMap.get(planId);
+            Integer yesterdayAuditNum = 0, yesterdayAuditPassNum = 0, waitingAuditNum = 0, yesterdayAuditFailNum = 0;
+            if (CollectionUtils.isNotEmpty(auditCheckDTOList)) {
+                for (ProducePlanAuditCheckDTO producePlanAuditCheckDTO : auditCheckDTOList) {
+                    if (Objects.equals(producePlanAuditCheckDTO.getAuditStatus(), ProduceContentAuditStatusEnum.waiting.getVal())) {
+                        waitingAuditNum = producePlanAuditCheckDTO.getNum();
+                        totalWaitingAuditNum += waitingAuditNum;
+                    } else if (Objects.equals(producePlanAuditCheckDTO.getAuditStatus(), ProduceContentAuditStatusEnum.pass.getVal())) {
+                        yesterdayAuditPassNum = producePlanAuditCheckDTO.getNum();
+                        totalAuditPassNum += yesterdayAuditPassNum;
+                        yesterdayAuditNum += producePlanAuditCheckDTO.getNum();
+                        totalAuditNum += yesterdayAuditNum;
+                    } else if (Objects.equals(producePlanAuditCheckDTO.getAuditStatus(), ProduceContentAuditStatusEnum.reject.getVal())) {
+                        yesterdayAuditNum += producePlanAuditCheckDTO.getNum();
+                        totalAuditNum += yesterdayAuditNum;
+                        yesterdayAuditFailNum += producePlanAuditCheckDTO.getNum();
+                        totalAuditFailNum += yesterdayAuditFailNum;
+                    }
+                }
+            }
+            Integer produceCount = producePlanProduceMap.getOrDefault(planId, 0);
+            totalProduceNum += produceCount;
+            ProducePlanAuditExport export = new ProducePlanAuditExport();
+            export.setDateStr(dateStr);
+            export.setPlanName(producePlanMap.get(planId));
+            export.setProduceCount(produceCount);
+            export.setAuditCount(yesterdayAuditNum);
+            export.setAuditPassCount(yesterdayAuditPassNum);
+            export.setHisNotAuditCount(waitingAuditNum);
+            export.setAuditFailCount(yesterdayAuditFailNum);
+            exportList.add(export);
+        }
+        ProducePlanAuditExport sum = new ProducePlanAuditExport();
+        sum.setDateStr(dateStr);
+        sum.setPlanName("SUM");
+        sum.setProduceCount(totalProduceNum);
+        sum.setAuditCount(totalAuditNum);
+        sum.setAuditPassCount(totalAuditPassNum);
+        sum.setHisNotAuditCount(totalWaitingAuditNum);
+        sum.setAuditFailCount(totalAuditFailNum);
+        exportList.add(0, sum);
+        return exportList;
+    }
+
 }

+ 7 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/web/recommend/DataDashboardController.java

@@ -43,4 +43,11 @@ public class DataDashboardController {
         }).start();
     }
 
+    @GetMapping("/export/producePlanAudit")
+    public void producePlanAuditExport(String dateStr) {
+        new Thread(() -> {
+            service.producePlanAuditExport(dateStr);
+        }).start();
+    }
+
 }

+ 15 - 1
long-article-recommend-service/src/main/resources/mapper/aigc/AigcBaseMapper.xml

@@ -295,7 +295,7 @@
         </foreach>
     </select>
 
-    <select id="getColdProducePlanAudit"
+    <select id="getProducePlanAudit"
             resultType="com.tzld.longarticle.recommend.server.model.dto.ProducePlanAuditCheckDTO">
         select pper.plan_id, pper.audit_status as auditStatus, count(1) as num
         from produce_plan_exe_record pper
@@ -308,6 +308,20 @@
         and pper.audit_timestamp between #{timeStart} and #{timeEnd}) or (prr.review_status = 0))
         GROUP BY pper.plan_id, pper.audit_status
     </select>
+
+    <select id="getProducePlanProduce"
+            resultType="com.tzld.longarticle.recommend.server.model.dto.ProducePlanAuditCheckDTO">
+        select pper.plan_id, count(1) as num
+        from produce_plan_exe_record pper
+        where pper.plan_id in
+        <foreach collection="planIds" item="item" open="(" close=")" separator=",">
+            #{item}
+        </foreach>
+        and pper.status = 2
+        and pper.produce_timestamp between #{timeStart} and #{timeEnd}
+        GROUP BY pper.plan_id
+    </select>
+
     <select id="getAccountTypeList"
             resultType="com.tzld.longarticle.recommend.server.model.dto.PublishAccountTypeDTO">
         SELECT DISTINCT t3.`name`, t3.gh_id, t3.follower_count, t6.account_source_name, t6.mode_type,