From ea1adcb2ca2b2a25b5ec2257da9781db452aa958 Mon Sep 17 00:00:00 2001 From: zzlgreat Date: Wed, 3 Dec 2025 15:05:41 +0800 Subject: [PATCH] update pay ui --- app.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/app.py b/app.py index 8f34c42a..897279a9 100755 --- a/app.py +++ b/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,