调整epanet工具目录结构;联通前端水质分析模块功能;新建 readme.md

This commit is contained in:
2026-01-30 15:24:56 +08:00
parent 9d7a9fb2fd
commit 9037bf317b
12 changed files with 128 additions and 69 deletions

View File

@@ -192,19 +192,24 @@ async def burst_analysis_endpoint(
return burst_analysis(network, pipe_id, start_time, end_time, burst_flow)
@router.post("/burst_analysis/")
async def fastapi_burst_analysis(data: BurstAnalysis) -> str:
item = data.dict()
@router.get("/burst_analysis/")
async def fastapi_burst_analysis(
network: str = Query(...),
modify_pattern_start_time: str = Query(...),
burst_ID: list | str = Query(..., alias="burst_ID[]"), # 添加别名以匹配 URL
burst_size: list | float | int = Query(
..., alias="burst_size[]"
), # 添加别名以匹配 URL
modify_total_duration: int = Query(...),
scheme_name: str = Query(...),
) -> str:
burst_analysis(
name=item["name"],
modify_pattern_start_time=item["modify_pattern_start_time"],
burst_ID=item["burst_ID"],
burst_size=item["burst_size"],
modify_total_duration=item["modify_total_duration"],
modify_fixed_pump_pattern=item["modify_fixed_pump_pattern"],
modify_variable_pump_pattern=item["modify_variable_pump_pattern"],
modify_valve_opening=item["modify_valve_opening"],
scheme_Name=item["scheme_Name"],
name=network,
modify_pattern_start_time=modify_pattern_start_time,
burst_ID=burst_ID,
burst_size=burst_size,
modify_total_duration=modify_total_duration,
scheme_name=scheme_name,
)
return "success"
@@ -254,7 +259,9 @@ async def fastapi_flushing_analysis(
flush_flow: float = 0,
duration: int | None = None,
) -> str:
valve_opening = {valve_id: float(valves_k[idx]) for idx, valve_id in enumerate(valves)}
valve_opening = {
valve_id: float(valves_k[idx]) for idx, valve_id in enumerate(valves)
}
result = flushing_analysis(
name=network,
modify_pattern_start_time=start_time,
@@ -266,25 +273,20 @@ async def fastapi_flushing_analysis(
return result or "success"
@router.get("/contaminantsimulation/")
async def contaminant_simulation_endpoint(
network: str, node_id: str, start_time: str, duration: float, concentration: float
):
return contaminant_simulation(network, node_id, start_time, duration, concentration)
@router.get("/contaminant_simulation/", response_class=PlainTextResponse)
async def fastapi_contaminant_simulation(
network: str,
start_time: str,
source: str,
concentration: float,
duration: int = 900,
duration: int,
scheme_name: str | None = None,
pattern: str | None = None,
) -> str:
result = contaminant_simulation(
name=network,
modify_pattern_start_time=start_time,
scheme_name=scheme_name,
modify_total_duration=duration,
source=source,
concentration=concentration,
@@ -431,9 +433,7 @@ async def fastapi_network_update(file: UploadFile = File()) -> str:
async def fastapi_pump_failure(data: PumpFailureState) -> str:
item = data.dict()
with open("./pump_failure_message.txt", "a", encoding="utf-8-sig") as f1:
f1.write(
"[{}] {}\n".format(datetime.now().strftime("%Y-%m-%d %H:%M:%S"), item)
)
f1.write("[{}] {}\n".format(datetime.now().strftime("%Y-%m-%d %H:%M:%S"), item))
with open("./pump_failure_status.txt", "r", encoding="utf-8-sig") as f2:
lines = f2.readlines()
first_stage_pump_status_dict = json.loads(json.dumps(eval(lines[0])))