update pay ui
This commit is contained in:
27
app.py
27
app.py
@@ -5603,8 +5603,11 @@ def get_historical_event_stocks(event_id):
|
||||
# 查询股票在事件对应交易日的数据
|
||||
# ea_trade 表字段:F007N=最近成交价(收盘价), F010N=涨跌幅
|
||||
base_stock_code = stock.stock_code.split('.')[0] if stock.stock_code else ''
|
||||
# 日期格式转换为 YYYYMMDD
|
||||
trade_date_str = event_trading_date.strftime('%Y%m%d') if hasattr(event_trading_date, 'strftime') else str(event_trading_date).replace('-', '')
|
||||
# 日期格式转换为 YYYYMMDD 整数(ea_trade.TRADEDATE 是 int 类型)
|
||||
if hasattr(event_trading_date, 'strftime'):
|
||||
trade_date_int = int(event_trading_date.strftime('%Y%m%d'))
|
||||
else:
|
||||
trade_date_int = int(str(event_trading_date).replace('-', ''))
|
||||
with engine.connect() as conn:
|
||||
query = text("""
|
||||
SELECT F007N as close_price, F010N as change_pct
|
||||
@@ -5616,12 +5619,13 @@ def get_historical_event_stocks(event_id):
|
||||
|
||||
result = conn.execute(query, {
|
||||
'stock_code': base_stock_code,
|
||||
'trading_date': trade_date_str
|
||||
'trading_date': trade_date_int
|
||||
}).fetchone()
|
||||
|
||||
if result:
|
||||
stock_data['event_day_close'] = float(result[0]) if result[0] else None
|
||||
stock_data['event_day_change_pct'] = float(result[1]) if result[1] else None
|
||||
print(f"[DEBUG] 股票{base_stock_code}在{trade_date_int}: close={result[0]}, change_pct={result[1]}")
|
||||
else:
|
||||
stock_data['event_day_close'] = None
|
||||
stock_data['event_day_change_pct'] = None
|
||||
@@ -6431,8 +6435,10 @@ def get_batch_kline_data():
|
||||
if base_codes:
|
||||
placeholders = ','.join([f':code{i}' for i in range(len(base_codes))])
|
||||
params = {f'code{i}': code for i, code in enumerate(base_codes)}
|
||||
params['start_date'] = target_date - timedelta(days=60)
|
||||
params['end_date'] = target_date
|
||||
# TRADEDATE 是整数格式 YYYYMMDD,需要转换日期格式
|
||||
start_date = target_date - timedelta(days=60)
|
||||
params['start_date'] = int(start_date.strftime('%Y%m%d'))
|
||||
params['end_date'] = int(target_date.strftime('%Y%m%d'))
|
||||
|
||||
daily_result = conn.execute(text(f"""
|
||||
SELECT SECCODE, TRADEDATE, F003N as open, F005N as high, F006N as low, F007N as close, F004N as volume
|
||||
@@ -6448,8 +6454,17 @@ def get_batch_kline_data():
|
||||
code_base = row[0]
|
||||
if code_base not in stock_data:
|
||||
stock_data[code_base] = []
|
||||
# 日期格式处理:TRADEDATE 可能是 datetime 或 int(YYYYMMDD)
|
||||
trade_date_val = row[1]
|
||||
if hasattr(trade_date_val, 'strftime'):
|
||||
date_str = trade_date_val.strftime('%Y-%m-%d')
|
||||
elif isinstance(trade_date_val, int):
|
||||
# 整数格式 YYYYMMDD -> YYYY-MM-DD
|
||||
date_str = f"{str(trade_date_val)[:4]}-{str(trade_date_val)[4:6]}-{str(trade_date_val)[6:8]}"
|
||||
else:
|
||||
date_str = str(trade_date_val)
|
||||
stock_data[code_base].append({
|
||||
'date': row[1].strftime('%Y-%m-%d') if hasattr(row[1], 'strftime') else str(row[1]),
|
||||
'time': date_str, # 统一使用 time 字段,与前端期望一致
|
||||
'open': float(row[2]) if row[2] else 0,
|
||||
'high': float(row[3]) if row[3] else 0,
|
||||
'low': float(row[4]) if row[4] else 0,
|
||||
|
||||
Reference in New Issue
Block a user