58 lines
2.2 KiB
Python
58 lines
2.2 KiB
Python
import json
|
|
from fastapi import APIRouter, HTTPException, Query, Depends
|
|
from app.infra.db.metadb.repositories.metadata_repository import MetadataRepository
|
|
from app.auth.project_dependencies import (
|
|
get_metadata_repository,
|
|
)
|
|
from app.domain.schemas.metadata import ProjectMetaResponse
|
|
from app.services.tjnetwork import (
|
|
ChangeSet,
|
|
export_inp,
|
|
get_all_vertices,
|
|
get_all_scada_info,
|
|
)
|
|
|
|
router = APIRouter()
|
|
|
|
@router.get("/projects/current", summary="获取项目信息", description="从数据库获取项目的详细信息,包括地图范围等。", response_model=ProjectMetaResponse)
|
|
async def get_project_info_endpoint(
|
|
network: str = Query(..., description="管网名称(或项目代码)"),
|
|
metadata_repo: MetadataRepository = Depends(get_metadata_repository),
|
|
):
|
|
"""
|
|
获取项目信息
|
|
|
|
- **network**: 管网名称(或项目代码)
|
|
"""
|
|
project_detail = await metadata_repo.get_project_detail_by_code(network)
|
|
if not project_detail:
|
|
raise HTTPException(status_code=404, detail=f"Project {network} not found")
|
|
return ProjectMetaResponse(
|
|
project_id=project_detail.project_id,
|
|
name=project_detail.name,
|
|
code=project_detail.code,
|
|
description=project_detail.description,
|
|
gs_workspace=project_detail.gs_workspace,
|
|
map_extent=project_detail.map_extent,
|
|
status=project_detail.status,
|
|
project_role="viewer", # Default role for public access
|
|
)
|
|
|
|
@router.get("/projects/current/exports/change-set", response_model=None, summary="导出项目为 ChangeSet", description="导出项目的变更集 (ChangeSet),包含顶点、SCADA 元素、DMA、SA、VD 等信息。")
|
|
def export_inp_endpoint(
|
|
network: str = Query(..., description="管网名称(或数据库名称)"),
|
|
version: str = Query(..., description="版本号 (通常用于增量更新)")
|
|
) -> ChangeSet:
|
|
"""
|
|
导出项目为 ChangeSet
|
|
|
|
- **network**: 管网名称(或数据库名称)
|
|
- **version**: 版本号
|
|
"""
|
|
cs = export_inp(network, version)
|
|
op = cs.operations[0]
|
|
op["vertex"] = json.dumps(get_all_vertices(network))
|
|
op["scada"] = json.dumps(get_all_scada_info(network))
|
|
|
|
return cs
|