fix: 修复记录时间

This commit is contained in:
橙子
2025-03-11 22:00:11 +08:00
parent 8ef91ebd03
commit 85ed4df1e4
3 changed files with 20 additions and 17 deletions

View File

@@ -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

View File

@@ -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<StockPriceRecordEntity>();
// 获取当前小时的起始时间点
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);
}
}

View File

@@ -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'),