From 83826aa85a1806dff680fadb742edfea2eb81d3d Mon Sep 17 00:00:00 2001 From: DingZQ Date: Sun, 2 Mar 2025 17:25:21 +0800 Subject: [PATCH] Add api fastapi_query_scada_data_by_device_id_and_date --- influxdb_api.py | 22 +++++++++++++++++++--- main.py | 5 +++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/influxdb_api.py b/influxdb_api.py index 5f17701..5864c66 100644 --- a/influxdb_api.py +++ b/influxdb_api.py @@ -1048,9 +1048,11 @@ def query_SCADA_data_by_device_ID_and_time_range(query_ids_list: List[str], star query_api = client.query_api() # 将北京时间转换为 UTC 时间 - utc_start_time = time_api.to_utc_time(start_time) - utc_end_time = time_api.to_utc_time(end_time) - + bj_start_time = time_api.parse_beijing_time(start_time) + utc_start_time = time_api.to_utc_time(bj_start_time) + bj_end_time = time_api.parse_beijing_time(end_time) + utc_end_time = time_api.to_utc_time(bj_end_time) + # 构建查询字典 SCADA_results = [] @@ -1087,6 +1089,20 @@ def query_SCADA_data_by_device_ID_and_time_range(query_ids_list: List[str], star return SCADA_results +# DingZQ, 2025-02-15 +def query_SCADA_data_by_device_ID_and_date(query_ids_list: List[str], query_date: str, bucket: str="SCADA_data", client: InfluxDBClient=client) -> list[dict[str, float]]: + """ + 根据SCADA设备的ID和日期查询值 + :param query_ids_list: SCADA设备ID的列表 + :param query_date: 输入的日期,格式为 '2024-11-24', 日期是北京时间的日期 + :param bucket: InfluxDB 的 bucket 名称,默认值为 "SCADA_data"。 + :param client: 已初始化的 InfluxDBClient 实例。 + :return: + """ + start_time, end_time = time_api.parse_date_range(query_date) + return query_SCADA_data_by_device_ID_and_time_range(query_ids_list, str(start_time), str(end_time), bucket, client) + + # 2025/02/01 def store_realtime_simulation_result_to_influxdb(node_result_list: List[Dict[str, any]], link_result_list: List[Dict[str, any]], result_start_time: str, diff --git a/main.py b/main.py index 02aa7f6..4f69be0 100644 --- a/main.py +++ b/main.py @@ -2169,6 +2169,11 @@ async def fastapi_query_scada_data_by_device_id_and_time_range(ids: str, startti query_ids = ids.split(',') return influxdb_api.query_SCADA_data_by_device_ID_and_time_range(query_ids_list=query_ids, start_time=starttime, end_time=endtime, client=influx_client) +@app.get("/queryscadadatabydeviceidanddate/") +async def fastapi_query_scada_data_by_device_id_and_date(ids: str, querydate: str): + query_ids = ids.split(',') + return influxdb_api.query_SCADA_data_by_device_ID_and_date(query_ids_list=query_ids, query_date=querydate, client=influx_client) + @app.get("/queryinfluxdbbuckets/")