feat: support cross-review supplement opinions export
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
from typing import Any
|
||||
|
||||
from fastapi import Depends, File, Form, Query, UploadFile
|
||||
from fastapi.responses import JSONResponse
|
||||
from fastapi.responses import JSONResponse, Response
|
||||
|
||||
from fastapi_common.fastapi_common_security.security import verify_access_token
|
||||
from fastapi_common.fastapi_common_web.controller import BaseController
|
||||
@@ -221,6 +221,26 @@ class CrossReviewController(BaseController):
|
||||
Data = await self.CrossReviewService.GetDocumentPendingVotes(CurrentUserId=int(payload["user_id"]), DocumentId=DocumentId)
|
||||
return Result.success(data=Data)
|
||||
|
||||
@self.router.get("/documents/{DocumentId}/proposals/export")
|
||||
async def ExportDocumentProposals(
|
||||
DocumentId: int,
|
||||
payload: dict[str, Any] = Depends(verify_access_token),
|
||||
):
|
||||
"""导出文档提案列表 Excel。"""
|
||||
if not await self._check_permission(int(payload["user_id"]), [self._PERMISSIONS["proposal_read"]]):
|
||||
return JSONResponse(status_code=403, content={"code": 403, "msg": "当前用户没有导出交叉评查提案权限", "data": None})
|
||||
fileContent, fileName = await self.CrossReviewService.ExportDocumentProposals(
|
||||
CurrentUserId=int(payload["user_id"]),
|
||||
DocumentId=DocumentId,
|
||||
)
|
||||
return Response(
|
||||
content=fileContent,
|
||||
media_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
||||
headers={
|
||||
"Content-Disposition": f"attachment; filename*=UTF-8''{fileName}",
|
||||
},
|
||||
)
|
||||
|
||||
async def _check_permission(self, user_id: int, permission_keys: list[str]) -> bool:
|
||||
"""OR 逻辑权限校验。"""
|
||||
for permission_key in permission_keys:
|
||||
|
||||
Reference in New Issue
Block a user