fix: 修复记录时间
This commit is contained in:
@@ -93,11 +93,11 @@ namespace Yi.Framework.Stock.Application.Services
|
|||||||
|
|
||||||
var query = _stockPriceRecordRepository._DbQueryable
|
var query = _stockPriceRecordRepository._DbQueryable
|
||||||
.WhereIF(input.StockId.HasValue, p => p.StockId == input.StockId.Value)
|
.WhereIF(input.StockId.HasValue, p => p.StockId == input.StockId.Value)
|
||||||
.WhereIF(input.StartTime.HasValue, p => p.CreationTime >= input.StartTime.Value)
|
.WhereIF(input.StartTime.HasValue, p => p.RecordTime >= input.StartTime.Value)
|
||||||
.WhereIF(input.EndTime.HasValue, p => p.CreationTime <= input.EndTime.Value)
|
.WhereIF(input.EndTime.HasValue, p => p.RecordTime <= input.EndTime.Value)
|
||||||
.WhereIF(input.PeriodType.HasValue, p => p.PeriodType == input.PeriodType.Value)
|
.WhereIF(input.PeriodType.HasValue, p => p.PeriodType == input.PeriodType.Value)
|
||||||
.OrderByIF(!string.IsNullOrEmpty(input.Sorting),input.Sorting)
|
.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
|
var list = await query
|
||||||
.Select(p => new StockPriceRecordDto
|
.Select(p => new StockPriceRecordDto
|
||||||
|
|||||||
@@ -211,7 +211,7 @@ namespace Yi.Framework.Stock.Domain.Managers
|
|||||||
// 获取最新的价格记录
|
// 获取最新的价格记录
|
||||||
var latestPriceRecord = await _stockPriceRecordRepository._DbQueryable
|
var latestPriceRecord = await _stockPriceRecordRepository._DbQueryable
|
||||||
.Where(p => p.StockId == stockId)
|
.Where(p => p.StockId == stockId)
|
||||||
.OrderByDescending(p => p.CreationTime)
|
.OrderByDescending(p => p.RecordTime)
|
||||||
.FirstAsync();
|
.FirstAsync();
|
||||||
|
|
||||||
if (latestPriceRecord == null)
|
if (latestPriceRecord == null)
|
||||||
@@ -284,9 +284,6 @@ namespace Yi.Framework.Stock.Domain.Managers
|
|||||||
throw new UserFriendlyException($"股票ID {record.StockId} 的价格必须大于0");
|
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)
|
if (record.Turnover == 0 && record.Volume > 0)
|
||||||
{
|
{
|
||||||
@@ -316,6 +313,9 @@ namespace Yi.Framework.Stock.Domain.Managers
|
|||||||
// 将StockModel转换为StockPriceRecordEntity
|
// 将StockModel转换为StockPriceRecordEntity
|
||||||
var priceRecords = new List<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)
|
foreach (var stockModel in stockModels)
|
||||||
{
|
{
|
||||||
if (stockModel.Values == null || !stockModel.Values.Any())
|
if (stockModel.Values == null || !stockModel.Values.Any())
|
||||||
@@ -329,16 +329,20 @@ namespace Yi.Framework.Stock.Domain.Managers
|
|||||||
continue;
|
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
|
var priceRecord = new StockPriceRecordEntity
|
||||||
{
|
{
|
||||||
StockId = stockMarket.Id,
|
StockId = stockMarket.Id,
|
||||||
CurrentPrice = priceValue,
|
CurrentPrice = priceValue,
|
||||||
Volume = 0, // 可以根据实际情况设置
|
Volume = 0, // 可以根据实际情况设置
|
||||||
Turnover = 0, // 可以根据实际情况设置
|
Turnover = 0, // 可以根据实际情况设置
|
||||||
PeriodType = PeriodTypeEnum.Hour
|
PeriodType = PeriodTypeEnum.Hour,
|
||||||
|
RecordTime = recordTime // 直接在这里设置时间
|
||||||
};
|
};
|
||||||
|
|
||||||
priceRecords.Add(priceRecord);
|
priceRecords.Add(priceRecord);
|
||||||
@@ -348,7 +352,7 @@ namespace Yi.Framework.Stock.Domain.Managers
|
|||||||
// 批量保存价格记录
|
// 批量保存价格记录
|
||||||
if (priceRecords.Any())
|
if (priceRecords.Any())
|
||||||
{
|
{
|
||||||
await BatchSaveStockPriceRecordsAsync(priceRecords);
|
await _stockPriceRecordRepository.InsertManyAsync(priceRecords);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -371,8 +375,8 @@ namespace Yi.Framework.Stock.Domain.Managers
|
|||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
// 如果获取价格失败,使用默认值或跳过
|
// 如果获取价格失败,使用默认价格10
|
||||||
continue;
|
result.Add(stock.Id, 10m);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -303,8 +303,8 @@ const fetchStockPriceRecords = async () => {
|
|||||||
|
|
||||||
// 计算时间范围: 今天的近5个小时
|
// 计算时间范围: 今天的近5个小时
|
||||||
const now = dayjs();
|
const now = dayjs();
|
||||||
const endTime = now.format('YYYY-MM-DD HH:00');
|
const endTime = now.format('YYYY-MM-DD HH:00:00');
|
||||||
const startTime = now.subtract(5, 'hour').format('YYYY-MM-DD HH:00');
|
const startTime = now.subtract(24, 'hour').format('YYYY-MM-DD HH:00:00');
|
||||||
|
|
||||||
// 获取当前选中股票的ID
|
// 获取当前选中股票的ID
|
||||||
// 注意:这里假设stockList中的id就是后端的stockId,如果不是需要调整
|
// 注意:这里假设stockList中的id就是后端的stockId,如果不是需要调整
|
||||||
@@ -316,8 +316,7 @@ const fetchStockPriceRecords = async () => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// const { data } = await getStockPriceRecords(stockId, startTime, endTime);
|
const { data } = await getStockPriceRecords(stockId, startTime, endTime);
|
||||||
const { data } = await getStockPriceRecords(stockId, '2025-03-08 21:00', '2025-03-09 21:00');
|
|
||||||
// 将API返回的数据映射到图表所需的格式
|
// 将API返回的数据映射到图表所需的格式
|
||||||
stockChartData.value = (data.items || []).map(item => ({
|
stockChartData.value = (data.items || []).map(item => ({
|
||||||
date: dayjs(item.recordTime).format('MM-DD HH'),
|
date: dayjs(item.recordTime).format('MM-DD HH'),
|
||||||
|
|||||||
Reference in New Issue
Block a user