from typing import Any from fastapi import APIRouter, Request, Query from app.services.tjnetwork import ( ChangeSet, get_scada_info, get_all_scada_info, get_scada_device_schema, get_scada_device, set_scada_device, add_scada_device, delete_scada_device, clean_scada_device, get_all_scada_device_ids, get_all_scada_devices, get_scada_device_data_schema, get_scada_device_data, set_scada_device_data, add_scada_device_data, delete_scada_device_data, clean_scada_device_data, get_scada_element_schema, get_scada_element, set_scada_element, add_scada_element, delete_scada_element, clean_scada_element, get_all_scada_elements, get_scada_element_schema, get_scada_info_schema, ) router = APIRouter() @router.get("/getscadaproperties/", summary="获取SCADA属性", tags=["SCADA基础"]) async def fast_get_scada_properties( network: str = Query(..., description="管网名称(或数据库名称)"), scada: str = Query(..., description="SCADA设备ID") ) -> dict[str, Any]: """ 获取单个SCADA设备的属性信息 根据管网名称和SCADA设备ID获取该设备的完整属性。 Args: network: 管网名称(或数据库名称) scada: SCADA设备ID Returns: SCADA设备的属性字典 """ return get_scada_info(network, scada) @router.get("/getallscadaproperties/", summary="获取所有SCADA属性", tags=["SCADA基础"]) async def fast_get_all_scada_properties( network: str = Query(..., description="管网名称(或数据库名称)") ) -> list[dict[str, Any]]: """ 获取指定管网所有SCADA设备的属性信息 查询该管网下所有已配置的SCADA设备的属性列表。 Args: network: 管网名称(或数据库名称) Returns: SCADA设备属性列表 """ return get_all_scada_info(network) ############################################################ # scada_device 设备管理 ############################################################ @router.get("/getscadadeviceschema/", summary="获取SCADA设备架构", tags=["SCADA设备"]) async def fastapi_get_scada_device_schema( network: str = Query(..., description="管网名称(或数据库名称)") ) -> dict[str, dict[str, Any]]: """ 获取SCADA设备的数据架构 返回SCADA设备表的字段定义和类型信息。 Args: network: 管网名称(或数据库名称) Returns: SCADA设备的字段架构信息 """ return get_scada_device_schema(network) @router.get("/getscadadevice/", summary="获取SCADA设备", tags=["SCADA设备"]) async def fastapi_get_scada_device( network: str = Query(..., description="管网名称(或数据库名称)"), id: str = Query(..., description="SCADA设备ID") ) -> dict[str, Any]: """ 获取单个SCADA设备的信息 根据设备ID查询该设备的详细信息。 Args: network: 管网名称(或数据库名称) id: SCADA设备ID Returns: SCADA设备信息 """ return get_scada_device(network, id) @router.post("/setscadadevice/", response_model=None, summary="更新SCADA设备", tags=["SCADA设备"]) async def fastapi_set_scada_device( network: str = Query(..., description="管网名称(或数据库名称)"), req: Request = None ) -> ChangeSet: """ 更新SCADA设备信息 修改指定SCADA设备的属性。 Args: network: 管网名称(或数据库名称) req: 请求体,包含要更新的设备属性 Returns: 变更集合信息 """ props = await req.json() return set_scada_device(network, ChangeSet(props)) @router.post("/addscadadevice/", response_model=None, summary="添加SCADA设备", tags=["SCADA设备"]) async def fastapi_add_scada_device( network: str = Query(..., description="管网名称(或数据库名称)"), req: Request = None ) -> ChangeSet: """ 添加新的SCADA设备 在指定管网中添加一个新的SCADA设备。 Args: network: 管网名称(或数据库名称) req: 请求体,包含新设备的属性 Returns: 变更集合信息 """ props = await req.json() return add_scada_device(network, ChangeSet(props)) @router.post("/deletescadadevice/", response_model=None, summary="删除SCADA设备", tags=["SCADA设备"]) async def fastapi_delete_scada_device( network: str = Query(..., description="管网名称(或数据库名称)"), req: Request = None ) -> ChangeSet: """ 删除SCADA设备 从指定管网中删除一个SCADA设备。 Args: network: 管网名称(或数据库名称) req: 请求体,包含要删除的设备ID Returns: 变更集合信息 """ props = await req.json() return delete_scada_device(network, ChangeSet(props)) @router.post("/cleanscadadevice/", response_model=None, summary="清空SCADA设备表", tags=["SCADA设备"]) async def fastapi_clean_scada_device( network: str = Query(..., description="管网名称(或数据库名称)") ) -> ChangeSet: """ 清空SCADA设备表 删除指定管网中所有的SCADA设备。 Args: network: 管网名称(或数据库名称) Returns: 变更集合信息 """ return clean_scada_device(network) @router.get("/getallscadadeviceids/", summary="获取所有SCADA设备ID", tags=["SCADA设备"]) async def fastapi_get_all_scada_device_ids( network: str = Query(..., description="管网名称(或数据库名称)") ) -> list[str]: """ 获取指定管网所有SCADA设备的ID列表 Args: network: 管网名称(或数据库名称) Returns: SCADA设备ID列表 """ return get_all_scada_device_ids(network) @router.get("/getallscadadevices/", summary="获取所有SCADA设备", tags=["SCADA设备"]) async def fastapi_get_all_scada_devices( network: str = Query(..., description="管网名称(或数据库名称)") ) -> list[dict[str, Any]]: """ 获取指定管网所有SCADA设备的完整信息 Args: network: 管网名称(或数据库名称) Returns: SCADA设备信息列表 """ return get_all_scada_devices(network) ############################################################ # scada_device_data 设备数据管理 ############################################################ @router.get("/getscadadevicedataschema/", summary="获取SCADA设备数据架构", tags=["SCADA设备数据"]) async def fastapi_get_scada_device_data_schema( network: str = Query(..., description="管网名称(或数据库名称)"), ) -> dict[str, dict[str, Any]]: """ 获取SCADA设备数据的表结构 返回SCADA设备数据表的字段定义和类型信息。 Args: network: 管网名称(或数据库名称) Returns: SCADA设备数据的字段架构信息 """ return get_scada_device_data_schema(network) @router.get("/getscadadevicedata/", summary="获取SCADA设备数据", tags=["SCADA设备数据"]) async def fastapi_get_scada_device_data( network: str = Query(..., description="管网名称(或数据库名称)"), device_id: str = Query(..., description="SCADA设备ID") ) -> dict[str, Any]: """ 获取单个SCADA设备的数据 查询指定设备的监测数据或配置数据。 Args: network: 管网名称(或数据库名称) device_id: SCADA设备ID Returns: SCADA设备数据 """ return get_scada_device_data(network, device_id) @router.post("/setscadadevicedata/", response_model=None, summary="更新SCADA设备数据", tags=["SCADA设备数据"]) async def fastapi_set_scada_device_data( network: str = Query(..., description="管网名称(或数据库名称)"), req: Request = None ) -> ChangeSet: """ 更新SCADA设备数据 修改指定SCADA设备的数据。 Args: network: 管网名称(或数据库名称) req: 请求体,包含要更新的数据 Returns: 变更集合信息 """ props = await req.json() return set_scada_device_data(network, ChangeSet(props)) @router.post("/addscadadevicedata/", response_model=None, summary="添加SCADA设备数据", tags=["SCADA设备数据"]) async def fastapi_add_scada_device_data( network: str = Query(..., description="管网名称(或数据库名称)"), req: Request = None ) -> ChangeSet: """ 添加新的SCADA设备数据 为指定SCADA设备添加新的数据记录。 Args: network: 管网名称(或数据库名称) req: 请求体,包含新数据的内容 Returns: 变更集合信息 """ props = await req.json() return add_scada_device_data(network, ChangeSet(props)) @router.post("/deletescadadevicedata/", response_model=None, summary="删除SCADA设备数据", tags=["SCADA设备数据"]) async def fastapi_delete_scada_device_data( network: str = Query(..., description="管网名称(或数据库名称)"), req: Request = None ) -> ChangeSet: """ 删除SCADA设备数据 删除指定SCADA设备的数据记录。 Args: network: 管网名称(或数据库名称) req: 请求体,包含要删除的数据ID Returns: 变更集合信息 """ props = await req.json() return delete_scada_device_data(network, ChangeSet(props)) @router.post("/cleanscadadevicedata/", response_model=None, summary="清空SCADA设备数据表", tags=["SCADA设备数据"]) async def fastapi_clean_scada_device_data( network: str = Query(..., description="管网名称(或数据库名称)") ) -> ChangeSet: """ 清空SCADA设备数据表 删除指定管网中所有SCADA设备的数据。 Args: network: 管网名称(或数据库名称) Returns: 变更集合信息 """ return clean_scada_device_data(network) ############################################################ # scada_element SCADA元素映射 ############################################################ @router.get("/getscadaelementschema/", summary="获取SCADA元素架构", tags=["SCADA元素映射"]) async def fastapi_get_scada_element_schema( network: str = Query(..., description="管网名称(或数据库名称)"), ) -> dict[str, dict[str, Any]]: """ 获取SCADA元素映射的表结构 返回SCADA元素映射表的字段定义和类型信息。 Args: network: 管网名称(或数据库名称) Returns: SCADA元素映射的字段架构信息 """ return get_scada_element_schema(network) @router.get("/getscadaelements/", summary="获取所有SCADA元素映射", tags=["SCADA元素映射"]) async def fastapi_get_scada_elements( network: str = Query(..., description="管网名称(或数据库名称)") ) -> list[dict[str, Any]]: """ 获取指定管网所有SCADA元素映射 查询所有SCADA设备与管网元素(节点/管道)的映射关系。 Args: network: 管网名称(或数据库名称) Returns: SCADA元素映射列表 """ return get_all_scada_elements(network) @router.get("/getscadaelement/", summary="获取单个SCADA元素映射", tags=["SCADA元素映射"]) async def fastapi_get_scada_element( network: str = Query(..., description="管网名称(或数据库名称)"), id: str = Query(..., description="SCADA元素映射ID") ) -> dict[str, Any]: """ 获取单个SCADA元素映射的信息 根据ID查询特定的SCADA设备与管网元素的映射关系。 Args: network: 管网名称(或数据库名称) id: SCADA元素映射ID Returns: SCADA元素映射信息 """ return get_scada_element(network, id) @router.post("/setscadaelement/", response_model=None, summary="更新SCADA元素映射", tags=["SCADA元素映射"]) async def fastapi_set_scada_element( network: str = Query(..., description="管网名称(或数据库名称)"), req: Request = None ) -> ChangeSet: """ 更新SCADA元素映射 修改SCADA设备与管网元素的映射关系。 Args: network: 管网名称(或数据库名称) req: 请求体,包含要更新的映射信息 Returns: 变更集合信息 """ props = await req.json() return set_scada_element(network, ChangeSet(props)) @router.post("/addscadaelement/", response_model=None, summary="添加SCADA元素映射", tags=["SCADA元素映射"]) async def fastapi_add_scada_element( network: str = Query(..., description="管网名称(或数据库名称)"), req: Request = None ) -> ChangeSet: """ 添加新的SCADA元素映射 创建SCADA设备与管网元素的新映射关系。 Args: network: 管网名称(或数据库名称) req: 请求体,包含新映射的信息 Returns: 变更集合信息 """ props = await req.json() return add_scada_element(network, ChangeSet(props)) @router.post("/deletescadaelement/", response_model=None, summary="删除SCADA元素映射", tags=["SCADA元素映射"]) async def fastapi_delete_scada_element( network: str = Query(..., description="管网名称(或数据库名称)"), req: Request = None ) -> ChangeSet: """ 删除SCADA元素映射 移除SCADA设备与管网元素的映射关系。 Args: network: 管网名称(或数据库名称) req: 请求体,包含要删除的映射ID Returns: 变更集合信息 """ props = await req.json() return delete_scada_element(network, ChangeSet(props)) @router.post("/cleanscadaelement/", response_model=None, summary="清空SCADA元素映射表", tags=["SCADA元素映射"]) async def fastapi_clean_scada_element( network: str = Query(..., description="管网名称(或数据库名称)") ) -> ChangeSet: """ 清空SCADA元素映射表 删除指定管网中所有的SCADA元素映射。 Args: network: 管网名称(或数据库名称) Returns: 变更集合信息 """ return clean_scada_element(network) ############################################################ # scada_info SCADA信息 ############################################################ @router.get("/getscadainfoschema/", summary="获取SCADA信息架构", tags=["SCADA信息"]) async def fastapi_get_scada_info_schema( network: str = Query(..., description="管网名称(或数据库名称)") ) -> dict[str, dict[str, Any]]: """ 获取SCADA信息表的结构 返回SCADA信息表的字段定义和类型信息。 Args: network: 管网名称(或数据库名称) Returns: SCADA信息的字段架构信息 """ return get_scada_info_schema(network) @router.get("/getscadainfo/", summary="获取SCADA信息", tags=["SCADA信息"]) async def fastapi_get_scada_info( network: str = Query(..., description="管网名称(或数据库名称)"), id: str = Query(..., description="SCADA信息ID") ) -> dict[str, Any]: """ 获取单个SCADA信息 根据ID查询SCADA的详细配置信息。 Args: network: 管网名称(或数据库名称) id: SCADA信息ID Returns: SCADA信息详情 """ return get_scada_info(network, id) @router.get("/getallscadainfo/", summary="获取所有SCADA信息", tags=["SCADA信息"]) async def fastapi_get_all_scada_info( network: str = Query(..., description="管网名称(或数据库名称)") ) -> list[dict[str, Any]]: """ 获取指定管网所有SCADA的信息 查询该管网下所有已配置的SCADA的完整信息。 Args: network: 管网名称(或数据库名称) Returns: SCADA信息列表 """ return get_all_scada_info(network)