using HStation.WinFrmUI.PhartRelation;
|
using HStation.WinFrmUI.Xhs;
|
|
namespace HStation.WinFrmUI
|
{
|
/// <summary>
|
/// 项目模拟属性控件
|
/// </summary>
|
public partial class XhsProjectSimulationPropertyCtrl : DevExpress.XtraEditors.XtraUserControl
|
{
|
public XhsProjectSimulationPropertyCtrl()
|
{
|
InitializeComponent();
|
this.hydroVisualPropertyCtrl1.MatchingDbEvent += HydroParterPropertyCtrl1_MatchingDbEvent;
|
this.hydroVisualPropertyCtrl1.SetCurveEvent += HydroParterPropertyCtrl1_SetCurveEvent;
|
this.hydroVisualPropertyCtrl1.SetPatternEvent += HydroParterPropertyCtrl1_SetPatternEvent;
|
this.hydroVisualPropertyCtrl1.BlinkLinkParterEvent += HydroParterPropertyCtrl1_BlinkLinkParterEvent;
|
this.hydroVisualPropertyCtrl1.HydroViewEvent += HydroParterPropertyCtrl1_ViewParterEvent;
|
|
this.hydroVisualPropertyCtrl1.PropertyValueChangedEvent += HydroParterPropertyCtrl1_PropertyValueChangedEvent;
|
this.hydroVisualPropertyCtrl1.MarkPropertyValueChangedEvent += HydroParterPropertyCtrl1_MarkPropertyValueChangedEvent;
|
this.hydroVisualPropertyCtrl1.GradingPropertyValueChangedEvent += HydroParterPropertyCtrl1_GradingPropertyValueChangedEvent;
|
this.hydroVisualPropertyCtrl1.FlowDirectionPropertyValueChangedEvent += HydroParterPropertyCtrl1_FlowDirectionPropertyValueChangedEvent;
|
}
|
|
|
|
|
|
|
/// <summary>
|
/// 强调连接组件事件
|
/// 第一个参数为组件Code
|
/// 第二个参数为连接组件Code
|
/// </summary>
|
public event Action<string, string> BlinkLinkParterEvent;
|
|
/// <summary>
|
/// 属性值改变事件
|
/// </summary>
|
public event Action<Yw.Model.HydroVisualInfo> PropertyValueChangedEvent;
|
|
/// <summary>
|
/// 标注属性值改变事件
|
/// </summary>
|
public event Action<Yw.Model.HydroVisualInfo> MarkPropertyValueChangedEvent;
|
|
/// <summary>
|
/// 分级属性值改变事件
|
/// </summary>
|
public event Action<Yw.Model.HydroVisualInfo> GradingPropertyValueChangedEvent;
|
|
/// <summary>
|
/// 流向属性值改变事件
|
/// </summary>
|
public event Action<Yw.Model.HydroVisualInfo> FlowDirectionPropertyValueChangedEvent;
|
|
/// <summary>
|
/// 查看构件事件
|
/// </summary>
|
public event Action<Yw.Model.HydroVisualInfo> ViewParterEvent;
|
|
//水力信息方法
|
private Func<Yw.Model.HydroModelInfo> _hydroInfoFunc = null;
|
private Func<List<HydroCalcuResult>> _allHydroCalcuResultListFunc = null;
|
|
/// <summary>
|
/// 初始化数据
|
/// </summary>
|
public void InitialData(Func<Yw.Model.HydroModelInfo> hydroInfoFunc, Func<List<HydroCalcuResult>> allHydroCalcuResultListFunc)
|
{
|
_hydroInfoFunc = hydroInfoFunc;
|
_allHydroCalcuResultListFunc = allHydroCalcuResultListFunc;
|
}
|
|
//获取水力信息
|
private Yw.Model.HydroModelInfo GetHydroInfo()
|
{
|
var hydroInfo = _hydroInfoFunc?.Invoke();
|
if (hydroInfo == null)
|
{
|
this.hydroVisualPropertyCtrl1.SelectedObject = null;
|
return default;
|
}
|
return hydroInfo;
|
}
|
|
|
public HydroVisualViewModel SelectedObject
|
{
|
get { return this.hydroVisualPropertyCtrl1.SelectedObject; }
|
set { this.hydroVisualPropertyCtrl1.SelectedObject = value; }
|
}
|
|
/// <summary>
|
/// 更新行,样式不变
|
/// </summary>
|
public void UpdateRows()
|
{
|
this.hydroVisualPropertyCtrl1?.UpdateRows();
|
}
|
|
/// <summary>
|
/// 重新载入数据
|
/// </summary>
|
public void UpdateData()
|
{
|
this.hydroVisualPropertyCtrl1?.UpdateData();
|
}
|
|
/// <summary>
|
/// 更新属性
|
/// </summary>
|
public void UpdateProperty()
|
{
|
var vm = this.hydroVisualPropertyCtrl1.SelectedObject;
|
if (vm == null)
|
{
|
return;
|
}
|
vm.UpdateProperty();
|
this.hydroVisualPropertyCtrl1.UpdateRows();
|
}
|
|
/// <summary>
|
/// 更新计算属性
|
/// </summary>
|
public void UpdateCalcuProperty(Yw.WinFrmUI.HydroCalcuResult calcuResult)
|
{
|
if (calcuResult == null)
|
{
|
return;
|
}
|
var vm = this.hydroVisualPropertyCtrl1.SelectedObject;
|
if (vm == null)
|
{
|
return;
|
}
|
vm.UpdateCalcuProperty(calcuResult);
|
this.hydroVisualPropertyCtrl1.UpdateRows();
|
}
|
|
//选择曲线
|
private bool HydroParterPropertyCtrl1_SetCurveEvent(HydroParterViewModel propViewModel, string curveType)
|
{
|
var hydroInfo = _hydroInfoFunc?.Invoke();
|
if (hydroInfo == null)
|
{
|
return false;
|
}
|
switch (curveType)
|
{
|
case Yw.WinFrmUI.HydroCurve.Pump:
|
{
|
var pumpInfo = hydroInfo.Pumps?.Find(x => x.Code == propViewModel.Code);
|
if (pumpInfo == null)
|
{
|
break;
|
}
|
var input = AssetsMatchingParasHelper.Create(hydroInfo, pumpInfo, _allHydroCalcuResultListFunc?.Invoke());
|
var dlg = new SinglePumpAnalyDlg();
|
dlg.SetBindindData(input);
|
dlg.ReloadDataEvent += (output) =>
|
{
|
var bol = AssetsMatchingParasHelper.Apply(hydroInfo, output);
|
if (bol)
|
{
|
propViewModel.UpdateProperty();
|
this.hydroVisualPropertyCtrl1.UpdateRows();
|
}
|
return bol;
|
};
|
dlg.ShowDialog();
|
return true;
|
}
|
case Yw.WinFrmUI.HydroCurve.PumpQH:
|
{
|
return false;
|
}
|
case Yw.WinFrmUI.HydroCurve.PumpQP:
|
{
|
return false;
|
}
|
case Yw.WinFrmUI.HydroCurve.PumpQE:
|
{
|
return false;
|
}
|
case Yw.WinFrmUI.HydroCurve.Valve:
|
{
|
return true;
|
}
|
case Yw.WinFrmUI.HydroCurve.ValveQL:
|
{
|
return false;
|
}
|
default: break;
|
}
|
return false;
|
}
|
|
//选择模式
|
private bool HydroParterPropertyCtrl1_SetPatternEvent(HydroParterViewModel propViewModel, string patternType)
|
{
|
switch (patternType)
|
{
|
case Yw.WinFrmUI.HydroPattern.Demand:
|
{
|
}
|
break;
|
|
case Yw.WinFrmUI.HydroPattern.Head:
|
{
|
}
|
break;
|
|
default: break;
|
}
|
return true;
|
}
|
|
//属性发生改变
|
private void HydroParterPropertyCtrl1_PropertyValueChangedEvent(HydroVisualViewModel vm)
|
{
|
if (vm == null)
|
{
|
return;
|
}
|
this.PropertyValueChangedEvent?.Invoke(vm.Vmo);
|
}
|
|
//标注属性发生改变
|
private void HydroParterPropertyCtrl1_MarkPropertyValueChangedEvent(HydroVisualViewModel vm)
|
{
|
if (vm == null)
|
{
|
return;
|
}
|
this.MarkPropertyValueChangedEvent?.Invoke(vm.Vmo);
|
}
|
|
//分级属性发生改变
|
private void HydroParterPropertyCtrl1_GradingPropertyValueChangedEvent(HydroVisualViewModel vm)
|
{
|
if (vm == null)
|
{
|
return;
|
}
|
this.GradingPropertyValueChangedEvent?.Invoke(vm.Vmo);
|
}
|
|
//流向属性发生改变
|
private void HydroParterPropertyCtrl1_FlowDirectionPropertyValueChangedEvent(HydroVisualViewModel vm)
|
{
|
if (vm == null)
|
{
|
return;
|
}
|
this.FlowDirectionPropertyValueChangedEvent?.Invoke(vm.Vmo);
|
}
|
|
|
|
|
|
|
//属性正在发生改变
|
private bool HydroParterPropertyCtrl1_PropertyValueChangingEvent(HydroParterViewModel arg)
|
{
|
return false;
|
}
|
|
//匹配Db
|
private bool HydroParterPropertyCtrl1_MatchingDbEvent(HydroParterViewModel propertyViewModel)
|
{
|
var bol = false;
|
if (propertyViewModel == null)
|
{
|
return bol;
|
}
|
var hydroInfo = _hydroInfoFunc?.Invoke();
|
if (hydroInfo == null)
|
{
|
return bol;
|
}
|
var catalog = Yw.WinFrmUI.HydroParterCatalogHelper.GetCode(propertyViewModel.Catalog);
|
switch (catalog)
|
{
|
case Yw.Hydro.ParterCatalog.Pump://水泵
|
{
|
var pumpInfo = hydroInfo.Pumps?.Find(x => x.Code == propertyViewModel.Code);
|
if (pumpInfo == null)
|
{
|
break;
|
}
|
|
var input = AssetsMatchingParasHelper.Create(hydroInfo, pumpInfo, _allHydroCalcuResultListFunc?.Invoke());
|
var dlg = new PumpSingleMatchingDlg();
|
dlg.SetBindingData(input);
|
dlg.ReloadDataEvent += (output) =>
|
{
|
bol = AssetsMatchingParasHelper.Apply(hydroInfo, output);
|
if (bol)
|
{
|
propertyViewModel.UpdateProperty();
|
}
|
};
|
dlg.ShowDialog();
|
}
|
break;
|
case Yw.Hydro.ParterCatalog.Valve://阀门
|
{
|
var valveInfo = hydroInfo.Valves?.Find(x => x.Code == propertyViewModel.Code);
|
if (valveInfo == null)
|
{
|
break;
|
}
|
var input = AssetsMatchingParasHelper.Create(hydroInfo, valveInfo, _allHydroCalcuResultListFunc?.Invoke());
|
var dlg = new ValveSingleMatchingDlg();
|
dlg.SetBindingData(input);
|
dlg.ReloadDataEvent += (rhs) =>
|
{
|
var bol = AssetsMatchingParasHelper.Apply(hydroInfo, rhs);
|
if (bol)
|
{
|
propertyViewModel.UpdateProperty();
|
this.hydroVisualPropertyCtrl1.UpdateRows();
|
}
|
};
|
dlg.ShowDialog();
|
}
|
break;
|
case Yw.Hydro.ParterCatalog.Pipe://管道
|
{
|
}
|
break;
|
case Yw.Hydro.ParterCatalog.Elbow://弯头
|
{
|
var elbowInfo = hydroInfo.Elbows?.Find(x => x.Code == propertyViewModel.Code);
|
if (elbowInfo == null)
|
{
|
break;
|
}
|
var input = AssetsMatchingParasHelper.Create(hydroInfo, elbowInfo, _allHydroCalcuResultListFunc?.Invoke());
|
var dlg = new ElbowSingMatchingDlg();
|
dlg.SetBindingData(input);
|
dlg.ReloadDataEvent += (output) =>
|
{
|
var bol = AssetsMatchingParasHelper.Apply(hydroInfo, output);
|
if (bol)
|
{
|
propertyViewModel.UpdateProperty();
|
this.hydroVisualPropertyCtrl1.UpdateRows();
|
}
|
};
|
dlg.ShowDialog();
|
}
|
break;
|
case Yw.Hydro.ParterCatalog.Threelink://三通
|
{
|
}
|
break;
|
case Yw.Hydro.ParterCatalog.Fourlink://四通
|
{
|
}
|
break;
|
default: break;
|
}
|
return bol;
|
}
|
|
//强调连接组件
|
private void HydroParterPropertyCtrl1_BlinkLinkParterEvent(string code, string linkCode)
|
{
|
if (string.IsNullOrEmpty(code))
|
{
|
return;
|
}
|
if (string.IsNullOrEmpty(linkCode))
|
{
|
return;
|
}
|
this.BlinkLinkParterEvent?.Invoke(code, linkCode);
|
}
|
|
//查看构件
|
private void HydroParterPropertyCtrl1_ViewParterEvent(HydroVisualViewModel vm)
|
{
|
if (vm == null)
|
{
|
return;
|
}
|
this.ViewParterEvent?.Invoke(vm.Vmo);
|
}
|
|
|
}
|
}
|