cockpit/Router/DaliyRouter.py

51 lines
1.5 KiB
Python

import math
from fastapi import APIRouter, UploadFile, File, Depends, HTTPException
import pandas as pd
from sqlalchemy.orm import Session
from Crud import DailyCrud
from Schemas import DailySchemas
from Utils.SqlAlchemyUtils import get_db
router = APIRouter(
tags=["部门日报"],
prefix="/api/daily",
)
@router.post("/upload", summary='日报录入', description='录入部门日报')
def create_upload_file(file: UploadFile = File(...), db: Session = Depends(get_db)):
# 使用 Pandas 读取 Excel 文件
df = pd.read_csv(file.file)
for index, row in df.iterrows():
insert = {
"department": row[0],
"staff_name": row[1],
"work_date": row[2],
"work_content": row[3],
"work_status": row[4],
}
for key, val in insert.items():
if isinstance(insert.get(key), str):
continue
elif insert.get(key) is None:
continue
elif math.isnan(insert.get(key)):
insert[key] = None
DailyCrud.insert_data(db, insert)
return {
"code": 200,
"message": "录入成功",
"content": {}
}
@router.post("/query", summary='日报查询', description='查询部门日报')
def func(schema: DailySchemas.QueryDaily, db: Session = Depends(get_db)):
result = DailyCrud.query_daily(db, schema)
return {
"code": 200,
"message": "查询成功",
"content": result
}