2023-02-24 15:27:19 +08:00
|
|
|
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='录入部门日报')
|
2023-02-24 15:58:29 +08:00
|
|
|
def create_upload_file(file: UploadFile = File(...), db: Session = Depends(get_db)):
|
2023-02-24 15:27:19 +08:00
|
|
|
# 使用 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
|
|
|
|
}
|