refactor(db)!: finalize pooled WNDB v2 migration
This commit is contained in:
@@ -1,9 +1,7 @@
|
||||
import numpy as np
|
||||
from functools import wraps
|
||||
from app.services.tjnetwork import (
|
||||
ChangeSet,
|
||||
close_project,
|
||||
copy_project,
|
||||
delete_project,
|
||||
get_pattern,
|
||||
get_patterns,
|
||||
get_pump,
|
||||
@@ -11,9 +9,6 @@ from app.services.tjnetwork import (
|
||||
get_status,
|
||||
get_tank,
|
||||
get_time,
|
||||
have_project,
|
||||
is_project_open,
|
||||
open_project,
|
||||
read_all,
|
||||
run_project,
|
||||
set_pattern,
|
||||
@@ -29,6 +24,7 @@ import pytz
|
||||
import requests
|
||||
import time
|
||||
import app.services.project_info as project_info
|
||||
from app.native.wndb.core.projects import temporary_project_database
|
||||
from app.services.time_api import parse_clock_duration_seconds
|
||||
|
||||
url_path = 'http://10.101.15.16:9000/loong' # 内网
|
||||
@@ -572,9 +568,6 @@ def trim_time_flag(url_date_time:str)->str:
|
||||
|
||||
# 单时间步长模拟
|
||||
def run_simulation(name:str,start_datetime:str,end_datetime:str=None, duration:int=900)->str:
|
||||
if(is_project_open(name)):
|
||||
close_project(name)
|
||||
open_project(name)
|
||||
#get_current_data(cur_datetime)
|
||||
#extract the patternindex from datetime
|
||||
#e.g. 0: the first time step for 00:00-00:14; 1: the second step for 00:15-00:30
|
||||
@@ -654,32 +647,38 @@ def run_simulation(name:str,start_datetime:str,end_datetime:str=None, duration:i
|
||||
|
||||
|
||||
# 在线模拟
|
||||
def _clean_extended_simulation(func):
|
||||
@wraps(func)
|
||||
def wrapper(name: str, simulation_type: str, *args, **kwargs):
|
||||
if simulation_type.upper() != "EXTENDED":
|
||||
return func(name, simulation_type, *args, **kwargs)
|
||||
with temporary_project_database(name, "extended_simulation") as temporary:
|
||||
kwargs["_temporary_project"] = temporary
|
||||
return func(name, simulation_type, *args, **kwargs)
|
||||
|
||||
return wrapper
|
||||
|
||||
|
||||
@_clean_extended_simulation
|
||||
def run_simulation_ex(name: str, simulation_type: str, start_datetime: str,
|
||||
end_datetime: str = None, duration: int = 0,
|
||||
pump_control: dict[str, list] = None, tank_initial_level_control: dict[str, float] = None,
|
||||
region_demand_control: dict[str, float] = None, valve_control: dict[str, dict] = None,
|
||||
downloading_prohibition: bool = False) -> str:
|
||||
downloading_prohibition: bool = False,
|
||||
_temporary_project: str | None = None) -> str:
|
||||
time_cost_start = time.perf_counter()
|
||||
print('{} -- Hydraulic simulation started.'.format(
|
||||
datetime.now(pytz.timezone('Asia/Shanghai')).strftime('%Y-%m-%d %H:%M:%S')))
|
||||
|
||||
if is_project_open(name):
|
||||
close_project(name)
|
||||
|
||||
if simulation_type.upper() == 'REALTIME': # 实时模拟(修改原数据库)
|
||||
name_c = name
|
||||
elif simulation_type.upper() == 'EXTENDED': # 扩展模拟(复制数据库)
|
||||
name_c = '_'.join([name, 'c'])
|
||||
if have_project(name_c):
|
||||
if is_project_open(name_c):
|
||||
close_project(name_c)
|
||||
delete_project(name_c)
|
||||
copy_project(name, name_c) # 备份项目
|
||||
if _temporary_project is None:
|
||||
raise RuntimeError("Extended simulation isolation was not prepared")
|
||||
name_c = _temporary_project
|
||||
else:
|
||||
raise Exception('Incorrect simulation type, choose in (realtime, extended)')
|
||||
|
||||
open_project(name_c)
|
||||
|
||||
# 时间处理
|
||||
# extract the pattern index from datetime
|
||||
# e.g. 0: the first time step for 00:00-00:14; 1: the second step for 00:15-00:30
|
||||
@@ -848,8 +847,6 @@ def run_simulation_ex(name: str, simulation_type: str, start_datetime: str,
|
||||
datetime.now(pytz.timezone('Asia/Shanghai')).strftime('%Y-%m-%d %H:%M:%S'),
|
||||
time_cost_end - time_cost_start))
|
||||
|
||||
close_project(name_c)
|
||||
|
||||
return result
|
||||
|
||||
|
||||
@@ -858,7 +855,6 @@ if __name__ == '__main__':
|
||||
# tQ=get_current_total_Q()
|
||||
# print(f"the current tQ is {tQ}\n")
|
||||
# data=get_hist_data(ids,conver_beingtime_to_ucttime('2024-04-10 15:05:00'),conver_beingtime_to_ucttime('2024-04-10 15:10:00'))
|
||||
# open_project("beibeizone")
|
||||
# read_inp("beibeizone","beibeizone-export_nochinese.inp")
|
||||
# run_simulation("beibeizone","2024-04-01T08:00:00Z")
|
||||
# read_inp('bb_server', 'model20_en.inp')
|
||||
|
||||
Reference in New Issue
Block a user