528 lines
16 KiB
Python
528 lines
16 KiB
Python
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)
|