fix: 修复记录时间
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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'),
|
||||
|
||||
Reference in New Issue
Block a user