update pay ui

This commit is contained in:
2025-12-03 15:05:41 +08:00
parent 43f32c5af2
commit ea1adcb2ca

27
app.py
View File

@@ -5603,8 +5603,11 @@ def get_historical_event_stocks(event_id):
# 查询股票在事件对应交易日的数据 # 查询股票在事件对应交易日的数据
# ea_trade 表字段F007N=最近成交价(收盘价), F010N=涨跌幅 # ea_trade 表字段F007N=最近成交价(收盘价), F010N=涨跌幅
base_stock_code = stock.stock_code.split('.')[0] if stock.stock_code else '' base_stock_code = stock.stock_code.split('.')[0] if stock.stock_code else ''
# 日期格式转换为 YYYYMMDD # 日期格式转换为 YYYYMMDD 整数ea_trade.TRADEDATE 是 int 类型)
trade_date_str = event_trading_date.strftime('%Y%m%d') if hasattr(event_trading_date, 'strftime') else str(event_trading_date).replace('-', '') 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: with engine.connect() as conn:
query = text(""" query = text("""
SELECT F007N as close_price, F010N as change_pct SELECT F007N as close_price, F010N as change_pct
@@ -5616,12 +5619,13 @@ def get_historical_event_stocks(event_id):
result = conn.execute(query, { result = conn.execute(query, {
'stock_code': base_stock_code, 'stock_code': base_stock_code,
'trading_date': trade_date_str 'trading_date': trade_date_int
}).fetchone() }).fetchone()
if result: if result:
stock_data['event_day_close'] = float(result[0]) if result[0] else None 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 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: else:
stock_data['event_day_close'] = None stock_data['event_day_close'] = None
stock_data['event_day_change_pct'] = None stock_data['event_day_change_pct'] = None
@@ -6431,8 +6435,10 @@ def get_batch_kline_data():
if base_codes: if base_codes:
placeholders = ','.join([f':code{i}' for i in range(len(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 = {f'code{i}': code for i, code in enumerate(base_codes)}
params['start_date'] = target_date - timedelta(days=60) # TRADEDATE 是整数格式 YYYYMMDD需要转换日期格式
params['end_date'] = target_date 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""" daily_result = conn.execute(text(f"""
SELECT SECCODE, TRADEDATE, F003N as open, F005N as high, F006N as low, F007N as close, F004N as volume 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] code_base = row[0]
if code_base not in stock_data: if code_base not in stock_data:
stock_data[code_base] = [] 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({ 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, 'open': float(row[2]) if row[2] else 0,
'high': float(row[3]) if row[3] else 0, 'high': float(row[3]) if row[3] else 0,
'low': float(row[4]) if row[4] else 0, 'low': float(row[4]) if row[4] else 0,