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 }