diff --git a/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Application/Services/StockMarketService.cs b/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Application/Services/StockMarketService.cs index bf1c8115..2b3daa66 100644 --- a/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Application/Services/StockMarketService.cs +++ b/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Application/Services/StockMarketService.cs @@ -93,11 +93,11 @@ namespace Yi.Framework.Stock.Application.Services var query = _stockPriceRecordRepository._DbQueryable .WhereIF(input.StockId.HasValue, p => p.StockId == input.StockId.Value) - .WhereIF(input.StartTime.HasValue, p => p.CreationTime >= input.StartTime.Value) - .WhereIF(input.EndTime.HasValue, p => p.CreationTime <= input.EndTime.Value) + .WhereIF(input.StartTime.HasValue, p => p.RecordTime >= input.StartTime.Value) + .WhereIF(input.EndTime.HasValue, p => p.RecordTime <= input.EndTime.Value) .WhereIF(input.PeriodType.HasValue, p => p.PeriodType == input.PeriodType.Value) .OrderByIF(!string.IsNullOrEmpty(input.Sorting),input.Sorting) - .OrderByIF(string.IsNullOrEmpty(input.Sorting),p=>p.CreationTime,OrderByType.Desc); + .OrderByIF(string.IsNullOrEmpty(input.Sorting),p=>p.RecordTime,OrderByType.Desc); var list = await query .Select(p => new StockPriceRecordDto diff --git a/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/StockMarketManager.cs b/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/StockMarketManager.cs index c5637966..13949f28 100644 --- a/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/StockMarketManager.cs +++ b/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/StockMarketManager.cs @@ -211,7 +211,7 @@ namespace Yi.Framework.Stock.Domain.Managers // 获取最新的价格记录 var latestPriceRecord = await _stockPriceRecordRepository._DbQueryable .Where(p => p.StockId == stockId) - .OrderByDescending(p => p.CreationTime) + .OrderByDescending(p => p.RecordTime) .FirstAsync(); if (latestPriceRecord == null) @@ -284,9 +284,6 @@ namespace Yi.Framework.Stock.Domain.Managers throw new UserFriendlyException($"股票ID {record.StockId} 的价格必须大于0"); } - // 设置记录时间(当前时间加上i个小时),只记录到年月日小时 - record.RecordTime = new DateTime(DateTime.Now.AddHours(i).Year, DateTime.Now.AddHours(i).Month, DateTime.Now.AddHours(i).Day, DateTime.Now.AddHours(i).Hour, 0, 0); - // 计算交易额(如果未设置) if (record.Turnover == 0 && record.Volume > 0) { @@ -316,6 +313,9 @@ namespace Yi.Framework.Stock.Domain.Managers // 将StockModel转换为StockPriceRecordEntity var priceRecords = new List(); + // 获取当前小时的起始时间点 + var currentHour = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, 0, 0); + foreach (var stockModel in stockModels) { if (stockModel.Values == null || !stockModel.Values.Any()) @@ -329,16 +329,20 @@ namespace Yi.Framework.Stock.Domain.Managers continue; } - // 为每个价格点创建一个记录 - foreach (var priceValue in stockModel.Values) + // 为每个价格点创建一个记录,并设置递增的时间 + for (int i = 0; i < stockModel.Values.Count(); i++) { + var priceValue = stockModel.Values[i]; + var recordTime = currentHour.AddHours(i); // 从当前小时开始,每个价格点加1小时 + var priceRecord = new StockPriceRecordEntity { StockId = stockMarket.Id, CurrentPrice = priceValue, Volume = 0, // 可以根据实际情况设置 Turnover = 0, // 可以根据实际情况设置 - PeriodType = PeriodTypeEnum.Hour + PeriodType = PeriodTypeEnum.Hour, + RecordTime = recordTime // 直接在这里设置时间 }; priceRecords.Add(priceRecord); @@ -348,7 +352,7 @@ namespace Yi.Framework.Stock.Domain.Managers // 批量保存价格记录 if (priceRecords.Any()) { - await BatchSaveStockPriceRecordsAsync(priceRecords); + await _stockPriceRecordRepository.InsertManyAsync(priceRecords); } } @@ -371,8 +375,8 @@ namespace Yi.Framework.Stock.Domain.Managers } catch { - // 如果获取价格失败,使用默认值或跳过 - continue; + // 如果获取价格失败,使用默认价格10 + result.Add(stock.Id, 10m); } } diff --git a/Yi.Bbs.Vue3/src/views/stock/Index.vue b/Yi.Bbs.Vue3/src/views/stock/Index.vue index f3cee2f8..9fb70119 100644 --- a/Yi.Bbs.Vue3/src/views/stock/Index.vue +++ b/Yi.Bbs.Vue3/src/views/stock/Index.vue @@ -303,8 +303,8 @@ const fetchStockPriceRecords = async () => { // 计算时间范围: 今天的近5个小时 const now = dayjs(); - const endTime = now.format('YYYY-MM-DD HH:00'); - const startTime = now.subtract(5, 'hour').format('YYYY-MM-DD HH:00'); + const endTime = now.format('YYYY-MM-DD HH:00:00'); + const startTime = now.subtract(24, 'hour').format('YYYY-MM-DD HH:00:00'); // 获取当前选中股票的ID // 注意:这里假设stockList中的id就是后端的stockId,如果不是需要调整 @@ -316,8 +316,7 @@ const fetchStockPriceRecords = async () => { return; } - // const { data } = await getStockPriceRecords(stockId, startTime, endTime); - const { data } = await getStockPriceRecords(stockId, '2025-03-08 21:00', '2025-03-09 21:00'); + const { data } = await getStockPriceRecords(stockId, startTime, endTime); // 将API返回的数据映射到图表所需的格式 stockChartData.value = (data.items || []).map(item => ({ date: dayjs(item.recordTime).format('MM-DD HH'),