This commit is contained in:
2026-03-08 00:51:39 +08:00
parent e50a402152
commit 84e7ae4ef1
4 changed files with 204 additions and 79 deletions
+16 -4
View File
@@ -535,8 +535,12 @@ class StorageIntegrationService:
limit: int = 50
) -> list:
"""获取同一文件名的所有上传历史记录"""
from models.database import ProcessingTask
from sqlalchemy.orm import joinedload
query = select(STPFile).where(
query = select(STPFile).options(
joinedload(STPFile.processing_tasks)
).where(
STPFile.original_filename == filename
).order_by(STPFile.upload_time.desc())
@@ -546,11 +550,12 @@ class StorageIntegrationService:
query = query.limit(limit)
result = await session.execute(query)
files = result.scalars().all()
files = result.unique().scalars().all()
return [
{
'id': f.id,
'task_id': f.processing_tasks[0].task_id if f.processing_tasks else None,
'upload_batch': f.upload_batch,
'upload_time': f.upload_time.isoformat() if f.upload_time else None,
'file_size': f.file_size,
@@ -572,6 +577,8 @@ class StorageIntegrationService:
"""获取所有文件分组(按文件名分组),包含每个文件的最新分析结果"""
from sqlalchemy import func, desc
from sqlalchemy.orm import joinedload
from models.database import ProcessingTask
# 子查询:获取每个文件名的最新上传
subquery = (
@@ -591,7 +598,9 @@ class StorageIntegrationService:
# 主查询:获取最新记录和统计信息
query = (
select(STPFile)
select(STPFile).options(
joinedload(STPFile.processing_tasks)
)
.join(
subquery,
(STPFile.original_filename == subquery.c.original_filename) &
@@ -601,7 +610,7 @@ class StorageIntegrationService:
)
result = await session.execute(query)
latest_files = result.scalars().all()
latest_files = result.unique().scalars().all()
# 获取每个文件名的上传次数
file_groups = []
@@ -615,9 +624,12 @@ class StorageIntegrationService:
count_result = await session.execute(count_query)
upload_count = count_result.scalar()
task_id = f.processing_tasks[0].task_id if f.processing_tasks else None
file_groups.append({
'filename': f.original_filename,
'latest_id': f.id,
'latest_task_id': task_id,
'latest_upload_time': f.upload_time.isoformat() if f.upload_time else None,
'latest_status': f.status,
'upload_count': upload_count,