响应格式修改,原始数据查询修改

This commit is contained in:
lhx
2025-10-23 11:32:10 +08:00
parent 21c61cdec7
commit 34b698386a
12 changed files with 542 additions and 232 deletions

View File

@@ -139,26 +139,48 @@ class OriginalDataService(BaseService[OriginalData]):
logger.error(f"Failed to query data from {self._get_table_name(account_id)}: {str(e)}")
return []
def get_all_original_data_tables(self, db: Session) -> List[str]:
"""
获取所有原始数据分表的表名
Args:
db: 数据库会话
Returns:
原始数据表名列表
"""
try:
inspector = inspect(engine)
all_tables = inspector.get_table_names()
# 筛选出所有原始数据分表
original_tables = [table for table in all_tables if table.startswith('original_data_')]
logger.info(f"Found {len(original_tables)} original data tables: {original_tables}")
return original_tables
except Exception as e:
logger.error(f"Failed to get original data tables: {str(e)}")
return []
def search_original_data(self, db: Session,
account_id: int,
account_id: Optional[int] = None,
id: Optional[int] = None,
bfpcode: Optional[str] = None,
bffb: Optional[str] = None,
nyid: Optional[str] = None,
bfpl: Optional[str] = None) -> List[OriginalData]:
bfpl: Optional[str] = None) -> List[Any]:
"""
根据多个条件搜索原始数据
如果未提供account_id则遍历所有分表查询
Args:
db: 数据库会话
account_id: 账号ID
account_id: 账号ID,可选。不填则查询所有分表
其他查询条件...
Returns:
原始数据列表
"""
try:
table_name = self._get_table_name(account_id)
# 构建查询条件
conditions = []
params = {}
@@ -179,11 +201,34 @@ class OriginalDataService(BaseService[OriginalData]):
params["bfpl"] = bfpl
where_clause = " AND ".join(conditions) if conditions else "1=1"
query = text(f"SELECT * FROM `{table_name}` WHERE {where_clause}")
result = db.execute(query, params)
return result.fetchall()
# 如果指定了account_id只查询该账号的分表
if account_id is not None:
table_name = self._get_table_name(account_id)
query = text(f"SELECT * FROM `{table_name}` WHERE {where_clause}")
result = db.execute(query, params)
return result.fetchall()
# 未指定account_id遍历所有分表
all_results = []
tables = self.get_all_original_data_tables(db)
for table_name in tables:
try:
query = text(f"SELECT * FROM `{table_name}` WHERE {where_clause}")
result = db.execute(query, params)
rows = result.fetchall()
all_results.extend(rows)
logger.info(f"Found {len(rows)} records in table {table_name}")
except Exception as e:
logger.warning(f"Failed to query table {table_name}: {str(e)}")
continue
logger.info(f"Total found {len(all_results)} records from {len(tables)} tables")
return all_results
except Exception as e:
logger.error(f"Failed to search data from {self._get_table_name(account_id)}: {str(e)}")
logger.error(f"Failed to search original data: {str(e)}")
return []
def _check_settlement_exists(self, db: Session, nyid: str) -> bool: