from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from Utils.SqlAlchemyUtils import get_db, Base from . import Schemas from . import Crud from Utils.SqlAlchemyUtils import QueryParams, query_common from .Models import Finance router = APIRouter(tags=["财务数据"]) @router.post("/finance/add", summary="添加财务数据", response_model=Schemas.FinanceAddRes) def finance_add(req: Schemas.FinanceAddReq, db: Session = Depends(get_db)): item = Crud.finance_add(db, req) return Schemas.FinanceAddRes(**item.to_dict()) @router.post("/finance/delete", summary="删除财务数据") def finance_delete(req: Schemas.FinanceDeleteReq, db: Session = Depends(get_db)): Crud.finance_delete(db, req.id) return "删除成功" @router.post("/finance/update", summary="更新财务数据", response_model=Schemas.FinanceUpdateRes) def finance_update(req: Schemas.FinanceUpdateReq, db: Session = Depends(get_db)): item = Crud.finance_update(db, req) return Schemas.FinanceUpdateRes(**item.to_dict()) @router.post("/finance/get", summary="获取财务数据", response_model=Schemas.FinanceGetRes) def finance_get(req: Schemas.FinanceGetReq, db: Session = Depends(get_db)): item = Crud.finance_get(db, req.id) if not item: raise HTTPException(detail="未查询到信息", status_code=404) finance_info = item[0].to_dict() finance_info['user_info'] = item[1].to_dict() return Schemas.FinanceGetRes(**finance_info) @router.post("/finance/query", summary="查询财务数据", response_model=Schemas.FinanceQueryRes) def finance_query(req: Schemas.FinanceQueryReq, db: Session = Depends(get_db)): count, query,total = Crud.finance_query(db, req) items = [] for item in query: finance_info = item[0].to_dict() finance_info['user_info'] = item[1].to_dict() items.append(Schemas.FinanceInfo(**finance_info)) print(total,"total") return Schemas.FinanceQueryRes(count=count, items=items,total=total) @router.post("/finance/query_common", summary="通用查询财务数据", response_model=Schemas.FinanceQueryRes) def finance_query_common(req: QueryParams, db: Session = Depends(get_db)): count, query = query_common(db, Finance, req) items = [Schemas.FinanceInfo(**item.to_dict()) for item in query] return Schemas.FinanceQueryRes(count=count, items=items) #########