using Hydro; namespace PBS.WinFrmUI.Hydro { /// /// 管网模型辅助类 /// public static class NetWorkModelHelper { /// /// 从模型导入 /// public static void ImportFromModel(long FacilitiesID, MapViewNetWork netWork) { if (netWork != null) { ClearData(FacilitiesID); var m = new BLL.Facilities().GetByID(FacilitiesID); //var watersupply = new BLL.Part().GetAll().FirstOrDefault(c => c.ID == long.Parse(m.WaterSupply)); if (netWork.meters != null && netWork.meters.Any()) { var meterModels = new List(); var meterBLL = new BLL.Meter(); var dlTemplateBLL = new BLL.EquivalentTemplate(); foreach (var meter in netWork.meters) { var dlTemplate = ""; if (!string.IsNullOrEmpty(meter.DlTemplateID)) { var dls = dlTemplateBLL.GetAll(); if (dls.Any(c => c.Name.Equals(meter.DlTemplateID))) dlTemplate = dls.FirstOrDefault(c => c.Name.Equals(meter.DlTemplateID)).ID.ToString(); } meterModels.Add(new Model.Meter() { BelongID = m.ID, DlTemplateID = dlTemplate, Floor = string.IsNullOrEmpty(meter.Floor) ? "0" : meter.Floor, Elevation = (decimal)meter.Elev, id = meter.ID, Name = meter.GetTypeString().ToString(), PositionX = meter.X.ToString(), PositionY = meter.Y.ToString(), SystemType = m.ModelType }); } if (meterModels.Count > 0) meterBLL.Inserts(meterModels); } if (netWork.nozzles != null && netWork.nozzles.Any()) { var nozzleBLL = new BLL.Nozzle(); var ratioBLL = new BLL.RatioConfig(); foreach (var nozzle in netWork.nozzles) { var ratio = ""; var config = ratioBLL.GetAll().FirstOrDefault(c => c.Value == nozzle.FlowCoefficient.ToString()); if (config != null) { ratio = config.ID.ToString(); } nozzleBLL.Insert(new Model.Nozzle() { BelongID = m.ID, Kratio = ratio, Floor = string.IsNullOrEmpty(nozzle.Floor) ? "0" : nozzle.Floor, id = nozzle.ID, Name = nozzle.GetTypeString().ToString(), PositionX = nozzle.X.ToString(), PositionY = nozzle.Y.ToString(), SystemType = m.ModelType, Room = nozzle.Room }); } } if (netWork.junctions != null && netWork.junctions.Any()) { var otherBLL = new BLL.Other(); var otherModels = new List(); foreach (var junction in netWork.junctions) { otherModels.Add(new Model.Other() { id = junction.ID, Name = junction.GetTypeString().ToString(), BelongID = m.ID, Elevation = (decimal)junction.Elev, Floor = string.IsNullOrEmpty(junction.Floor) ? "0" : junction.Floor, PositionX = junction.X.ToString(), PositionY = junction.Y.ToString(), SystemType = m.ModelType }); } if (otherModels.Count > 0) otherBLL.Inserts(otherModels); } if (netWork.pipes != null && netWork.pipes.Any()) { var pipeBLL = new BLL.Pipe(); var pipeModels = new List(); foreach (var pipe in netWork.pipes) { pipeModels.Add(new Model.Pipe() { BelongID = m.ID, Name = pipe.GetTypeString().ToString(), EndNode = pipe.Node2, Floor = string.IsNullOrEmpty(pipe.Floor) ? "0" : pipe.Floor, HeisenCoefficient = (decimal)pipe.Roughness, PipediaMeter = (decimal)pipe.Diameter, Length = (decimal)pipe.Length, PipeType = 1, id = pipe.ID, PositionX = pipe.X.ToString(), PositionY = pipe.Y.ToString(), StartNode = pipe.Node1, Status = (pipe.Status == Hydro.Core.ObjectEnum.StatusType.DEFAULT || pipe.Status == Hydro.Core.ObjectEnum.StatusType.OPEN) ? true : false, SystemType = m.ModelType }); } if (pipeModels.Count>0) pipeBLL.Inserts(pipeModels); } if (netWork.reservoirs != null && netWork.reservoirs.Any()) { var pumpAdapterBLL = new BLL.PumpAdapter(); foreach (var reservoir in netWork.reservoirs) { var name = reservoir.GetTypeString().ToString(); if (name == "水库") { new BLL.WaterTank().Insert(new Model.WaterTank() { BelongID = m.ID, Floor = string.IsNullOrEmpty(reservoir.Floor) ? "0" : reservoir.Floor, id = reservoir.ID, Name = name, PositionX = reservoir.X.ToString(), PositionY = reservoir.Y.ToString(), Level = reservoir.Level, //MaxLevel = (decimal)reservoir.MaxLevel, //MinLevel = (decimal)reservoir.MinLevel, //Volume = (decimal)reservoir.MinVol, SystemType = m.ModelType }); } else { pumpAdapterBLL.Insert(new Model.PumpAdapter() { BelongID = m.ID, Elevation = (decimal)reservoir.Elev, Floor = string.IsNullOrEmpty(reservoir.Floor) ? "0" : reservoir.Floor, id = reservoir.ID, Name = reservoir.Name, Pressure = (decimal)reservoir.Head, PositionX = reservoir.X.ToString(), PositionY = reservoir.Y.ToString(), SystemType = m.ModelType }); } } } if (netWork.valves != null && netWork.valves.Any()) { var valveBLL = new BLL.Valve(); foreach (var valve in netWork.valves) { valveBLL.Insert(new Model.Valve() { BelongID = m.ID, Diameter = (decimal)valve.Diameter, EndNode = valve.Node2, StartNode = valve.Node1, Floor = string.IsNullOrEmpty(valve.Floor) ? "0" : valve.Floor, id = valve.ID, Name = valve.Name, PositionX = valve.X.ToString(), PositionY = valve.Y.ToString(), Status = (valve.Status == Hydro.Core.ObjectEnum.StatusType.DEFAULT || valve.Status == Hydro.Core.ObjectEnum.StatusType.OPEN) ? true : false, SystemType = m.ModelType }); } } if (netWork.pumps != null && netWork.pumps.Any()) { var pumpBLL = new BLL.WaterPump(); foreach (var pump in netWork.pumps) { pumpBLL.Insert(new Model.WaterPump() { BelongID = m.ID, EndNode = pump.Node2, StartNode = pump.Node1, Floor = string.IsNullOrEmpty(pump.Floor) ? "0" : pump.Floor, id = pump.ID, Name = pump.Name, PositionX = pump.X.ToString(), PositionY = pump.Y.ToString(), RatedFlow = (decimal)pump.额定流量, RatedHead = (decimal)pump.额定扬程, RatedPower = (decimal)pump.额定功率, RatedSpeed = (decimal)pump.额定转速, Status = (pump.Status == Hydro.Core.ObjectEnum.StatusType.DEFAULT || pump.Status == Hydro.Core.ObjectEnum.StatusType.OPEN) ? true : false, SystemType = m.ModelType }); } } if (netWork.tanks != null && netWork.tanks.Any()) { var tankBLL = new BLL.WaterTank(); foreach (var tank in netWork.tanks) { tankBLL.Insert(new Model.WaterTank() { BelongID = m.ID, Floor = string.IsNullOrEmpty(tank.Floor) ? "0" : tank.Floor, id = tank.ID, Name = tank.Name, PositionX = tank.X.ToString(), PositionY = tank.Y.ToString(), Level = tank.Level, MaxLevel = (decimal)tank.MaxLevel, MinLevel = (decimal)tank.MinLevel, Volume = (decimal)tank.MinVol, SystemType = m.ModelType }); } } } } /// /// 从Revit导入 /// public static void ImportFromRevit(long FacilitiesID, string JsonText) { ClearData(FacilitiesID); } /// /// 先清空数据 /// public static void ClearData(long FacilitiesID) { new BLL.HydrantBox().DeletByBelongID(FacilitiesID); new BLL.Meter().DeletByBelongID(FacilitiesID); new BLL.Nozzle().DeletByBelongID(FacilitiesID); new BLL.Other().DeletByBelongID(FacilitiesID); new BLL.Pipe().DeletByBelongID(FacilitiesID); new BLL.PumpAdapter().DeletByBelongID(FacilitiesID); new BLL.Valve().DeletByBelongID(FacilitiesID); new BLL.WaterPump().DeletByBelongID(FacilitiesID); new BLL.WaterTank().DeletByBelongID(FacilitiesID); } } }