调整表格数据及折线图数据

This commit is contained in:
2026-01-23 15:43:54 +08:00
parent 78c3222dfa
commit 54a31d06dc
8 changed files with 72 additions and 88 deletions

View File

@@ -24,32 +24,9 @@ const tableData = ref([]);
const tableLoading = ref(false);
const tableError = ref('');
// 生成从7:00到第二天6:55的时间标签每隔5分钟
function generateTimeLabels() {
const labels = [];
// 从7:00到23:55
for (let hour = 7; hour < 24; hour++) {
for (let minute = 0; minute < 60; minute += 5) {
labels.push(`${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}`);
}
}
// 从0:00到6:55
for (let hour = 0; hour < 6; hour++) {
for (let minute = 0; minute < 60; minute += 5) {
labels.push(`${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}`);
}
}
return labels;
}
// 生成对应长度的随机数据
function generateRandomData(length) {
return Array.from({ length }, () => Math.floor(Math.random() * 100) + 10);
}
// 折线图数据
const chartLabels = ref(generateTimeLabels());
const chartData1 = ref(generateRandomData(chartLabels.value.length));
const chartLabels = ref();
const chartData1 = ref();
const loading = ref(false);
const error = ref('');

View File

@@ -1,6 +1,8 @@
package com.tem.bocai.controller;
import com.tem.bocai.entity.CompletedToday;
import com.tem.bocai.entity.LotteryResult;
import com.tem.bocai.repository.CompletedTodayRepository;
import com.tem.bocai.repository.LotteryResultRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -15,18 +17,76 @@ public class ChartController {
@Autowired
private LotteryResultRepository lotteryResultRepository;
@Autowired
private CompletedTodayRepository completedTodayRepository;
// 获取折线图1数据
@GetMapping("/charts/line1")
public Map<String, Object> getLineChartData1() {
Map<String, Object> response = new HashMap<>();
// 模拟数据 - 实际项目中应该从数据库获取
List<Integer> data = Arrays.asList(65, 59, 80, 81, 56, 55, 40);
List<String> labels = Arrays.asList("1月", "2月", "3月", "4月", "5月", "6月", "7月");
response.put("data", data);
response.put("labels", labels);
response.put("title", "折线图1数据");
try {
// 获取今日日期的字符串表示格式yyyy-MM-dd
String today = new java.text.SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date());
System.out.println("今日日期: " + today);
// 从数据库获取今日的CompletedToday数据
List<CompletedToday> completedTodays = completedTodayRepository.findAll();
System.out.println("获取到" + completedTodays.size() + "条CompletedToday数据");
// 过滤出今日的数据
List<CompletedToday> todayData = new ArrayList<>();
for (CompletedToday item : completedTodays) {
if (item.getTime() != null && item.getTime().contains(today)) {
todayData.add(item);
}
}
System.out.println("过滤后获取到" + todayData.size() + "条今日数据");
// 按时间排序
todayData.sort(Comparator.comparing(CompletedToday::getTime));
// 提取数据
List<Double> data = new ArrayList<>();
List<String> labels = new ArrayList<>();
for (CompletedToday item : todayData) {
// 使用resultAmount作为折线图数据
data.add(item.getResultAmount());
// 使用时间作为标签(只保留时分部分)
String time = item.getTime();
if (time != null && time.length() >= 16) {
labels.add(time.substring(11, 16)); // 提取时分部分
} else {
labels.add(time);
}
}
// 如果没有今日数据,使用默认数据
if (data.isEmpty()) {
data = Arrays.asList(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
labels = Arrays.asList("00:00", "04:00", "08:00", "12:00", "16:00", "20:00", "23:59");
}
response.put("data", data);
response.put("labels", labels);
response.put("title", "今日盈亏数据");
System.out.println("返回的数据长度: " + data.size());
System.out.println("返回的标签长度: " + labels.size());
System.out.println("返回的标签: " + labels);
} catch (Exception e) {
System.err.println("获取折线图1数据失败: " + e.getMessage());
e.printStackTrace();
// 异常时使用默认数据
List<Integer> data = Arrays.asList(65, 59, 80, 81, 56, 55, 40);
List<String> labels = Arrays.asList("1月", "2月", "3月", "4月", "5月", "6月", "7月");
response.put("data", data);
response.put("labels", labels);
response.put("title", "折线图1数据");
}
return response;
}

View File

@@ -18,8 +18,7 @@ public class CompletedToday {
private String betId; //
@Column(name = "time", nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date time; // 改为Date类型
private String time; //
//下注金额
@Column(name = "bet_amount", nullable = false)

View File

@@ -4,17 +4,11 @@ package com.tem.bocai.repository;
import com.tem.bocai.entity.CompletedToday;
import com.tem.bocai.entity.LoginInfoResult;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.Optional;
@Repository
public interface CompletedTodayRepository extends JpaRepository<CompletedToday, Long> {
@Query("SELECT SUM(c.resultAmount) FROM CompletedToday c WHERE c.time >= :createTime")
Optional<Double> sumResultAmountByCreateTimeAfter(@Param("createTime") Date createTime);
}

View File

@@ -8,6 +8,4 @@ import java.util.List;
public interface CompletedTodayService {
void saveCompletedToday(List<CompletedToday> list);
public void sumResultAmount();
}

View File

@@ -16,37 +16,16 @@ import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@Service
public class CompletedTodayServiceImpl implements CompletedTodayService {
@Autowired
private CompletedTodayRepository completedTodayRepository;
@Autowired
private LoginInfoRepository loginInfoRepository;
@Override
public void saveCompletedToday(List<CompletedToday> list) {
completedTodayRepository.saveAll(list);
}
@Override
public void sumResultAmount() {
LoginInfoResult firstByOrderByCreateTimeDesc = loginInfoRepository.findFirstByOrderByCreateTimeDesc()
.orElse(null);
System.out.println("开始时间"+firstByOrderByCreateTimeDesc.getCreateTime());
// 使用Optional版本
Optional<Double> optionalTotal = completedTodayRepository.sumResultAmountByCreateTimeAfter(firstByOrderByCreateTimeDesc.getCreateTime());
if (optionalTotal.isPresent()) {
Double total = optionalTotal.get();
System.out.println("处理结果"+total);
// 处理结果
} else {
System.out.println("没有符合条件的记录");
//
}
}
}

View File

@@ -19,9 +19,6 @@ import us.codecraft.webmagic.selector.Html;
import java.io.File;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -292,34 +289,14 @@ public class CompletedTodayCrawler implements PageProcessor {
/**
* 转换数据结构以适应数据库
*/
/**
* 转换数据结构以适应数据库使用Java 8日期时间API
*/
private List<CompletedToday> convertForDatabase(List<Map<String, Object>> betList) {
List<CompletedToday> completedTodayList = new ArrayList<>();
// 根据你实际的日期字符串格式调整
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
for (Map<String, Object> bet : betList) {
CompletedToday completedToday = new CompletedToday();
completedToday.setBetId((String) bet.get("bet_id"));
// 转换String时间到Date
try {
String timeStr = (String) bet.get("time");
// 将LocalDateTime转换为Date
LocalDateTime localDateTime = LocalDateTime.parse(timeStr, formatter);
Date timeDate = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
completedToday.setTime(timeDate);
} catch (Exception e) {
// 处理日期解析异常,这里设置为当前时间作为默认值
completedToday.setTime(new Date());
// 也可以记录日志
System.err.println("日期解析失败: " + bet.get("time"));
}
completedToday.setTime((String) bet.get("time"));
completedToday.setBetAmount((Double)bet.get("bet_amount"));
completedToday.setResultAmount((Double) bet.get("result_amount"));
completedToday.setResult((String) bet.get("result"));

View File

@@ -209,7 +209,7 @@ public class SQLiteUtil {
if (data == null || data.getBetId() == null) continue;
pstmt.setString(1, data.getBetId());
pstmt.setTimestamp(2, new Timestamp(data.getTime().getTime()));
pstmt.setString(2, data.getTime());
pstmt.setDouble(3, data.getBetAmount() != null ? data.getBetAmount() : 0.0);
pstmt.setString(4, data.getResult() != null ? data.getResult() : "未知");
pstmt.setDouble(5, data.getResultAmount() != null ? data.getResultAmount() : 0.0);