"""系数表查询、维护与工作簿导入导出,复用计提参数权限。""" from datetime import date from fastapi import APIRouter, File, UploadFile from fastapi.responses import Response from app.api.deps import DbSession, LoginUser, RequestMetaDep from app.core.response import ok from app.schemas.coefficient import CoefficientChangeIn from app.services import coefficient_service router = APIRouter(prefix="/coefficients", tags=["计提系数表"]) @router.get("") def catalog(session: DbSession, _: LoginUser, as_of: date | None = None): return ok(coefficient_service.catalog(session, as_of)) @router.put("") def save(payload: CoefficientChangeIn, session: DbSession, actor: LoginUser, meta: RequestMetaDep): return ok(coefficient_service.save(session, payload, actor, meta)) @router.get("/export") def export(session: DbSession, _: LoginUser, as_of: date | None = None): return Response( coefficient_service.workbook(session, as_of), media_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", headers={"Content-Disposition": 'attachment; filename="coefficients.xlsx"'}, ) @router.post("/import-preview") def import_preview(session: DbSession, _: LoginUser, file: UploadFile = File(...)): return ok(coefficient_service.import_preview(session, file.file.read(2 * 1024 * 1024 + 1)))