| 
					
				 | 
			
			
				@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.alibaba.fastjson.JSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.alibaba.fastjson.JSONArray; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.google.common.collect.Lists; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.model.NewSortStrategyExport; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.repository.crawler.AccountAvgInfoRepository; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.repository.crawler.ArticleDetailInfoRepository; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -239,34 +240,42 @@ public class DataDashboardService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (count > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 删除当前日期已存在的旧数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            httpHeaders.setContentType(MediaType.APPLICATION_JSON); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            HttpEntity<Object> deleteEntity = new HttpEntity<>( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    String.format("{\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            "    \"dimension\": {\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            "        \"sheetId\": \"%s\",\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            "        \"majorDimension\": \"ROWS\",\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            "        \"startIndex\": %s,\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            "        \"endIndex\": %s\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            "    }\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            "}", sheetId, startRowIndex, count + startRowIndex - 1), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    httpHeaders); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            restTemplate.exchange(String.format("https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/%s/dimension_range", sheetToken), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    HttpMethod.DELETE, deleteEntity, String.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            int delNum = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            do { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 删除当前日期已存在的旧数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                httpHeaders.setContentType(MediaType.APPLICATION_JSON); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                HttpEntity<Object> deleteEntity = new HttpEntity<>( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        String.format("{\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                "    \"dimension\": {\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                "        \"sheetId\": \"%s\",\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                "        \"majorDimension\": \"ROWS\",\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                "        \"startIndex\": %s,\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                "        \"endIndex\": %s\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                "    }\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                "}", sheetId, startRowIndex, Math.min(startRowIndex + 4000, count - delNum + startRowIndex) - 1), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        httpHeaders); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                restTemplate.exchange(String.format("https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/%s/dimension_range", sheetToken), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        HttpMethod.DELETE, deleteEntity, String.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                delNum = Math.min(delNum + 4000, count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } while (delNum < count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<List<List<Object>>> partitions = Lists.partition(rows, 4000); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int startRow = startRowIndex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (List<List<Object>> partition : partitions) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 插入数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            HttpEntity<Object> postEntity = new HttpEntity<>(MapBuilder 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .put("valueRange", MapBuilder 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            .builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            .put("range", String.format("%s!A" + startRow + ":W", sheetId) + (partition.size() + startRow - 1)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            .put("values", partition) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            .build()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .build(), httpHeaders); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            restTemplate.exchange(String.format("https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/%s/values_prepend", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            sheetToken), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    HttpMethod.POST, postEntity, String.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            startRow += partition.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 插入数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        HttpEntity<Object> postEntity = new HttpEntity<>(MapBuilder 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .put("valueRange", MapBuilder 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        .builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        .put("range", String.format("%s!A" + startRowIndex + ":W", sheetId) + (rowNum + startRowIndex - 1)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        .put("values", rows) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        .build()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .build(), httpHeaders); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        restTemplate.exchange(String.format("https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/%s/values_prepend", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        sheetToken), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                HttpMethod.POST, postEntity, String.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //        // 合并单元格 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //        if (isMerge) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //            HttpEntity<Object> mergeEntity = new HttpEntity<>(MapBuilder 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -280,32 +289,36 @@ public class DataDashboardService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 此处先简单处理,调整单元格为”百分比小数点“ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (CollectionUtil.isNotEmpty(styles)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (Pair<String, String> style : styles) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                HttpEntity<Map<Object, Object>> styleEntity = new HttpEntity<>(MapBuilder 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        .builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        .put("appendStyle", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                MapBuilder 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        .builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        .put("range", String.format("%s!%s" + startRowIndex + ":%s", sheetId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                style.getFirst(), style.getFirst()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                + (rowNum + startRowIndex - 1)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        .put("style", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                MapBuilder 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                        .builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                        .put("formatter", style.getSecond()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                        .build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        .build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        .build(), httpHeaders); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                restTemplate.exchange( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        String.format("https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/%s/style", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                sheetToken), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        HttpMethod.PUT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        styleEntity, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        String.class 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            startRow = startRowIndex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            do { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (Pair<String, String> style : styles) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    HttpEntity<Map<Object, Object>> styleEntity = new HttpEntity<>(MapBuilder 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            .builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            .put("appendStyle", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    MapBuilder 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            .builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            .put("range", String.format("%s!%s" + startRow + ":%s", sheetId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                    style.getFirst(), style.getFirst()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                    + (Math.min(startRow + 4000, rowNum + startRowIndex) - 1)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            .put("style", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                    MapBuilder 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                            .builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                            .put("formatter", style.getSecond()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                            .build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            .build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            .build(), httpHeaders); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    restTemplate.exchange( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            String.format("https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/%s/style", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    sheetToken), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            HttpMethod.PUT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            styleEntity, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            String.class 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                startRow += 4000; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } while (startRow < rowNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |