From 6fffba9bc267390974676f5255b705e7523827ad Mon Sep 17 00:00:00 2001 From: DingZQ Date: Sat, 17 May 2025 22:09:24 +0800 Subject: [PATCH] Update main.py --- main.py | 67 +++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 58 insertions(+), 9 deletions(-) diff --git a/main.py b/main.py index 52c0fb3..fca55d8 100644 --- a/main.py +++ b/main.py @@ -25,6 +25,7 @@ import influxdb_api import py_linq import time_api import simulation +import globals JUNCTION = 0 RESERVOIR = 1 @@ -2727,8 +2728,34 @@ def generate_openapi_json(): # return result # DingZQ, 2025-05-17 -@app.get("/runsimulationbydate/") -async def fastapi_run_project_by_date(network: str, querydate: str): +class Download_History_Data_Manually(BaseModel): + """ + download_date:样式如 datetime(2025, 5, 4) + """ + download_date: datetime + + +@app.post("/download_history_data_manually/") +async def fastapi_download_history_data_manually(data: Download_History_Data_Manually) -> None: + item = data.dict() + # 创建东八区时区对象 + tz = timezone(timedelta(hours=8)) + begin_time = datetime.combine(item['download_date'].date(), time.min).replace(tzinfo=tz) + end_time = datetime.combine(item['download_date'].date(), time(23, 59, 59)).replace(tzinfo=tz) + influxdb_api.download_history_data_manually(begin_time=begin_time, end_time=end_time) + +class Run_Simulation_Manually_by_Date(BaseModel): + """ + name:数据库名称 + simulation_date:样式如 datetime(2025, 5, 4) + """ + name: str + simulation_date: datetime + + +@app.post("/run_simulation_manually_by_date/") +async def fastapi_run_simulation_manually_by_date(data: Run_Simulation_Manually_by_Date) -> None: + item = data.dict() filename = 'c:/lock.simulation' filename2 = 'c:/lock.simulation2' if os.path.exists(filename2): @@ -2736,17 +2763,39 @@ async def fastapi_run_project_by_date(network: str, querydate: str): raise HTTPException(status_code=409, detail="is in simulation") else: print('file doesnt exists') - #os.rename(filename, filename2) + simulation.query_corresponding_element_id_and_query_id(item['name']) + simulation.query_corresponding_pattern_id_and_query_id(item['name']) + region_result = simulation.query_non_realtime_region(item['name']) - bg_start_time, bg_end_time = time_api.parse_beijing_date_range(querydate) + globals.source_outflow_region_id = simulation.get_source_outflow_region_id(item['name'], region_result) + globals.realtime_region_pipe_flow_and_demand_id = simulation.query_realtime_region_pipe_flow_and_demand_id( + item['name'], region_result) + globals.pipe_flow_region_patterns = simulation.query_pipe_flow_region_patterns(item['name']) - # convert to the format of 2024-11-25T09:00:00+08:00' - bg_start_time_str = bg_start_time.isoformat() - print(f"bg_start_time_str: {bg_start_time_str}") + globals.non_realtime_region_patterns = simulation.query_non_realtime_region_patterns(item['name'], region_result) + globals.source_outflow_region_patterns, globals.realtime_region_pipe_flow_and_demand_patterns = \ + simulation.get_realtime_region_patterns( + item['name'], globals.source_outflow_region_id, globals.realtime_region_pipe_flow_and_demand_id) - simulation.run_simulation(name=network, simulation_type='realtime', modify_pattern_start_time=bg_start_time_str, modify_total_duration=86400) + base_date = item['simulation_date'] - return True + # 循环生成96个时间点(15分钟间隔) + for i in range(96): + # 计算当前时间偏移 + time_offset = timedelta(minutes=15 * i) + + # 生成完整时间对象 + current_time = base_date + time_offset + + # 格式化成ISO8601带时区格式 + iso_time = current_time.strftime("%Y-%m-%dT%H:%M:%S") + "+08:00" + + ## 执行函数调用 + simulation.run_simulation( + name=item['name'], + simulation_type="realtime", + modify_pattern_start_time=iso_time + ) ############################################################ # real_time api 37.5