using DevExpress.XtraSpreadsheet.Model.CopyOperation;
using System.Windows.Media.Imaging;
using Yw.DAL.Basic;
using Yw.EPAnet;
using Yw.Model;
namespace Yw.WinFrmUI
{
///
/// 资产匹配辅助类
///
public class HydroMatchingHelper
{
#region 创建
///
/// 创建
///
public static HydroMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo)
{
if (hydroInfo == null)
{
return default;
}
var vm = new HydroMatchingViewModel();
#region 水池
var tanks = hydroInfo.GetAllTanks();
vm.Tanks = tanks?.Select(x => Create(x, hydroInfo)).ToList();
#endregion
#region 闷头
vm.Bluntheads = hydroInfo.Bluntheads?.Select(x => Create(x, hydroInfo)).ToList();
#endregion
#region 弯头
vm.Elbows = hydroInfo.Elbows?.Select(x => Create(x, hydroInfo)).ToList();
#endregion
#region 三通
vm.Threelinks = hydroInfo.Threelinks?.Select(x => Create(x, hydroInfo)).ToList();
#endregion
#region 四通
vm.Fourlinks = hydroInfo.Fourlinks?.Select(x => Create(x, hydroInfo)).ToList();
#endregion
#region 喷嘴
vm.Nozzles = hydroInfo.Nozzles?.Select(x => Create(x, hydroInfo)).ToList();
#endregion
#region 消火栓
vm.Hydrants = hydroInfo.Hydrants?.Select(x => Create(x, hydroInfo)).ToList();
#endregion
#region 水表
vm.Meters = hydroInfo.Meters?.Select(x => Create(x, hydroInfo)).ToList();
#endregion
#region 流量计
vm.Flowmeters = hydroInfo.Flowmeters?.Select(x => Create(x, hydroInfo)).ToList();
#endregion
#region 压力表
vm.Pressmeters = hydroInfo.Pressmeters?.Select(x => Create(x, hydroInfo)).ToList();
#endregion
#region 管道
vm.Pipes = hydroInfo.Pipes?.Select(x => Create(x, hydroInfo)).ToList();
#endregion
#region 过渡件
vm.Translations = hydroInfo.Translations?.Select(x => Create(x, hydroInfo)).ToList();
#endregion
#region 水泵
vm.Pumps = hydroInfo.Pumps?.Select(x => Create(x, hydroInfo)).ToList();
#endregion
#region 阀门
vm.Valves = hydroInfo.Valves?.Select(x => Create(x, hydroInfo)).ToList();
#endregion
#region 换热器
vm.Exchangers = hydroInfo.Exchangers?.Select(x => Create(x, hydroInfo)).ToList();
#endregion
#region 压缩机
vm.Compressors = hydroInfo.Compressors?.Select(x => Create(x, hydroInfo)).ToList();
#endregion
return vm;
}
#region 水池
///
/// 创建水池自动匹配ViewModel
///
public static HydroTankMatchingViewModel Create(HydroTankInfo visualInfo, HydroModelInfo hydroInfo)
{
if (visualInfo == null)
{
return default;
}
if (hydroInfo == null)
{
return default;
}
return new HydroTankMatchingViewModel(visualInfo, hydroInfo);
}
///
/// 创建水池自动匹配ViewModel
///
public static HydroTankMatchingViewModel Create(HydroTankViewModel visualViewModel)
{
if (visualViewModel == null)
{
return default;
}
return new HydroTankMatchingViewModel(visualViewModel);
}
#endregion
#region 闷头
///
/// 创建闷头自动匹配ViewModel
///
public static HydroBluntheadMatchingViewModel Create(HydroBluntheadInfo visualInfo, HydroModelInfo hydroInfo)
{
if (visualInfo == null)
{
return default;
}
if (hydroInfo == null)
{
return default;
}
return new HydroBluntheadMatchingViewModel(visualInfo, hydroInfo);
}
///
/// 创建闷头自动匹配ViewModel
///
public static HydroBluntheadMatchingViewModel Create(HydroBluntheadViewModel visualViewModel)
{
if (visualViewModel == null)
{
return default;
}
return new HydroBluntheadMatchingViewModel(visualViewModel);
}
#endregion
#region 弯头
///
/// 创建弯头自动匹配ViewModel
///
public static HydroElbowMatchingViewModel Create(HydroElbowInfo visualInfo, HydroModelInfo hydroInfo)
{
if (visualInfo == null)
{
return default;
}
if (hydroInfo == null)
{
return default;
}
return new HydroElbowMatchingViewModel(visualInfo, hydroInfo);
}
///
/// 创建弯头自动匹配ViewModel
///
public static HydroElbowMatchingViewModel Create(HydroElbowViewModel visualViewModel)
{
if (visualViewModel == null)
{
return default;
}
return new HydroElbowMatchingViewModel(visualViewModel);
}
#endregion
#region 三通
///
/// 创建三通自动匹配ViewModel
///
public static HydroThreelinkMatchingViewModel Create(HydroThreelinkInfo visualInfo, HydroModelInfo hydroInfo)
{
if (visualInfo == null)
{
return default;
}
if (hydroInfo == null)
{
return default;
}
return new HydroThreelinkMatchingViewModel(visualInfo, hydroInfo);
}
///
/// 创建三通自动匹配ViewModel
///
public static HydroThreelinkMatchingViewModel Create(HydroThreelinkViewModel visualViewModel)
{
if (visualViewModel == null)
{
return default;
}
return new HydroThreelinkMatchingViewModel(visualViewModel);
}
#endregion
#region 四通
///
/// 创建四通自动匹配ViewModel
///
public static HydroFourlinkMatchingViewModel Create(HydroFourlinkInfo visualInfo, HydroModelInfo hydroInfo)
{
if (visualInfo == null)
{
return default;
}
if (hydroInfo == null)
{
return default;
}
return new HydroFourlinkMatchingViewModel(visualInfo, hydroInfo);
}
///
/// 创建四通自动匹配ViewModel
///
public static HydroFourlinkMatchingViewModel Create(HydroFourlinkViewModel visualViewModel)
{
if (visualViewModel == null)
{
return default;
}
return new HydroFourlinkMatchingViewModel(visualViewModel);
}
#endregion
#region 喷头
///
/// 创建喷头自动匹配ViewModel
///
public static HydroNozzleMatchingViewModel Create(HydroNozzleInfo visualInfo, HydroModelInfo hydroInfo)
{
if (visualInfo == null)
{
return default;
}
if (hydroInfo == null)
{
return default;
}
return new HydroNozzleMatchingViewModel(visualInfo, hydroInfo);
}
///
/// 创建喷头自动匹配ViewModel
///
public static HydroNozzleMatchingViewModel Create(HydroNozzleViewModel visualViewModel)
{
if (visualViewModel == null)
{
return default;
}
return new HydroNozzleMatchingViewModel(visualViewModel);
}
#endregion
#region 消火栓
///
/// 创建消火栓自动匹配ViewModel
///
public static HydroHydrantMatchingViewModel Create(HydroHydrantInfo visualInfo, HydroModelInfo hydroInfo)
{
if (visualInfo == null)
{
return default;
}
if (hydroInfo == null)
{
return default;
}
return new HydroHydrantMatchingViewModel(visualInfo, hydroInfo);
}
///
/// 创建消火栓自动匹配ViewModel
///
public static HydroHydrantMatchingViewModel Create(HydroHydrantViewModel visualViewModel)
{
if (visualViewModel == null)
{
return default;
}
return new HydroHydrantMatchingViewModel(visualViewModel);
}
#endregion
#region 水表
///
/// 创建水表自动匹配ViewModel
///
public static HydroMeterMatchingViewModel Create(HydroMeterInfo visualInfo, HydroModelInfo hydroInfo)
{
if (visualInfo == null)
{
return default;
}
if (hydroInfo == null)
{
return default;
}
return new HydroMeterMatchingViewModel(visualInfo, hydroInfo);
}
///
/// 创建水表自动匹配ViewModel
///
public static HydroMeterMatchingViewModel Create(HydroMeterViewModel visualViewModel)
{
if (visualViewModel == null)
{
return default;
}
return new HydroMeterMatchingViewModel(visualViewModel);
}
#endregion
#region 流量计
///
/// 创建流量计自动匹配ViewModel
///
public static HydroFlowmeterMatchingViewModel Create(HydroFlowmeterInfo visualInfo, HydroModelInfo hydroInfo)
{
if (visualInfo == null)
{
return default;
}
if (hydroInfo == null)
{
return default;
}
return new HydroFlowmeterMatchingViewModel(visualInfo, hydroInfo);
}
///
/// 创建流量计自动匹配ViewModel
///
public static HydroFlowmeterMatchingViewModel Create(HydroFlowmeterViewModel visualViewModel)
{
if (visualViewModel == null)
{
return default;
}
return new HydroFlowmeterMatchingViewModel(visualViewModel);
}
#endregion
#region 压力表
///
/// 创建压力表自动匹配ViewModel
///
public static HydroPressmeterMatchingViewModel Create(HydroPressmeterInfo visualInfo, HydroModelInfo hydroInfo)
{
if (visualInfo == null)
{
return default;
}
if (hydroInfo == null)
{
return default;
}
return new HydroPressmeterMatchingViewModel(visualInfo, hydroInfo);
}
///
/// 创建压力表自动匹配ViewModel
///
public static HydroPressmeterMatchingViewModel Create(HydroPressmeterViewModel visualViewModel)
{
if (visualViewModel == null)
{
return default;
}
return new HydroPressmeterMatchingViewModel(visualViewModel);
}
#endregion
#region 管道
///
/// 创建管道自动匹配ViewModel
///
public static HydroPipeMatchingViewModel Create(HydroPipeInfo visualInfo, HydroModelInfo hydroInfo)
{
if (visualInfo == null)
{
return default;
}
if (hydroInfo == null)
{
return default;
}
return new HydroPipeMatchingViewModel(visualInfo, hydroInfo);
}
///
/// 创建管道自动匹配ViewModel
///
public static HydroPipeMatchingViewModel Create(HydroPipeViewModel visualViewModel)
{
if (visualViewModel == null)
{
return default;
}
return new HydroPipeMatchingViewModel(visualViewModel);
}
#endregion
#region 过渡件
///
/// 创建过渡件自动匹配ViewModel
///
public static HydroTranslationMatchingViewModel Create(HydroTranslationInfo visualInfo, HydroModelInfo hydroInfo)
{
if (visualInfo == null)
{
return default;
}
if (hydroInfo == null)
{
return default;
}
return new HydroTranslationMatchingViewModel(visualInfo, hydroInfo);
}
///
/// 创建过渡件自动匹配ViewModel
///
public static HydroTranslationMatchingViewModel Create(HydroTranslationViewModel visualViewModel)
{
if (visualViewModel == null)
{
return default;
}
return new HydroTranslationMatchingViewModel(visualViewModel);
}
#endregion
#region 水泵
///
/// 创建水泵自动匹配ViewModel
///
public static HydroPumpMatchingViewModel Create(HydroPumpInfo visualInfo, HydroModelInfo hydroInfo)
{
if (visualInfo == null)
{
return default;
}
if (hydroInfo == null)
{
return default;
}
return new HydroPumpMatchingViewModel(visualInfo, hydroInfo);
}
///
/// 创建水泵自动匹配ViewModel
///
public static HydroPumpMatchingViewModel Create(HydroPumpViewModel visualViewModel)
{
if (visualViewModel == null)
{
return default;
}
return new HydroPumpMatchingViewModel(visualViewModel);
}
#endregion
#region 阀门
///
/// 创建阀门自动匹配ViewModel
///
public static HydroValveMatchingViewModel Create(HydroValveInfo visualInfo, HydroModelInfo hydroInfo)
{
if (visualInfo == null)
{
return default;
}
if (hydroInfo == null)
{
return default;
}
return new HydroValveMatchingViewModel(visualInfo, hydroInfo);
}
///
/// 创建阀门自动匹配ViewModel
///
public static HydroValveMatchingViewModel Create(HydroValveViewModel visualViewModel)
{
if (visualViewModel == null)
{
return default;
}
return new HydroValveMatchingViewModel(visualViewModel);
}
#endregion
#region 换热器
///
/// 创建换热器自动匹配ViewModel
///
public static HydroExchangerMatchingViewModel Create(HydroExchangerInfo visualInfo, HydroModelInfo hydroInfo)
{
if (visualInfo == null)
{
return default;
}
if (hydroInfo == null)
{
return default;
}
return new HydroExchangerMatchingViewModel(visualInfo, hydroInfo);
}
///
/// 创建换热器自动匹配ViewModel
///
public static HydroExchangerMatchingViewModel Create(HydroExchangerViewModel visualViewModel)
{
if (visualViewModel == null)
{
return default;
}
return new HydroExchangerMatchingViewModel(visualViewModel);
}
#endregion
#region 压缩机
///
/// 创建压缩机自动匹配ViewModel
///
public static HydroCompressorMatchingViewModel Create(HydroCompressorInfo visualInfo, HydroModelInfo hydroInfo)
{
if (visualInfo == null)
{
return default;
}
if (hydroInfo == null)
{
return default;
}
return new HydroCompressorMatchingViewModel(visualInfo, hydroInfo);
}
///
/// 创建压缩机自动匹配ViewModel
///
public static HydroCompressorMatchingViewModel Create(HydroCompressorViewModel visualViewModel)
{
if (visualViewModel == null)
{
return default;
}
return new HydroCompressorMatchingViewModel(visualViewModel);
}
#endregion
#endregion
#region 应用
///
/// 应用自动匹配ViewModel
///
public static bool Apply(Yw.Model.HydroModelInfo hydroInfo, HydroMatchingViewModel matchingInfo)
{
if (hydroInfo == null)
{
return false;
}
if (matchingInfo == null)
{
return false;
}
bool result = false;
#region 水池
var allTanks = hydroInfo.GetAllTanks();
if (allTanks != null && allTanks.Count > 0)
{
if (matchingInfo.Tanks != null && matchingInfo.Tanks.Count > 0)
{
allTanks.ForEach(x =>
{
var matching = matchingInfo.Tanks.Find(t => t.Code == x.Code);
if (Apply(hydroInfo, x, matching))
{
result = true;
}
});
}
}
#endregion
#region 闷头
if (hydroInfo.Bluntheads != null && hydroInfo.Bluntheads.Count > 0)
{
if (matchingInfo.Bluntheads != null && matchingInfo.Bluntheads.Count > 0)
{
hydroInfo.Bluntheads.ForEach(x =>
{
var matching = matchingInfo.Bluntheads.Find(t => t.Code == x.Code);
if (Apply(hydroInfo, x, matching))
{
result = true;
}
});
}
}
#endregion
#region 弯头
if (hydroInfo.Elbows != null && hydroInfo.Elbows.Count > 0)
{
if (matchingInfo.Elbows != null && matchingInfo.Elbows.Count > 0)
{
hydroInfo.Elbows.ForEach(x =>
{
var matching = matchingInfo.Elbows.Find(t => t.Code == x.Code);
if (Apply(hydroInfo, x, matching))
{
result = true;
}
});
}
}
#endregion
#region 三通
if (hydroInfo.Threelinks != null && hydroInfo.Threelinks.Count > 0)
{
if (matchingInfo.Threelinks != null && matchingInfo.Threelinks.Count > 0)
{
hydroInfo.Threelinks.ForEach(x =>
{
var matching = matchingInfo.Threelinks.Find(t => t.Code == x.Code);
if (Apply(hydroInfo, x, matching))
{
result = true;
}
});
}
}
#endregion
#region 四通
if (hydroInfo.Fourlinks != null && hydroInfo.Fourlinks.Count > 0)
{
if (matchingInfo.Fourlinks != null && matchingInfo.Fourlinks.Count > 0)
{
hydroInfo.Fourlinks.ForEach(x =>
{
var matching = matchingInfo.Fourlinks.Find(t => t.Code == x.Code);
if (Apply(hydroInfo, x, matching))
{
result = true;
}
});
}
}
#endregion
#region 喷头
if (hydroInfo.Nozzles != null && hydroInfo.Nozzles.Count > 0)
{
if (matchingInfo.Nozzles != null && matchingInfo.Nozzles.Count > 0)
{
hydroInfo.Nozzles.ForEach(x =>
{
var matching = matchingInfo.Nozzles.Find(t => t.Code == x.Code);
if (Apply(hydroInfo, x, matching))
{
result = true;
}
});
}
}
#endregion
#region 消火栓
if (hydroInfo.Hydrants != null && hydroInfo.Hydrants.Count > 0)
{
if (matchingInfo.Hydrants != null && matchingInfo.Hydrants.Count > 0)
{
hydroInfo.Hydrants.ForEach(x =>
{
var matching = matchingInfo.Hydrants.Find(t => t.Code == x.Code);
if (Apply(hydroInfo, x, matching))
{
result = true;
}
});
}
}
#endregion
#region 水表
if (hydroInfo.Meters != null && hydroInfo.Meters.Count > 0)
{
if (matchingInfo.Meters != null && matchingInfo.Meters.Count > 0)
{
hydroInfo.Meters.ForEach(x =>
{
var matching = matchingInfo.Meters.Find(t => t.Code == x.Code);
if (Apply(hydroInfo, x, matching))
{
result = true;
}
});
}
}
#endregion
#region 流量计
if (hydroInfo.Flowmeters != null && hydroInfo.Flowmeters.Count > 0)
{
if (matchingInfo.Flowmeters != null && matchingInfo.Flowmeters.Count > 0)
{
hydroInfo.Flowmeters.ForEach(x =>
{
var matching = matchingInfo.Flowmeters.Find(t => t.Code == x.Code);
if (Apply(hydroInfo, x, matching))
{
result = true;
}
});
}
}
#endregion
#region 压力表
if (hydroInfo.Pressmeters != null && hydroInfo.Pressmeters.Count > 0)
{
if (matchingInfo.Pressmeters != null && matchingInfo.Pressmeters.Count > 0)
{
hydroInfo.Pressmeters.ForEach(x =>
{
var matching = matchingInfo.Pressmeters.Find(t => t.Code == x.Code);
if (Apply(hydroInfo, x, matching))
{
result = true;
}
});
}
}
#endregion
#region 管道
if (hydroInfo.Pipes != null && hydroInfo.Pipes.Count > 0)
{
if (matchingInfo.Pipes != null && matchingInfo.Pipes.Count > 0)
{
hydroInfo.Pipes.ForEach(x =>
{
var matching = matchingInfo.Pipes.Find(t => t.Code == x.Code);
if (Apply(hydroInfo, x, matching))
{
result = true;
}
});
}
}
#endregion
#region 过渡件
if (hydroInfo.Translations != null && hydroInfo.Translations.Count > 0)
{
if (matchingInfo.Translations != null && matchingInfo.Translations.Count > 0)
{
hydroInfo.Translations.ForEach(x =>
{
var matching = matchingInfo.Translations.Find(t => t.Code == x.Code);
if (Apply(hydroInfo, x, matching))
{
result = true;
}
});
}
}
#endregion
#region 阀门
if (hydroInfo.Valves != null && hydroInfo.Valves.Count > 0)
{
if (matchingInfo.Valves != null && matchingInfo.Valves.Count > 0)
{
hydroInfo.Valves.ForEach(x =>
{
var matching = matchingInfo.Valves.Find(t => t.Code == x.Code);
if (Apply(hydroInfo, x, matching))
{
result = true;
}
});
}
}
#endregion
#region 换热器
if (hydroInfo.Exchangers != null && hydroInfo.Exchangers.Count > 0)
{
if (matchingInfo.Exchangers != null && matchingInfo.Exchangers.Count > 0)
{
hydroInfo.Exchangers.ForEach(x =>
{
var matching = matchingInfo.Exchangers.Find(t => t.Code == x.Code);
if (Apply(hydroInfo, x, matching))
{
result = true;
}
});
}
}
#endregion
#region 空压机
if (hydroInfo.Compressors != null && hydroInfo.Compressors.Count > 0)
{
if (matchingInfo.Compressors != null && matchingInfo.Compressors.Count > 0)
{
hydroInfo.Compressors.ForEach(x =>
{
var matching = matchingInfo.Compressors.Find(t => t.Code == x.Code);
if (Apply(hydroInfo, x, matching))
{
result = true;
}
});
}
}
#endregion
return result;
}
#region 水池
///
/// 应用
///
public static bool Apply(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroTankInfo visual, HydroTankMatchingViewModel matching)
{
if (hydroInfo == null)
{
return false;
}
if (visual == null)
{
return false;
}
if (matching == null)
{
return false;
}
visual.Name = matching.Name;
visual.DbLocked = matching.DbLocked;
visual.DbId = matching.DbId;
visual.ModelType = matching.ModelType;
visual.MinLevel = matching.MinLevel;
visual.MaxLevel = matching.MaxLevel;
visual.DN = matching.DN;
visual.MinVol = matching.MinVol;
visual.OverFlow = matching.OverFlow;
bool result = false;
if (!visual.DbLocked)
{
if (!string.IsNullOrEmpty(matching.MatchingModelType))
{
visual.ModelType = matching.MatchingModelType;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingDbId))
{
visual.DbId = matching.MatchingDbId;
result = true;
}
if (matching.MatchingMinLevel.HasValue)
{
visual.MinLevel = matching.MatchingMinLevel.Value;
result = true;
}
if (matching.MatchingMaxLevel.HasValue)
{
visual.MaxLevel = matching.MatchingMaxLevel.Value;
result = true;
}
if (matching.MatchingDN.HasValue)
{
visual.DN = matching.MatchingDN.Value;
result = true;
}
if (matching.MatchingMinVol.HasValue)
{
visual.MinVol = matching.MatchingMinVol.Value;
result = true;
}
if (matching.MatchingOverFlow.HasValue)
{
visual.OverFlow = matching.MatchingOverFlow.Value;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingCurveDbId))
{
var curvevol = hydroInfo.Curves?.Find(x => x.Code == visual.VolCurve);
if (curvevol == null)
{
curvevol = new Yw.Model.HydroCurveInfo();
curvevol.Catalog = Yw.Hydro.ParterCatalog.Curve;
curvevol.Code = Yw.Untity.UniqueHelper.CreateFromFirst("curve", hydroInfo.GetAllParterCodes());
curvevol.Name = "匹配";
curvevol.ModelType = string.Empty;
curvevol.DbLocked = false;
curvevol.DbId = matching.MatchingCurveDbId;
curvevol.CurveType = Yw.WinFrmUI.HydroCurve.TankVol;
curvevol.CurveData = matching.MatchingVolCurve?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
if (hydroInfo.Curves == null)
{
hydroInfo.Curves = new List();
}
hydroInfo.Curves.Add(curvevol);
visual.VolCurve = curvevol.Code;
result = true;
}
else
{
if (!curvevol.DbLocked)
{
curvevol.DbId = matching.MatchingCurveDbId;
curvevol.CurveData = matching.MatchingVolCurve?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
result = true;
}
}
}
}
return result;
}
#endregion
#region 闷头
///
/// 应用
///
public static bool Apply(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroBluntheadInfo visual, HydroBluntheadMatchingViewModel matching)
{
if (hydroInfo == null)
{
return false;
}
if (visual == null)
{
return false;
}
if (matching == null)
{
return false;
}
visual.Name = matching.Name;
visual.DbLocked = matching.DbLocked;
visual.DbId = matching.DbId;
visual.ModelType = matching.ModelType;
visual.Caliber = matching.Caliber;
visual.Material = matching.Material;
visual.MinorLoss = matching.MinorLoss;
bool result = false;
if (!visual.DbLocked)
{
if (!string.IsNullOrEmpty(matching.MatchingModelType))
{
visual.ModelType = matching.MatchingModelType;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingDbId))
{
visual.DbId = matching.MatchingDbId;
result = true;
}
if (matching.MatchingCaliber.HasValue)
{
visual.Caliber = matching.MatchingCaliber.Value;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingMaterial))
{
visual.Material = matching.MatchingMaterial;
result = true;
}
if (matching.MatchingMinorLoss.HasValue)
{
visual.MinorLoss = matching.MatchingMinorLoss.Value;
result = true;
}
}
return result;
}
#endregion
#region 弯头
///
/// 应用
///
public static bool Apply(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroElbowInfo visual, HydroElbowMatchingViewModel matching)
{
if (hydroInfo == null)
{
return false;
}
if (visual == null)
{
return false;
}
if (matching == null)
{
return false;
}
visual.Name = matching.Name;
visual.DbLocked = matching.DbLocked;
visual.DbId = matching.DbId;
visual.ModelType = matching.ModelType;
visual.Caliber = matching.Caliber;
visual.Material = matching.Material;
visual.MinorLoss = matching.MinorLoss;
visual.BendingAngle = matching.BendingAngle;
if (matching.ElbowType.HasValue)
{
visual.ElbowType = HydroElbowTypeEnumHelper.GetElbowTypeName(matching.ElbowType.Value);
}
bool result = false;
if (!visual.DbLocked)
{
if (!string.IsNullOrEmpty(matching.MatchingModelType))
{
visual.ModelType = matching.MatchingModelType;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingDbId))
{
visual.DbId = matching.MatchingDbId;
result = true;
}
if (matching.MatchingCaliber.HasValue)
{
visual.Caliber = matching.MatchingCaliber.Value;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingMaterial))
{
visual.Material = matching.MatchingMaterial;
result = true;
}
if (matching.MatchingMinorLoss.HasValue)
{
visual.MinorLoss = matching.MatchingMinorLoss.Value;
result = true;
}
if (matching.MatchingBendingAngle.HasValue)
{
visual.BendingAngle = matching.MatchingBendingAngle.Value;
result = true;
}
if (matching.MatchingElbowType.HasValue)
{
visual.ElbowType = HydroElbowTypeEnumHelper.GetElbowTypeName(matching.MatchingElbowType.Value);
result = true;
}
}
return result;
}
#endregion
#region 三通
///
/// 应用
///
public static bool Apply(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroThreelinkInfo visual, HydroThreelinkMatchingViewModel matching)
{
if (hydroInfo == null)
{
return false;
}
if (visual == null)
{
return false;
}
if (matching == null)
{
return false;
}
visual.Name = matching.Name;
visual.DbLocked = matching.DbLocked;
visual.DbId = matching.DbId;
visual.ModelType = matching.ModelType;
visual.Caliber = matching.Caliber;
visual.Material = matching.Material;
visual.MinorLoss = matching.MinorLoss;
visual.RunningThroughLoss = matching.RunningThroughLoss;
visual.BranchThroughLoss = matching.BranchThroughLoss;
bool result = false;
if (!visual.DbLocked)
{
if (!string.IsNullOrEmpty(matching.MatchingModelType))
{
visual.ModelType = matching.MatchingModelType;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingDbId))
{
visual.DbId = matching.MatchingDbId;
result = true;
}
if (matching.MatchingCaliber.HasValue)
{
visual.Caliber = matching.MatchingCaliber.Value;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingMaterial))
{
visual.Material = matching.MatchingMaterial;
result = true;
}
if (matching.MatchingMinorLoss.HasValue)
{
visual.MinorLoss = matching.MatchingMinorLoss.Value;
result = true;
}
if (matching.MatchingRunningThroughLoss.HasValue)
{
visual.RunningThroughLoss = matching.MatchingRunningThroughLoss.Value;
result = true;
}
if (matching.MatchingBranchThroughLoss.HasValue)
{
visual.BranchThroughLoss = matching.MatchingBranchThroughLoss.Value;
result = true;
}
}
return result;
}
#endregion
#region 四通
///
/// 应用
///
public static bool Apply(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroFourlinkInfo visual, HydroFourlinkMatchingViewModel matching)
{
if (hydroInfo == null)
{
return false;
}
if (visual == null)
{
return false;
}
if (matching == null)
{
return false;
}
visual.Name = matching.Name;
visual.DbLocked = matching.DbLocked;
visual.DbId = matching.DbId;
visual.ModelType = matching.ModelType;
visual.Caliber = matching.Caliber;
visual.Material = matching.Material;
visual.MinorLoss = matching.MinorLoss;
bool result = false;
if (!visual.DbLocked)
{
if (!string.IsNullOrEmpty(matching.MatchingModelType))
{
visual.ModelType = matching.MatchingModelType;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingDbId))
{
visual.DbId = matching.MatchingDbId;
result = true;
}
if (matching.MatchingCaliber.HasValue)
{
visual.Caliber = matching.MatchingCaliber.Value;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingMaterial))
{
visual.Material = matching.MatchingMaterial;
result = true;
}
if (matching.MatchingMinorLoss.HasValue)
{
visual.MinorLoss = matching.MatchingMinorLoss.Value;
result = true;
}
}
return result;
}
#endregion
#region 喷头
///
/// 应用
///
public static bool Apply(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroNozzleInfo visual, HydroNozzleMatchingViewModel matching)
{
if (hydroInfo == null)
{
return false;
}
if (visual == null)
{
return false;
}
if (matching == null)
{
return false;
}
visual.Name = matching.Name;
visual.DbLocked = matching.DbLocked;
visual.DbId = matching.DbId;
visual.ModelType = matching.ModelType;
visual.Material = matching.Material;
visual.Caliber = matching.Caliber;
visual.MinorLoss = matching.MinorLoss;
visual.Coefficient = matching.Coefficient;
bool result = false;
if (!visual.DbLocked)
{
if (!string.IsNullOrEmpty(matching.MatchingModelType))
{
visual.ModelType = matching.MatchingModelType;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingDbId))
{
visual.DbId = matching.MatchingDbId;
result = true;
}
if (matching.MatchingCaliber.HasValue)
{
visual.Caliber = matching.MatchingCaliber.Value;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingMaterial))
{
visual.Material = matching.MatchingMaterial;
result = true;
}
if (matching.MatchingMinorLoss.HasValue)
{
visual.MinorLoss = matching.MatchingMinorLoss.Value;
result = true;
}
if (matching.MatchingCoefficient.HasValue)
{
visual.Coefficient = matching.MatchingCoefficient.Value;
result = true;
}
}
return result;
}
#endregion
#region 消火栓
///
/// 应用
///
public static bool Apply(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroHydrantInfo visual, HydroHydrantMatchingViewModel matching)
{
if (hydroInfo == null)
{
return false;
}
if (visual == null)
{
return false;
}
if (matching == null)
{
return false;
}
visual.Name = matching.Name;
visual.DbLocked = matching.DbLocked;
visual.DbId = matching.DbId;
visual.ModelType = matching.ModelType;
visual.Material = matching.Material;
visual.Caliber = matching.Caliber;
visual.MinorLoss = matching.MinorLoss;
visual.Coefficient = matching.Coefficient;
bool result = false;
if (!visual.DbLocked)
{
if (!string.IsNullOrEmpty(matching.MatchingModelType))
{
visual.ModelType = matching.MatchingModelType;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingDbId))
{
visual.DbId = matching.MatchingDbId;
result = true;
}
if (matching.MatchingCaliber.HasValue)
{
visual.Caliber = matching.MatchingCaliber.Value;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingMaterial))
{
visual.Material = matching.MatchingMaterial;
result = true;
}
if (matching.MatchingMinorLoss.HasValue)
{
visual.MinorLoss = matching.MatchingMinorLoss.Value;
result = true;
}
if (matching.MatchingCoefficient.HasValue)
{
visual.Coefficient = matching.MatchingCoefficient.Value;
result = true;
}
}
return result;
}
#endregion
#region 水表
///
/// 应用
///
public static bool Apply(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroMeterInfo visual, HydroMeterMatchingViewModel matching)
{
if (hydroInfo == null)
{
return false;
}
if (visual == null)
{
return false;
}
if (matching == null)
{
return false;
}
visual.Name = matching.Name;
visual.DbLocked = matching.DbLocked;
visual.DbId = matching.DbId;
visual.ModelType = matching.ModelType;
visual.MinorLoss = matching.MinorLoss;
bool result = false;
if (!visual.DbLocked)
{
if (!string.IsNullOrEmpty(matching.MatchingModelType))
{
visual.ModelType = matching.MatchingModelType;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingDbId))
{
visual.DbId = matching.MatchingDbId;
result = true;
}
if (matching.MatchingMinorLoss.HasValue)
{
visual.MinorLoss = matching.MatchingMinorLoss.Value;
result = true;
}
}
return result;
}
#endregion
#region 流量计
///
/// 应用
///
public static bool Apply(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroFlowmeterInfo visual, HydroFlowmeterMatchingViewModel matching)
{
if (hydroInfo == null)
{
return false;
}
if (visual == null)
{
return false;
}
if (matching == null)
{
return false;
}
visual.Name = matching.Name;
visual.DbLocked = matching.DbLocked;
visual.DbId = matching.DbId;
visual.ModelType = matching.ModelType;
visual.MinorLoss = matching.MinorLoss;
bool result = false;
if (!visual.DbLocked)
{
if (!string.IsNullOrEmpty(matching.MatchingModelType))
{
visual.ModelType = matching.MatchingModelType;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingDbId))
{
visual.DbId = matching.MatchingDbId;
result = true;
}
if (matching.MatchingMinorLoss.HasValue)
{
visual.MinorLoss = matching.MatchingMinorLoss.Value;
result = true;
}
}
return result;
}
#endregion
#region 压力表
///
/// 应用
///
public static bool Apply(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroPressmeterInfo visual, HydroPressmeterMatchingViewModel matching)
{
if (hydroInfo == null)
{
return false;
}
if (visual == null)
{
return false;
}
if (matching == null)
{
return false;
}
visual.Name = matching.Name;
visual.DbLocked = matching.DbLocked;
visual.DbId = matching.DbId;
visual.ModelType = matching.ModelType;
visual.MinorLoss = matching.MinorLoss;
bool result = false;
if (!visual.DbLocked)
{
if (!string.IsNullOrEmpty(matching.MatchingModelType))
{
visual.ModelType = matching.MatchingModelType;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingDbId))
{
visual.DbId = matching.MatchingDbId;
result = true;
}
if (matching.MatchingMinorLoss.HasValue)
{
visual.MinorLoss = matching.MatchingMinorLoss.Value;
result = true;
}
}
return result;
}
#endregion
#region 管道
///
/// 应用
///
public static bool Apply(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroPipeInfo visual, HydroPipeMatchingViewModel matching)
{
if (hydroInfo == null)
{
return false;
}
if (visual == null)
{
return false;
}
if (matching == null)
{
return false;
}
visual.Name = matching.Name;
visual.DbLocked = matching.DbLocked;
visual.DbId = matching.DbId;
visual.ModelType = matching.ModelType;
visual.Material = matching.Material;
visual.Diameter = matching.Diameter;
visual.Roughness = matching.Roughness;
visual.MinorLoss = matching.MinorLoss;
bool result = false;
if (!visual.DbLocked)
{
if (!string.IsNullOrEmpty(matching.MatchingModelType))
{
visual.ModelType = matching.MatchingModelType;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingDbId))
{
visual.DbId = matching.MatchingDbId;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingMaterial))
{
visual.Material = matching.MatchingMaterial;
result = true;
}
if (matching.MatchingDiameter.HasValue)
{
visual.Diameter = matching.MatchingDiameter.Value;
result = true;
}
if (matching.MatchingRoughness.HasValue)
{
visual.Roughness = matching.MatchingRoughness.Value;
result = true;
}
if (matching.MatchingMinorLoss.HasValue)
{
visual.MinorLoss = matching.MatchingMinorLoss.Value;
result = true;
}
}
return result;
}
#endregion
#region 过渡件
///
/// 应用
///
public static bool Apply(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroTranslationInfo visual, HydroTranslationMatchingViewModel matching)
{
if (hydroInfo == null)
{
return false;
}
if (visual == null)
{
return false;
}
if (matching == null)
{
return false;
}
visual.Name = matching.Name;
visual.DbLocked = matching.DbLocked;
visual.DbId = matching.DbId;
visual.ModelType = matching.ModelType;
visual.Material = matching.Material;
visual.Diameter = matching.Diameter;
visual.StartDiameter = matching.StartDiameter;
visual.EndDiameter = matching.EndDiameter;
visual.Roughness = matching.Roughness;
visual.MinorLoss = matching.MinorLoss;
bool result = false;
if (!visual.DbLocked)
{
if (!string.IsNullOrEmpty(matching.MatchingModelType))
{
visual.ModelType = matching.MatchingModelType;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingDbId))
{
visual.DbId = matching.MatchingDbId;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingMaterial))
{
visual.Material = matching.MatchingMaterial;
result = true;
}
if (matching.MatchingDiameter.HasValue)
{
visual.Diameter = matching.MatchingDiameter.Value;
result = true;
}
if (matching.MatchingStartDiameter.HasValue)
{
visual.StartDiameter = matching.MatchingStartDiameter.Value;
result = true;
}
if (matching.MatchingEndDiameter.HasValue)
{
visual.EndDiameter = matching.MatchingEndDiameter.Value;
result = true;
}
if (matching.MatchingRoughness.HasValue)
{
visual.Roughness = matching.MatchingRoughness.Value;
result = true;
}
if (matching.MatchingMinorLoss.HasValue)
{
visual.MinorLoss = matching.MatchingMinorLoss.Value;
result = true;
}
}
return result;
}
#endregion
#region 水泵
///
/// 应用
///
public static bool Apply(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroPumpInfo visual, HydroPumpMatchingViewModel matching)
{
if (hydroInfo == null)
{
return false;
}
if (visual == null)
{
return false;
}
if (matching == null)
{
return false;
}
visual.Name = matching.Name;
visual.DbLocked = matching.DbLocked;
visual.DbId = matching.DbId;
visual.ModelType = matching.ModelType;
visual.RatedQ = matching.RatedQ;
visual.RatedH = matching.RatedH;
visual.RatedP = matching.RatedP;
visual.RatedN = matching.RatedN;
visual.RatedHz = matching.RatedHz;
visual.SpeedRatio = matching.CurrentHz / visual.RatedHz;
bool result = false;
if (!visual.DbLocked)
{
if (!string.IsNullOrEmpty(matching.MatchingModelType))
{
visual.ModelType = matching.MatchingModelType;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingDbId))
{
visual.DbId = matching.MatchingDbId;
result = true;
}
if (matching.MatchingRatedQ.HasValue)
{
visual.RatedQ = matching.MatchingRatedQ.Value;
result = true;
}
if (matching.MatchingRatedH.HasValue)
{
visual.RatedH = matching.MatchingRatedH.Value;
result = true;
}
if (matching.MatchingRatedP.HasValue)
{
visual.RatedP = matching.MatchingRatedP.Value;
result = true;
}
if (matching.MatchingRatedN.HasValue)
{
visual.RatedN = matching.MatchingRatedN.Value;
result = true;
}
if (matching.MatchingRatedHz.HasValue)
{
visual.RatedHz = matching.MatchingRatedHz.Value;
result = true;
}
if (matching.MatchingCurrentHz.HasValue)
{
visual.SpeedRatio = matching.MatchingCurrentHz.Value / visual.RatedHz;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingCurveDbId))
{
//流量扬程曲线
var curveqh = hydroInfo.Curves?.Find(x => x.Code == visual.CurveQH);
if (curveqh == null)
{
curveqh = new Yw.Model.HydroCurveInfo();
curveqh.Catalog = Yw.Hydro.ParterCatalog.Curve;
curveqh.Code = Yw.Untity.UniqueHelper.CreateFromFirst("curve", hydroInfo.GetAllParterCodes());
curveqh.Name = "匹配";
curveqh.ModelType = string.Empty;
curveqh.DbLocked = false;
curveqh.DbId = matching.MatchingCurveDbId;
curveqh.CurveType = Yw.WinFrmUI.HydroCurve.PumpQH;
curveqh.CurveData = matching.MatchingCurveQH?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
if (hydroInfo.Curves == null)
{
hydroInfo.Curves = new List();
}
hydroInfo.Curves.Add(curveqh);
visual.CurveQH = curveqh.Code;
result = true;
}
else
{
if (!curveqh.DbLocked)
{
curveqh.DbId = matching.MatchingCurveDbId;
curveqh.CurveData = matching.MatchingCurveQH?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
result = true;
}
}
//流量功率曲线
var curveqp = hydroInfo.Curves?.Find(x => x.Code == visual.CurveQP);
if (curveqp == null)
{
curveqp = new Yw.Model.HydroCurveInfo();
curveqp.Catalog = Yw.Hydro.ParterCatalog.Curve;
curveqp.Code = Yw.Untity.UniqueHelper.CreateFromFirst("curve", hydroInfo.GetAllParterCodes());
curveqp.Name = "匹配";
curveqp.ModelType = string.Empty;
curveqp.DbLocked = false;
curveqp.DbId = matching.MatchingCurveDbId;
curveqp.CurveType = Yw.WinFrmUI.HydroCurve.PumpQP;
curveqp.CurveData = matching.MatchingCurveQP?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
if (hydroInfo.Curves == null)
{
hydroInfo.Curves = new List();
}
hydroInfo.Curves.Add(curveqp);
visual.CurveQP = curveqp.Code;
result = true;
}
else
{
if (!curveqp.DbLocked)
{
curveqp.DbId = matching.MatchingCurveDbId;
curveqp.CurveData = matching.MatchingCurveQP?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
result = true;
}
}
//流量效率曲线
var curveqe = hydroInfo.Curves?.Find(x => x.Code == visual.CurveQE);
if (curveqe == null)
{
curveqe = new Yw.Model.HydroCurveInfo();
curveqe.Catalog = Yw.Hydro.ParterCatalog.Curve;
curveqe.Code = Yw.Untity.UniqueHelper.CreateFromFirst("curve", hydroInfo.GetAllParterCodes());
curveqe.Name = "匹配";
curveqe.ModelType = string.Empty;
curveqe.DbLocked = false;
curveqe.DbId = matching.MatchingCurveDbId;
curveqe.CurveType = Yw.WinFrmUI.HydroCurve.PumpQE;
curveqe.CurveData = matching.MatchingCurveQE?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
if (hydroInfo.Curves == null)
{
hydroInfo.Curves = new List();
}
hydroInfo.Curves.Add(curveqe);
visual.CurveQE = curveqe.Code;
result = true;
}
else
{
if (!curveqe.DbLocked)
{
curveqe.DbId = matching.MatchingCurveDbId;
curveqe.CurveData = matching.MatchingCurveQE?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
result = true;
}
}
}
}
return result;
}
#endregion
#region 阀门
///
/// 应用
///
public static bool Apply(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroValveInfo visual, HydroValveMatchingViewModel matching)
{
if (hydroInfo == null)
{
return false;
}
if (visual == null)
{
return false;
}
if (matching == null)
{
return false;
}
visual.Name = matching.Name;
visual.DbLocked = matching.DbLocked;
visual.DbId = matching.DbId;
visual.ModelType = matching.ModelType;
visual.Material = matching.Material;
visual.Diameter = matching.Diameter;
visual.MinorLoss = matching.MinorLoss;
visual.ValveType = HydroValveTypeEnumHelper.GetValveTypeCode(matching.ValveType);
visual.ValveSetting = matching.ValveSetting;
bool result = false;
if (!visual.DbLocked)
{
if (!string.IsNullOrEmpty(matching.MatchingModelType))
{
visual.ModelType = matching.MatchingModelType;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingDbId))
{
visual.DbId = matching.MatchingDbId;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingMaterial))
{
visual.Material = matching.MatchingMaterial;
result = true;
}
if (matching.MatchingDiameter.HasValue)
{
visual.Diameter = matching.MatchingDiameter.Value;
result = true;
}
if (matching.MatchingMinorLoss.HasValue)
{
visual.MinorLoss = matching.MatchingMinorLoss.Value;
result = true;
}
if (matching.MatchingValveType.HasValue)
{
visual.ValveType = HydroValveTypeEnumHelper.GetValveTypeCode(matching.MatchingValveType.Value);
result = true;
}
switch (visual.ValveType)
{
case Yw.Hydro.ValveType.PSV:
{
if (!string.IsNullOrEmpty(matching.MatchingValveSetting))
{
visual.ValveSetting = matching.MatchingValveSetting;
result = true;
}
}
break;
case Yw.Hydro.ValveType.PBV:
{
if (!string.IsNullOrEmpty(matching.MatchingValveSetting))
{
visual.ValveSetting = matching.MatchingValveSetting;
result = true;
}
}
break;
case Yw.Hydro.ValveType.PRV:
{
if (!string.IsNullOrEmpty(matching.MatchingValveSetting))
{
visual.ValveSetting = matching.MatchingValveSetting;
result = true;
}
}
break;
case Yw.Hydro.ValveType.FCV:
{
if (!string.IsNullOrEmpty(matching.MatchingValveSetting))
{
visual.ValveSetting = matching.MatchingValveSetting;
result = true;
}
}
break;
case Yw.Hydro.ValveType.TCV:
{
if (!string.IsNullOrEmpty(matching.MatchingCurveDbId))
{
//阀门开度损失系数曲线
var curveol = hydroInfo.Curves?.Find(x => x.Code == visual.ValveSetting);
if (curveol == null)
{
curveol = new Yw.Model.HydroCurveInfo();
curveol.Catalog = Yw.Hydro.ParterCatalog.Curve;
curveol.Code = Yw.Untity.UniqueHelper.CreateFromFirst("curve", hydroInfo.GetAllParterCodes());
curveol.Name = "匹配";
curveol.ModelType = visual.ModelType;
curveol.DbLocked = false;
curveol.DbId = matching.MatchingCurveDbId;
curveol.CurveType = Yw.WinFrmUI.HydroCurve.ValveOL;
curveol.CurveData = matching.MatchingCurveOL?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
if (hydroInfo.Curves == null)
{
hydroInfo.Curves = new List();
}
hydroInfo.Curves.Add(curveol);
visual.ValveSetting = curveol.Code;
result = true;
}
else
{
if (!curveol.DbLocked)
{
curveol.DbId = matching.MatchingCurveDbId;
curveol.CurveData = matching.MatchingCurveOL?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
result = true;
}
}
}
}
break;
case Yw.Hydro.ValveType.GPV:
{
if (!string.IsNullOrEmpty(matching.MatchingCurveDbId))
{
//阀门开度损失系数曲线
var curveql = hydroInfo.Curves?.Find(x => x.Code == visual.ValveSetting);
if (curveql == null)
{
curveql = new Yw.Model.HydroCurveInfo();
curveql.Catalog = Yw.Hydro.ParterCatalog.Curve;
curveql.Code = Yw.Untity.UniqueHelper.CreateFromFirst("curve", hydroInfo.GetAllParterCodes());
curveql.Name = "匹配";
curveql.ModelType = visual.ModelType;
curveql.DbLocked = false;
curveql.DbId = matching.MatchingCurveDbId;
curveql.CurveType = Yw.WinFrmUI.HydroCurve.ValveOL;
curveql.CurveData = matching.MatchingCurveQL?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
if (hydroInfo.Curves == null)
{
hydroInfo.Curves = new List();
}
hydroInfo.Curves.Add(curveql);
visual.ValveSetting = curveql.Code;
result = true;
}
else
{
if (!curveql.DbLocked)
{
curveql.DbId = matching.MatchingCurveDbId;
curveql.CurveData = matching.MatchingCurveQL?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
result = true;
}
}
}
}
break;
case Yw.Hydro.ValveType.CV:
{
}
break;
}
}
return result;
}
#endregion
#region 换热器
///
/// 应用
///
public static bool Apply(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroExchangerInfo visual, HydroExchangerMatchingViewModel matching)
{
if (hydroInfo == null)
{
return false;
}
if (visual == null)
{
return false;
}
if (matching == null)
{
return false;
}
visual.Name = matching.Name;
visual.DbLocked = matching.DbLocked;
visual.DbId = matching.DbId;
visual.ModelType = matching.ModelType;
visual.Material = matching.Material;
visual.Diameter = matching.Diameter;
visual.MinorLoss = matching.MinorLoss;
bool result = false;
if (!visual.DbLocked)
{
if (!string.IsNullOrEmpty(matching.MatchingModelType))
{
visual.ModelType = matching.MatchingModelType;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingDbId))
{
visual.DbId = matching.MatchingDbId;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingMaterial))
{
visual.Material = matching.MatchingMaterial;
result = true;
}
if (matching.MatchingDiameter.HasValue)
{
visual.Diameter = matching.MatchingDiameter.Value;
result = true;
}
if (matching.MatchingMinorLoss.HasValue)
{
visual.MinorLoss = matching.MatchingMinorLoss.Value;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingCurveDbId))
{
var curvevql = hydroInfo.Curves?.Find(x => x.Code == visual.CurveQL);
if (curvevql == null)
{
curvevql = new Yw.Model.HydroCurveInfo();
curvevql.Catalog = Yw.Hydro.ParterCatalog.Curve;
curvevql.Code = Yw.Untity.UniqueHelper.CreateFromFirst("curve", hydroInfo.GetAllParterCodes());
curvevql.Name = "匹配";
curvevql.ModelType = string.Empty;
curvevql.DbLocked = false;
curvevql.DbId = matching.MatchingCurveDbId;
curvevql.CurveType = Yw.WinFrmUI.HydroCurve.ExchangerQL;
curvevql.CurveData = matching.MatchingCurveQL?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
if (hydroInfo.Curves == null)
{
hydroInfo.Curves = new List();
}
hydroInfo.Curves.Add(curvevql);
visual.CurveQL = curvevql.Code;
result = true;
}
else
{
if (!curvevql.DbLocked)
{
curvevql.DbId = matching.MatchingCurveDbId;
curvevql.CurveData = matching.MatchingCurveQL?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
result = true;
}
}
}
}
return result;
}
#endregion
#region 空压机
///
/// 应用
///
public static bool Apply(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroCompressorInfo visual, HydroCompressorMatchingViewModel matching)
{
if (hydroInfo == null)
{
return false;
}
if (visual == null)
{
return false;
}
if (matching == null)
{
return false;
}
visual.Name = matching.Name;
visual.DbLocked = matching.DbLocked;
visual.DbId = matching.DbId;
visual.ModelType = matching.ModelType;
visual.Material = matching.Material;
visual.Diameter = matching.Diameter;
visual.MinorLoss = matching.MinorLoss;
bool result = false;
if (!visual.DbLocked)
{
if (!string.IsNullOrEmpty(matching.MatchingModelType))
{
visual.ModelType = matching.MatchingModelType;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingDbId))
{
visual.DbId = matching.MatchingDbId;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingMaterial))
{
visual.Material = matching.MatchingMaterial;
result = true;
}
if (matching.MatchingDiameter.HasValue)
{
visual.Diameter = matching.MatchingDiameter.Value;
result = true;
}
if (matching.MatchingMinorLoss.HasValue)
{
visual.MinorLoss = matching.MatchingMinorLoss.Value;
result = true;
}
if (!string.IsNullOrEmpty(matching.MatchingCurveDbId))
{
var curvevql = hydroInfo.Curves?.Find(x => x.Code == visual.CurveQL);
if (curvevql == null)
{
curvevql = new Yw.Model.HydroCurveInfo();
curvevql.Catalog = Yw.Hydro.ParterCatalog.Curve;
curvevql.Code = Yw.Untity.UniqueHelper.CreateFromFirst("curve", hydroInfo.GetAllParterCodes());
curvevql.Name = "匹配";
curvevql.ModelType = string.Empty;
curvevql.DbLocked = false;
curvevql.DbId = matching.MatchingCurveDbId;
curvevql.CurveType = Yw.WinFrmUI.HydroCurve.CompressorQL;
curvevql.CurveData = matching.MatchingCurveQL?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
if (hydroInfo.Curves == null)
{
hydroInfo.Curves = new List();
}
hydroInfo.Curves.Add(curvevql);
visual.CurveQL = curvevql.Code;
result = true;
}
else
{
if (!curvevql.DbLocked)
{
curvevql.DbId = matching.MatchingCurveDbId;
curvevql.CurveData = matching.MatchingCurveQL?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
result = true;
}
}
}
}
return result;
}
#endregion
#endregion
}
}