feat:提交下载文件代码

This commit is contained in:
雷雨
2025-12-06 16:23:21 +08:00
parent 9fd3376557
commit 43af924920
5 changed files with 45 additions and 6 deletions

View File

@@ -9,6 +9,7 @@ DB_PATH = config('DB_PATH', default='E://pyptoject//yj_resume//main.sqlite3')
class DBTASK(Base):
__tablename__ = 'db_task'
id = Column(String(100), primary_key=True)
name = Column(String(100), nullable=False)
create_time = Column(DateTime, nullable=False, )
# 0 代表待执行1 成功2 失败
status = Column(Integer, nullable=False, default=0)

19
main.py
View File

@@ -4,7 +4,8 @@ from fastapi import FastAPI, File, UploadFile, HTTPException
from typing import List
from service.file_service import check_and_create_directory, upload_and_save_file
from service import excel_service
from service.db_service import get_task_list
from fastapi.responses import FileResponse
app = FastAPI()
@@ -28,8 +29,20 @@ async def create_upload_files(files: List[UploadFile] = File(...)):
@app.get("/export_task_data_to_excel")
def export_task_data_to_excel(task_id: str):
message = excel_service.export_task_data_to_excel(task_id)
return {"message": message}
path_xx = excel_service.export_task_data_to_excel(task_id)
if not path_xx:
raise HTTPException(status_code=404, detail="file not found")
return FileResponse(
path=path_xx,
media_type="application/octet-stream", # 通用二进制流
filename=f"{task_id}.xlsx" # 浏览器下载时使用的文件名
)
@app.get("/parse_task_list")
def parse_task_list():
data = get_task_list()
return {"data": data, "code": 200, }
if __name__ == '__main__':

18
service/db_service.py Normal file
View File

@@ -0,0 +1,18 @@
from db.sql_db import DBTASK, DBRESUME, SqliteSqlalchemy
def get_task_list():
task_list = SqliteSqlalchemy().session.query(DBTASK).order_by(DBTASK.create_time.desc()).all()
result=[]
for task in task_list:
result.append({
"id": task.id,
"name": task.name,
"success_num": task.success_num,
"fail_num": task.fail_num,
"status": task.status,
"total_num": task.total_num,
"message": task.message,
"create_time": task.create_time.strftime("%Y-%m-%d %H:%M:%S") if task.create_time else None,
})
return result

View File

@@ -22,9 +22,13 @@ def export_to_excel(task_id):
def export_task_data_to_excel(task_id):
pathxx = pathlib.Path(BASE_PATH).joinpath(task_id)
pathxx = pathxx.joinpath(f"{task_id}.xlsx")
if pathxx.exists():
return pathxx
session = SqliteSqlalchemy().session
task = session.query(DBTASK).filter_by(id=task_id).first()
if not task or task.status == 0 or task.status == 2:
return "任务未完成或者失败"
return None
export_to_excel(task_id)
return "导出成功"
return pathxx

View File

@@ -15,8 +15,11 @@ def check_and_create_directory(files):
if not files or len(files) == 0:
return None
id = str(uuid.uuid4())
current_time = datetime.now()
# 格式化时间为字符串
formatted_time = current_time.strftime("%Y-%m-%d-%H-%M-%S")
task = DBTASK(id=id, create_time=datetime.now(), status=0, success_num=0, total_num=len(files),
fail_num=0)
fail_num=0,name=f"解析任务({formatted_time})")
session = SqliteSqlalchemy().session
try: