feat: integrate govdoc platform updates
This commit is contained in:
@@ -7,7 +7,7 @@ import json
|
||||
import mimetypes
|
||||
import time
|
||||
from dataclasses import dataclass
|
||||
from datetime import datetime
|
||||
from datetime import date, datetime
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
@@ -60,6 +60,20 @@ class GovdocServiceImpl(IGovdocService):
|
||||
self.OssService = OssService or OssServiceImpl()
|
||||
self.Storage = StorageAdapter()
|
||||
|
||||
def _parse_date_filter(self, value: str | None, field_name: str) -> date | None:
|
||||
if value is None:
|
||||
return None
|
||||
normalized = value.strip()
|
||||
if not normalized:
|
||||
return None
|
||||
try:
|
||||
return date.fromisoformat(normalized)
|
||||
except ValueError as exc:
|
||||
raise LeauditException(
|
||||
StatusCodeEnum.HTTP_400_BAD_REQUEST,
|
||||
f"{field_name} 格式非法,应为 YYYY-MM-DD",
|
||||
) from exc
|
||||
|
||||
# ── 文档 ──────────────────────────────────────────────
|
||||
|
||||
async def UploadDocument(
|
||||
@@ -250,12 +264,14 @@ class GovdocServiceImpl(IGovdocService):
|
||||
if resultStatus:
|
||||
filters.append("COALESCE(gr.result_status, '') = :result_status")
|
||||
params["result_status"] = resultStatus.strip()
|
||||
if dateFrom:
|
||||
filters.append("d.created_at >= CAST(:date_from AS date)")
|
||||
params["date_from"] = dateFrom.strip()
|
||||
if dateTo:
|
||||
filters.append("d.created_at < (CAST(:date_to AS date) + INTERVAL '1 day')")
|
||||
params["date_to"] = dateTo.strip()
|
||||
parsedDateFrom = self._parse_date_filter(dateFrom, "dateFrom")
|
||||
parsedDateTo = self._parse_date_filter(dateTo, "dateTo")
|
||||
if parsedDateFrom:
|
||||
filters.append("d.created_at::date >= :date_from")
|
||||
params["date_from"] = parsedDateFrom
|
||||
if parsedDateTo:
|
||||
filters.append("d.created_at::date <= :date_to")
|
||||
params["date_to"] = parsedDateTo
|
||||
|
||||
whereClause = " AND ".join(filters)
|
||||
|
||||
@@ -901,9 +917,10 @@ class GovdocServiceImpl(IGovdocService):
|
||||
artifact = await self._get_report_artifact(runId, "html_report")
|
||||
if not artifact:
|
||||
return {"runId": runId, "htmlUrl": ""}
|
||||
content = await self.OssService.DownloadBytes(str(artifact["oss_url"]))
|
||||
return {
|
||||
"runId": runId,
|
||||
"htmlUrl": await self.OssService.PresignGetUrl(str(artifact["oss_url"])),
|
||||
"html": content.decode("utf-8"),
|
||||
}
|
||||
|
||||
async def GetReportDocx(self, runId: int) -> dict[str, Any]:
|
||||
|
||||
Reference in New Issue
Block a user