|
|
@@ -1,31 +1,94 @@
|
|
|
-package cn.reghao.tnb.content.app.vod.service;
|
|
|
+package cn.reghao.tnb.content.app.data.service;
|
|
|
|
|
|
import cn.reghao.jutil.jdk.converter.DateTimeConverter;
|
|
|
+import cn.reghao.jutil.jdk.text.TextFile;
|
|
|
import cn.reghao.tnb.common.auth.UserContext;
|
|
|
+import cn.reghao.tnb.content.app.exam.model.chart.LineChartData;
|
|
|
import cn.reghao.tnb.content.app.vod.model.po.VideoCategory;
|
|
|
import cn.reghao.tnb.content.app.vod.model.query.CategoryQuery;
|
|
|
+import cn.reghao.tnb.content.app.vod.service.CategoryService;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.security.SecureRandom;
|
|
|
import java.time.LocalDateTime;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Random;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @author reghao
|
|
|
- * @date 2023-10-11 14:35:46
|
|
|
+ * @date 2025-08-14 09:31:22
|
|
|
*/
|
|
|
@Service
|
|
|
-public class WatchAnalysisService {
|
|
|
+public class ChartService {
|
|
|
+ private final TextFile textFile = new TextFile();
|
|
|
private final CategoryService categoryService;
|
|
|
|
|
|
- public WatchAnalysisService(CategoryService categoryService) {
|
|
|
+ public ChartService(CategoryService categoryService) {
|
|
|
this.categoryService = categoryService;
|
|
|
}
|
|
|
|
|
|
- public List<String> getLineChartData() {
|
|
|
+ public LineChartData getLineChartData() {
|
|
|
+ String filePath = "/home/reghao/Downloads/2010四川高考一分一段.txt";
|
|
|
+ List<String> lines = textFile.read(filePath);
|
|
|
+ Map<Integer, Integer> map = new TreeMap<>();
|
|
|
+ for (String line : lines) {
|
|
|
+ String[] arr = line.split("\\s+");
|
|
|
+ int score = Integer.parseInt(arr[0].replace("分", ""));
|
|
|
+ int num = Integer.parseInt(arr[1]);
|
|
|
+ int total = Integer.parseInt(arr[2]);
|
|
|
+ map.put(score, num);
|
|
|
+ }
|
|
|
+
|
|
|
+ int level1 = 512;
|
|
|
+ int level2 = 441;
|
|
|
+ int level3 = 413;
|
|
|
+ int level4 = 361;
|
|
|
+ int level0 = level1+100;
|
|
|
+ int level5 = level4-50;
|
|
|
+
|
|
|
+ Map<String, Integer> map1 = new TreeMap<>();
|
|
|
+ int num0 = getNum(map, level0, 750);
|
|
|
+ map1.put("level0", num0);
|
|
|
+
|
|
|
+ int num1 = getNum(map, level1, level0);
|
|
|
+ map1.put("level1", num1);
|
|
|
+
|
|
|
+ int num2 = getNum(map, level2, level1);
|
|
|
+ map1.put("level2", num2);
|
|
|
+
|
|
|
+ int num3 = getNum(map, level3, level2);
|
|
|
+ map1.put("level3", num3);
|
|
|
+
|
|
|
+ int num4 = getNum(map, level4, level3);
|
|
|
+ map1.put("level4", num4);
|
|
|
+
|
|
|
+ int num5 = getNum(map, level5, level4);
|
|
|
+ map1.put("level5", num5);
|
|
|
+
|
|
|
+ int num6 = getNum(map, 1, level5);
|
|
|
+ map1.put("level6", num6);
|
|
|
+
|
|
|
+ int max = map1.values().stream().mapToInt(i -> i).max().orElse(-1);
|
|
|
+ LineChartData chartData = new LineChartData("人数", 0, max, 10, "分数段");
|
|
|
+ chartData.setXLabel(map1.keySet().toArray(new String[0]));
|
|
|
+ chartData.setXValue(map1.values().toArray(new Integer[0]));
|
|
|
+ return chartData;
|
|
|
+ }
|
|
|
+
|
|
|
+ private int getNum(Map<Integer, Integer> map, int start, int end) {
|
|
|
+ int num = 0;
|
|
|
+ for (int i = start; i < end; i++) {
|
|
|
+ if (map.get(i) != null) {
|
|
|
+ num += map.get(i);
|
|
|
+ } else {
|
|
|
+ System.out.println(i + " get null");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return num;
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<String> getWatchLineChart() {
|
|
|
long loginUser = UserContext.getUser();
|
|
|
|
|
|
List<String> xAxis = new ArrayList<>();
|
|
|
@@ -50,7 +113,7 @@ public class WatchAnalysisService {
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
- public List<String> getPieChartData() {
|
|
|
+ public List<String> getRegionPieChart() {
|
|
|
long loginUser = UserContext.getUser();
|
|
|
|
|
|
CategoryQuery categoryQuery = new CategoryQuery.Builder().pid(1).build();
|