feat: 支持合同模板上传与对比记录持久化
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
"""文档控制器。"""
|
||||
|
||||
import json
|
||||
from typing import Any
|
||||
|
||||
from fastapi import Depends, File, Form, Query, UploadFile
|
||||
@@ -8,7 +9,8 @@ from sqlalchemy import text
|
||||
|
||||
from fastapi_common.fastapi_common_sqlalchemy.database import GetAsyncSession
|
||||
from fastapi_common.fastapi_common_web.controller import BaseController
|
||||
from fastapi_common.fastapi_common_web.domain.responses import Result
|
||||
from fastapi_common.fastapi_common_web.domain.responses import Result, StatusCodeEnum
|
||||
from fastapi_common.fastapi_common_web.exception.LeauditException import LeauditException
|
||||
from fastapi_common.fastapi_common_security.security import verify_access_token
|
||||
|
||||
from fastapi_modules.fastapi_leaudit.domian.vo.documentVo import (
|
||||
@@ -21,6 +23,7 @@ from fastapi_modules.fastapi_leaudit.domian.vo.documentVo import (
|
||||
DocumentTypeRootCreateDTO,
|
||||
DocumentTypeRootItemVO,
|
||||
DocumentTypeRootUpdateDTO,
|
||||
ContractTemplateUploadVO,
|
||||
DocumentTypeUpdateDTO,
|
||||
DocumentUploadVO,
|
||||
)
|
||||
@@ -94,6 +97,33 @@ class DocumentController(BaseController):
|
||||
)
|
||||
return Result.success(data=Data)
|
||||
|
||||
@self.router.post("/upload/upload_contract_template", response_model=Result[ContractTemplateUploadVO])
|
||||
async def UploadContractTemplate(
|
||||
file: UploadFile = File(..., description="合同模板文件"),
|
||||
upload_info: str = Form(..., description="模板上传信息 JSON,包含 document_id/comparison_id"),
|
||||
payload: dict[str, Any] = Depends(verify_access_token),
|
||||
):
|
||||
"""兼容旧前端的合同模板上传接口。"""
|
||||
try:
|
||||
uploadInfo = json.loads(upload_info or "{}")
|
||||
except json.JSONDecodeError as error:
|
||||
raise LeauditException(StatusCodeEnum.HTTP_400_BAD_REQUEST, "upload_info 不是合法 JSON") from error
|
||||
|
||||
documentId = int(uploadInfo.get("document_id") or 0)
|
||||
comparisonIdRaw = uploadInfo.get("comparison_id")
|
||||
comparisonId = int(comparisonIdRaw) if comparisonIdRaw not in (None, "") else None
|
||||
content = await file.read()
|
||||
|
||||
data = await self.DocumentService.UploadContractTemplate(
|
||||
CurrentUserId=int(payload["user_id"]),
|
||||
DocumentId=documentId,
|
||||
FileName=file.filename or "template.bin",
|
||||
FileContent=content,
|
||||
ContentType=file.content_type,
|
||||
ComparisonId=comparisonId,
|
||||
)
|
||||
return Result.success(data=data, message="合同模板上传成功")
|
||||
|
||||
@self.router.get("/documents/list", response_model=Result[DocumentListPageVO])
|
||||
async def ListDocuments(
|
||||
page: int = 1,
|
||||
|
||||
Reference in New Issue
Block a user