Update main.py

This commit is contained in:
DingZQ
2025-05-17 22:09:24 +08:00
parent 4f785aad82
commit 6fffba9bc2

67
main.py
View File

@@ -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