| | |
| | | using HStation.WinFrmUI.PhartRelation; |
| | | using Swashbuckle.AspNetCore.SwaggerGen; |
| | | using System.Linq; |
| | | using System.Windows.Input; |
| | | using Yw.WinFrmUI.Q3d; |
| | | |
| | | namespace HStation.WinFrmUI |
| | | namespace HStation.WinFrmUI |
| | | { |
| | | public class AssetsMatchingHelper |
| | | { |
| | |
| | | { |
| | | // 尝试区间匹配 |
| | | var rangeMatch = AssetsPumpMainVmos.Where(item => |
| | | (InputModel.RatedN.HasValue ? Math.Abs(InputModel.RatedN.Value - item.RatedSpeed) <= _speedTolerance : true) && |
| | | (InputModel.RatedQ.HasValue ? Math.Abs(InputModel.RatedQ.Value - item.RatedFlow) <= _flowTolerance : true) && |
| | | (InputModel.RatedH.HasValue ? Math.Abs(InputModel.RatedH.Value - item.RatedHead) <= _headTolerance : true) && |
| | | (InputModel.RatedN > 0 ? Math.Abs(InputModel.RatedN - item.RatedSpeed) <= _speedTolerance : true) && |
| | | (InputModel.RatedQ > 0 ? Math.Abs(InputModel.RatedQ - item.RatedFlow) <= _flowTolerance : true) && |
| | | (InputModel.RatedH > 0 ? Math.Abs(InputModel.RatedH - item.RatedHead) <= _headTolerance : true) && |
| | | (Math.Abs(InputModel.RatedP - item.RatedPower) <= _powerTolerance)).ToList(); |
| | | if (rangeMatch != null && rangeMatch.Count != 0) |
| | | { |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | var valve = dict.OrderBy(x => x.Value).LastOrDefault().Key; |
| | | input.MatchingDbId = valve.ID.ToString(); |
| | | if (string.IsNullOrEmpty(input.ModelType)) |
| | |
| | | } |
| | | if (input.CurveDbId == null) |
| | | { |
| | | var list = Task.Run(async () => |
| | | await new BLL.PhartDiagramRelation().GetExByObjectTypeAndObjectID(HStation.Assets.DataType.ValveMain, valve.ID)).Result; |
| | | if (list != null && list.Count > 0) |
| | | { |
| | | var def = list.OrderByDescending(x => x.Importance).First(); |
| | | input.MatchingCurveDbId = def.ID.ToString(); |
| | | var curve = def.Diagram.GraphList[0].GetFeatPointList(); |
| | | if (valve.ValveType == HStation.Assets.eValveType.GPV) |
| | | /* var list = Task.Run(async () => |
| | | await new BLL.PhartDiagramRelation().GetExByObjectTypeAndObjectID(HStation.Assets.DataType.ValveMain, valve.ID)).Result; |
| | | if (list != null && list.Count > 0) |
| | | { |
| | | input.MatchingCurveQL = new List<HydroCurvePointViewModel>(); |
| | | foreach (var item in curve) |
| | | var def = list.OrderByDescending(x => x.Importance).First(); |
| | | input.MatchingCurveDbId = def.ID.ToString(); |
| | | var curve = def.Diagram.GraphList[0].GetFeatPointList(); |
| | | if (valve.ValveType == HStation.Assets.eValveType.GPV) |
| | | { |
| | | input.MatchingCurveQL.Add(new HydroCurvePointViewModel(item.X, item.Y)); |
| | | input.MatchingCurveQL = new List<HydroCurvePointViewModel>(); |
| | | foreach (var item in curve) |
| | | { |
| | | input.MatchingCurveQL.Add(new HydroCurvePointViewModel(item.X, item.Y)); |
| | | } |
| | | } |
| | | } |
| | | else if (valve.ValveType == HStation.Assets.eValveType.TCV) |
| | | { |
| | | input.MatchingCurveOL = new List<HydroCurvePointViewModel>(); |
| | | foreach (var item in curve) |
| | | else if (valve.ValveType == HStation.Assets.eValveType.TCV) |
| | | { |
| | | input.MatchingCurveOL.Add(new HydroCurvePointViewModel(item.X, item.Y)); |
| | | input.MatchingCurveOL = new List<HydroCurvePointViewModel>(); |
| | | foreach (var item in curve) |
| | | { |
| | | input.MatchingCurveOL.Add(new HydroCurvePointViewModel(item.X, item.Y)); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }*/ |
| | | } |
| | | |
| | | return true; |
| | |
| | | { |
| | | input.MatchingModelType = pipe.Name; |
| | | } |
| | | if (input.Roughness == 0) |
| | | { |
| | | input.MatchingRoughness = pipe.Hazen; |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(input.Material)) |
| | | { |
| | | input.MatchingMaterial = pipe.Material; |
| | | } |
| | | if (input.MinorLoss < 0) |
| | | { |
| | | input.MatchingMinorLoss = pipe.MinorLoss; |
| | | input.MatchingMinorLoss = pipe.Hazen; |
| | | } |
| | | |
| | | return true; |
| | |
| | | |
| | | //口径 |
| | | int caliberWeight = 1; |
| | | if (input.Caliber.HasValue) |
| | | if (input.Caliber > 0) |
| | | { |
| | | foreach (var item in threelinkVmos) |
| | | { |
| | | if (item.Caliber.HasValue) |
| | | { |
| | | var diff = Math.Abs(item.Caliber.Value - input.Caliber.Value); |
| | | dict[item] += diff / input.Caliber.Value * 100 * caliberWeight; |
| | | var diff = Math.Abs(item.Caliber.Value - input.Caliber); |
| | | dict[item] += diff / input.Caliber * 100 * caliberWeight; |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | input.MatchingMaterial = threelink.Material; |
| | | } |
| | | if (!input.Caliber.HasValue || input.Caliber.Value <= 0) |
| | | if (input.Caliber <= 0) |
| | | { |
| | | input.Caliber = threelink.Caliber; |
| | | input.Caliber = threelink.Caliber ?? 0; |
| | | } |
| | | if (!input.MinorLoss.HasValue) |
| | | { |
| | | input.MatchingMinorLoss = threelink.MinorLoss; |
| | | } |
| | | if (!input.RunningThroughLoss.HasValue) |
| | | |
| | | if (input.RunningThroughLoss <= 0) |
| | | { |
| | | input.MatchingRunningThroughLoss = threelink.RunThroughMinorLoss; |
| | | } |
| | | if (!input.MatchingBranchThroughLoss.HasValue) |
| | | if (input.MatchingBranchThroughLoss <= 0) |
| | | { |
| | | input.MatchingBranchThroughLoss = threelink.BranchThroughMinorLoss; |
| | | } |
| | |
| | | |
| | | //口径 |
| | | int caliberWeight = 1; |
| | | if (input.Caliber.HasValue) |
| | | if (input.Caliber > 0) |
| | | { |
| | | foreach (var item in fourLinkVmos) |
| | | { |
| | | if (item.Caliber.HasValue) |
| | | { |
| | | var diff = Math.Abs(item.Caliber.Value - input.Caliber.Value); |
| | | dict[item] += diff / input.Caliber.Value * 100 * caliberWeight; |
| | | var diff = Math.Abs(item.Caliber.Value - input.Caliber); |
| | | dict[item] += diff / input.Caliber * 100 * caliberWeight; |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | input.MatchingMaterial = fourlink.Material; |
| | | } |
| | | if (!input.Caliber.HasValue || input.Caliber.Value <= 0) |
| | | if (input.Caliber <= 0) |
| | | { |
| | | input.Caliber = fourlink.Caliber; |
| | | input.Caliber = fourlink.Caliber ?? 0; |
| | | } |
| | | if (!input.MinorLoss.HasValue) |
| | | if (input.MinorLoss <= 0) |
| | | { |
| | | input.MatchingMinorLoss = fourlink.MinorLoss; |
| | | } |
| | |
| | | |
| | | //口径 |
| | | int caliberWeight = 1; |
| | | if (input.Caliber.HasValue) |
| | | if (input.Caliber > 0) |
| | | { |
| | | foreach (var item in sprinklerVmos) |
| | | { |
| | | if (item.Caliber.HasValue) |
| | | { |
| | | var diff = Math.Abs(item.Caliber.Value - input.Caliber.Value); |
| | | dict[item] += diff / input.Caliber.Value * 100 * caliberWeight; |
| | | var diff = Math.Abs(item.Caliber.Value - input.Caliber); |
| | | dict[item] += diff / input.Caliber * 100 * caliberWeight; |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | input.MatchingMaterial = sprinkler.Material; |
| | | } |
| | | if (!input.Caliber.HasValue || input.Caliber.Value <= 0) |
| | | if (input.Caliber <= 0) |
| | | { |
| | | input.Caliber = sprinkler.Caliber; |
| | | input.Caliber = sprinkler.Caliber ?? 0; |
| | | } |
| | | if (!input.MinorLoss.HasValue) |
| | | if (input.MinorLoss <= 0) |
| | | { |
| | | input.MatchingMinorLoss = sprinkler.MinorLoss; |
| | | input.MatchingMinorLoss = sprinkler.FlowMinorLoss; |
| | | } |
| | | |
| | | return true; |
| | |
| | | |
| | | //口径 |
| | | int caliberWeight = 1; |
| | | if (input.Caliber.HasValue) |
| | | if (input.Caliber > 0) |
| | | { |
| | | foreach (var item in bluntheadVmos) |
| | | { |
| | | if (item.Caliber.HasValue) |
| | | { |
| | | var diff = Math.Abs(item.Caliber.Value - input.Caliber.Value); |
| | | dict[item] += diff / input.Caliber.Value * 100 * caliberWeight; |
| | | var diff = Math.Abs(item.Caliber.Value - input.Caliber); |
| | | dict[item] += diff / input.Caliber * 100 * caliberWeight; |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | input.MatchingMaterial = blunthead.Material; |
| | | } |
| | | if (!input.Caliber.HasValue || input.Caliber.Value <= 0) |
| | | if (input.Caliber <= 0) |
| | | { |
| | | input.Caliber = blunthead.Caliber; |
| | | input.Caliber = blunthead.Caliber ?? 0; |
| | | } |
| | | if (input.MinorLoss < 0) |
| | | { |
| | |
| | | |
| | | //口径 |
| | | int caliberWeight = 1; |
| | | if (input.Caliber.HasValue) |
| | | if (input.Caliber > 0) |
| | | { |
| | | foreach (var item in hydrantVmos) |
| | | { |
| | | if (item.Caliber.HasValue) |
| | | { |
| | | var diff = Math.Abs(item.Caliber.Value - input.Caliber.Value); |
| | | dict[item] += diff / input.Caliber.Value * 100 * caliberWeight; |
| | | var diff = Math.Abs(item.Caliber.Value - input.Caliber); |
| | | dict[item] += diff / input.Caliber * 100 * caliberWeight; |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | input.MatchingMaterial = hydrant.Material; |
| | | } |
| | | if (!input.Caliber.HasValue || input.Caliber.Value <= 0) |
| | | if (input.Caliber <= 0) |
| | | { |
| | | input.Caliber = hydrant.Caliber; |
| | | input.Caliber = hydrant.Caliber ?? 0; |
| | | } |
| | | if (input.MinorLoss < 0) |
| | | { |
| | |
| | | { |
| | | input.MatchingMaterial = elbow.Material; |
| | | } |
| | | if (!input.Caliber.HasValue) |
| | | if (input.Caliber <= 0) |
| | | { |
| | | input.MatchingCaliber = elbow.Caliber; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | |
| | | { |
| | | input.MatchingStartDiameter = translation.StartDiameter; |
| | | } |
| | | if (input.Diameter < 0) |
| | | { |
| | | input.MatchingDiameter = translation.Diameter; |
| | | } |
| | | |
| | | return true; |
| | | } |
| | |
| | | |
| | | //口径 |
| | | int caliberWeight = 1; |
| | | if (input.Caliber.HasValue) |
| | | if (input.Caliber > 0) |
| | | { |
| | | foreach (var item in allCoolingList) |
| | | { |
| | | if (item.Caliber.HasValue) |
| | | { |
| | | var diff = Math.Abs(item.Caliber.Value - input.Caliber.Value); |
| | | dict[item] += diff / input.Caliber.Value * 100 * caliberWeight; |
| | | var diff = Math.Abs(item.Caliber.Value - input.Caliber); |
| | | dict[item] += diff / input.Caliber * 100 * caliberWeight; |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | input.MatchingMaterial = cooling.Material; |
| | | } |
| | | if (!input.Caliber.HasValue || input.Caliber.Value <= 0) |
| | | if (input.Caliber <= 0) |
| | | { |
| | | input.Caliber = cooling.Caliber; |
| | | input.Caliber = cooling.Caliber ?? 0; |
| | | } |
| | | if (input.Coefficient <= 1) |
| | | { |