From cad6eeba479a6287ef7e21542293ffd56b12e2c8 Mon Sep 17 00:00:00 2001 From: DingZQ Date: Sat, 28 Dec 2024 16:47:16 +0800 Subject: [PATCH] Add API covnertv3tov2 --- api/__init__.py | 3 ++- api/inp_in.py | 26 ++++++++++++++++++++++++++ main.py | 27 +++++++++++++++++++++++++++ tjnetwork.py | 3 +++ 4 files changed, 58 insertions(+), 1 deletion(-) diff --git a/api/__init__.py b/api/__init__.py index b36ed17..8fed9c6 100644 --- a/api/__init__.py +++ b/api/__init__.py @@ -2,7 +2,8 @@ from .project import list_project, have_project, create_project, delete_project, from .project import is_project_open, open_project, close_project from .project import copy_project -from .inp_in import read_inp, import_inp +#DingZQ, 2024-12-28, convert inp v3 to v2 +from .inp_in import read_inp, import_inp, convert_inp_v3_to_v2 from .inp_out import dump_inp, export_inp from .database import API_ADD, API_UPDATE, API_DELETE diff --git a/api/inp_in.py b/api/inp_in.py index 603ff82..af718db 100644 --- a/api/inp_in.py +++ b/api/inp_in.py @@ -35,6 +35,9 @@ from .s27_backdrop import inp_in_backdrop from .s32_region import inp_in_region,inp_in_bound,inp_in_regionnodes from .s32_region_util import from_postgis_polygon,to_postgis_polygon +#DingZQ, 2024-12-28, export inp +from .inp_out import export_inp + _S = 'S' _L = 'L' @@ -371,6 +374,29 @@ def read_inp(project: str, inp: str, version: str = '3') -> bool: close_project(project) return True +#DingZQ, 2024-12-28, convert v3 to v2 +def convert_inp_v3_to_v2(inp: str) -> ChangeSet: + project = 'v3Tov2' + + if is_project_open(project): + close_project(project) + + if have_project(project): + delete_project(project) + + create_project(project) + open_project(project) + + parse_file(project, inp, '3') + + '''try: + parse_file(project, inp, version) + except: + close_project(project) + delete_project(project) + return False''' + + return export_inp(project, '2') def import_inp(project: str, cs: ChangeSet, version: str = '3') -> bool: if version != '3' and version != '2': diff --git a/main.py b/main.py index c49442c..a610564 100644 --- a/main.py +++ b/main.py @@ -1819,6 +1819,33 @@ async def download_inp(name: str, response: Response): else: response.status_code = status.HTTP_400_BAD_REQUEST return True + +# DingZQ, 2024-12-28, convert v3 to v2 +@app.get("/convertv3tov2/",response_model=None) +async def fastapi_convert_v3_to_v2(inp: str) -> ChangeSet: + network = 'v3Tov2' + cs = convert_inp_v3_to_v2(inp) + + op = cs.operations[0] + open_project(network) + op['vertex'] = json.dumps(get_all_vertices(network)) + op['scada'] = json.dumps(get_all_scada_elements(network)) + op['dma'] = json.dumps(get_all_district_metering_areas(network)) + op['sa'] = json.dumps(get_all_service_areas(network)) + op['vd'] = json.dumps(get_all_virtual_districts(network)) + op['legend'] = get_extension_data(network, 'legend') + + db = get_extension_data(network, 'scada_db') + print(db) + scada_db = '' + if db: + scada_db = db + print(scada_db) + op['scada_db'] = scada_db + + close_project(network) + + return cs @app.get("/getjson/") async def get_json(): diff --git a/tjnetwork.py b/tjnetwork.py index 5e1198c..f51471f 100644 --- a/tjnetwork.py +++ b/tjnetwork.py @@ -222,6 +222,9 @@ def run_inp(name: str) -> str: def dump_output(path: str) -> str: return epanet.dump_output(path) +#DingZQ, 2024-12-28, convert inp v3 to v2 +def convert_inp_v3_to_v2(inp: str) -> ChangeSet: + return api.convert_inp_v3_to_v2(inp) ############################################################ # operation