feat:提交下载文件代码
This commit is contained in:
@@ -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
19
main.py
@@ -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
18
service/db_service.py
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user