using System.Data;
|
using Yw.Pump;
|
using Yw.WinFrmUI.Phart;
|
|
namespace HStation.WinFrmUI
|
{
|
public partial class SimulationPumpFeatCtrl : DevExpress.XtraEditors.XtraUserControl
|
{
|
public SimulationPumpFeatCtrl()
|
{
|
InitializeComponent();
|
this.layoutControl1.SetupLayoutControl();
|
this.hydroPumpListStateEditCtrl1.SelectedChangedEvent += HydroPumpListStateEditCtrl1_SelectedChangedEvent;
|
}
|
|
/// <summary>
|
/// 保存事件
|
/// </summary>
|
public event Action<List<HydroWorkingPumpViewModel>> SaveEvent;
|
|
/// <summary>
|
///
|
/// </summary>
|
public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo)
|
{
|
this.hydroPumpListStateEditCtrl1.SetBindingData(hydroInfo);
|
}
|
|
|
private void HydroPumpListStateEditCtrl1_SelectedChangedEvent(HydroPumpListItemStateViewModel obj)
|
{
|
var vm = CreateViewModel(obj);
|
this.pumpOperationChart1.SetBindingData(vm);
|
}
|
|
//创建
|
private PumpOperationViewModel CreateViewModel(HydroPumpListItemStateViewModel state)
|
{
|
var vm = new PumpOperationViewModel();
|
vm.Id = state.Code;
|
vm.Name = state.Name;
|
vm.RatedQ = state.Vmo.RatedQ;
|
vm.RatedH = state.Vmo.RatedH;
|
vm.RatedP = state.Vmo.RatedP;
|
vm.RatedN = state.Vmo.RatedN;
|
vm.RatedHz = state.Vmo.RatedHz;
|
vm.CurrentHz = state.CurrentHz;
|
vm.CurrentN = Math.Round(state.CurrentHz / state.Vmo.RatedHz * vm.RatedN, 1);
|
vm.CurrentStatus = state.LinkStatus == Yw.Hydro.PumpStatus.Open;
|
|
var curveqh = state.HydroInfo.Curves?.Find(x => x.Code == state.Vmo.CurveQH);
|
if (curveqh != null)
|
{
|
var qh_pts = curveqh.CurveData?.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList();
|
if (qh_pts != null && qh_pts.Count > 3)
|
{
|
vm.CurveQH = qh_pts;
|
var qh_current_pts = qh_pts.GetQHPointListByN(state.Vmo.RatedHz, state.CurrentHz);
|
vm.CurrentCurveQH = qh_current_pts;
|
}
|
}
|
|
var curveqp = state.HydroInfo.Curves?.Find(x => x.Code == state.Vmo.CurveQP);
|
if (curveqp != null)
|
{
|
var qp_pts = curveqp.CurveData?.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList();
|
if (qp_pts != null && qp_pts.Count > 3)
|
{
|
vm.CurveQP = qp_pts;
|
var qp_current_pts = qp_pts.GetQPPointListByN(state.Vmo.RatedHz, state.CurrentHz);
|
vm.CurrentCurveQP = qp_current_pts;
|
}
|
}
|
|
var curveqe = state.HydroInfo.Curves?.Find(x => x.Code == state.Vmo.CurveQE);
|
if (curveqe != null)
|
{
|
var qe_pts = curveqe.CurveData?.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList();
|
if (qe_pts != null && qe_pts.Count > 3)
|
{
|
vm.CurveQE = qe_pts;
|
var qe_current_pts = qe_pts.GetQEPointListByN(state.Vmo.RatedHz, state.CurrentHz);
|
vm.CurrentCurveQE = qe_current_pts;
|
}
|
}
|
|
return vm;
|
}
|
|
/// <summary>
|
/// 保存
|
/// </summary>
|
public void Save()
|
{
|
if (this.hydroPumpListStateEditCtrl1.HasChanged)
|
{
|
var result = XtraMessageBox.Show("是否使用现有水泵状态更新模型?", "询问", MessageBoxButtons.YesNo) == DialogResult.Yes;
|
if (result)
|
{
|
var allWorkingList = this.hydroPumpListStateEditCtrl1.GetWorkingList();
|
this.SaveEvent?.Invoke(allWorkingList);
|
}
|
}
|
}
|
|
}
|
}
|