Browse Source

Merge branch 'wyp/1230-producePlanExport' of Server/long-article-recommend into master

wangyunpeng 6 months ago
parent
commit
6f74eae304

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

@@ -1749,9 +1749,8 @@ public class DataDashboardService {
         List<ProducePlanAuditExport> exportList = new ArrayList<>();
         dateStrList = Lists.reverse(dateStrList);
         for (String dateStr : dateStrList) {
-            String yesterday = DateUtils.getBeforeDaysDateStr(dateStr, "yyyyMMdd", 1);
-            List<ProducePlanAuditExport> yesterdayExportList = buildProducePlanAuditExport(yesterday, new ArrayList<>());
-            exportList.addAll(buildProducePlanAuditExport(dateStr, yesterdayExportList));
+            Map<String, ProducePlanAuditExport> yesterdayMap = getOldProducePlanAuditExport(dateStr, sheetToken, "28RgAZ");
+            exportList.addAll(buildProducePlanAuditExport(dateStr, yesterdayMap));
         }
         if (CollectionUtil.isEmpty(exportList)) {
             return;
@@ -1779,8 +1778,42 @@ public class DataDashboardService {
                 2, null, null);
     }
 
+    private Map<String, ProducePlanAuditExport> getOldProducePlanAuditExport(String dateStr, String sheetToken, String sheetId) {
+        String yesterday = DateUtils.getBeforeDaysDateStr(dateStr, "yyyyMMdd", 1);
+        Pair<String, Integer> token = FeiShu.requestAccessToken();
+        RestTemplate restTemplate = new RestTemplate();
+        HttpHeaders httpHeaders = new HttpHeaders();
+        httpHeaders.add("Authorization", "Bearer " + token.getFirst());
+        HttpEntity<Object> queryEntity = new HttpEntity<>(httpHeaders);
+        ResponseEntity<String> queryResponseEntity = restTemplate.exchange(
+                String.format("https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/%s/values/%s!A"
+                        + 2 + ":H" + 51, sheetToken, sheetId),
+                HttpMethod.GET, queryEntity, String.class);
+        JSONArray values = JSON.parseObject(queryResponseEntity.getBody())
+                .getJSONObject("data")
+                .getJSONObject("valueRange")
+                .getJSONArray("values");
+        Map<String, ProducePlanAuditExport> yesterdayMap = new HashMap<>();
+        for (int i = 0; i < values.size(); i++) {
+            JSONArray row = values.getJSONArray(i);
+            if (!yesterday.equals(row.getString(0))) {
+                continue;
+            }
+            ProducePlanAuditExport item = new ProducePlanAuditExport();
+            item.setDateStr(row.getString(0));
+            item.setPlanName(row.getString(1));
+            item.setHisNotAuditCount(row.getInteger(2));
+            item.setProduceCount(row.getInteger(3));
+            item.setAuditCount(row.getInteger(5));
+            item.setAuditPassCount(row.getInteger(6));
+            item.setAuditFailCount(row.getInteger(7));
+            yesterdayMap.put(item.getPlanName(), item);
+        }
+        return yesterdayMap;
+    }
+
     private List<ProducePlanAuditExport> buildProducePlanAuditExport(String dateStr,
-                                                                     List<ProducePlanAuditExport> yesterdayExportList) {
+                                                                     Map<String, ProducePlanAuditExport> yesterdayMap) {
         Long timeStamp = DateUtils.getStartOfDay(dateStr, "yyyyMMdd") * 1000;
         List<String> planIds = Arrays.asList("20240802143345289374071", "20240802171417146947657",
                 "20240804003153130851174", "20241030070010871546586", "20240802080355355308981",
@@ -1795,8 +1828,6 @@ public class DataDashboardService {
                 timeStamp, timeStamp + 86400000, planIds);
         Map<String, Integer> producePlanProduceMap = producePlanProduceList.stream()
                 .collect(Collectors.toMap(ProducePlanAuditCheckDTO::getPlanId, ProducePlanAuditCheckDTO::getNum));
-        Map<String, ProducePlanAuditExport> yesterdayMap = yesterdayExportList.stream()
-               .collect(Collectors.toMap(ProducePlanAuditExport::getPlanName, o -> o));
         List<ProducePlanAuditExport> exportList = new ArrayList<>();
         Integer totalAuditNum = 0, totalAuditPassNum = 0, totalWaitingAuditNum = 0, totalAuditFailNum = 0, totalProduceNum = 0;
         for (String planId : planIds) {