using DevExpress.XtraEditors; using System; using System.Collections.Generic; using System.Windows.Forms; namespace IStation.WinFrmUI.Basic { public partial class PumpCurveMgrPage : DocumentPage { public PumpCurveMgrPage() { InitializeComponent(); this.PageTitle.Caption = "泵曲线"; this.gridViewCurvePoints.SetNormalView(); this.pumpCurveMappingListCtrl1.FocusedChangedEvent += PumpCurveMappingListCtrl1_FocusedChangedEvent; } private Model.PumpCurveMapping _pumpCurveMapping = null; private Model.PumpCurve _pumpCurve = null; private List _allPumpCurveList = null; // private List _allCurveRatedPoints = null; /// /// 初始化数据 /// public override void InitialDataSource() { _pumpCurve = null; _allPumpCurveList = new BLL.PumpCurve().GetAll(); this.pumpCurveMappingListCtrl1.SetBindingData(); } public override void RefreshDataSource() { _pumpCurve = null; _allPumpCurveList = new BLL.PumpCurve().GetAll(); this.pumpCurveMappingListCtrl1.SetBindingData(); } //曲线变换列表 private void PumpCurveMappingListCtrl1_FocusedChangedEvent(Model.PumpCurveMapping obj) { _pumpCurveMapping = obj; _pumpCurve = null; this.chartFeatCurveViewCtrl1.ClearData(); if (_allPumpCurveList != null && _pumpCurveMapping != null) { _pumpCurve = _allPumpCurveList?.Find(x => x.ID == obj?.CurveID); } if (_pumpCurve == null) return; SetBindingData(_pumpCurve); } //绑定数据 private void SetBindingData(Model.PumpCurve pumpCurve) { if (pumpCurve == null || pumpCurve.CurveInfo == null) return; if (pumpCurve.CurveInfo.CurveQH == null) return; List qhPoints = null, qePoints = null, qpPoints = null; var curveInfo = pumpCurve.CurveInfo; if (curveInfo.CurveQH.DefinePoints != null) qhPoints = curveInfo.CurveQH.DefinePoints; else qhPoints = curveInfo.CurveQH.GetFitPoints(12); if (curveInfo.CurveQE != null) if (curveInfo.CurveQE.DefinePoints != null) qePoints = curveInfo.CurveQE.DefinePoints; else qePoints = curveInfo.CurveQE?.GetFitPoints(12); if (curveInfo.CurveQP != null) if (curveInfo.CurveQP?.DefinePoints != null) qpPoints = curveInfo.CurveQP.DefinePoints; else qpPoints = curveInfo.CurveQP?.GetFitPoints(12); #region 曲线点 /*_allCurveRatedPoints = new List(); for (int i = 0; i < qhPoints.Count; i++) { var curveRatedPoint = new ViewModel.CurveRatedPoint(); curveRatedPoint.Q = qhPoints[i].X; curveRatedPoint.H = qhPoints[i].Y; if (qePoints != null) curveRatedPoint.E = qePoints[i].Y; if (qpPoints != null) curveRatedPoint.P = qpPoints[i].Y; curveRatedPoint.MathRound(); _allCurveRatedPoints.Add(curveRatedPoint); } this.curveRatedPointBindingSource.DataSource = _allCurveRatedPoints;*/ #endregion #region 曲线 this.chartFeatCurveViewCtrl1.SetCurveInfo(curveInfo.CurveQH, curveInfo.CurveQE, curveInfo.CurveQP); this.chartFeatCurveViewCtrl1.UpdateChart(true); this.chartFeatCurveViewCtrl1.SetWorkPointQ_Auto(); #endregion #region 曲线编辑 Model.eCurveFitType qhFitType = curveInfo.CurveQH.FitType, qeFitType = Model.eCurveFitType.CubicCurve, qpFitType = Model.eCurveFitType.CubicCurve; if (curveInfo.CurveQE != null) qeFitType = curveInfo.CurveQE.FitType; if (curveInfo.CurveQP != null) qpFitType = curveInfo.CurveQP.FitType; this.featCurveByEditCtrl1.InitialBindingData(qhPoints, qePoints, qpPoints, qhFitType, qeFitType, qpFitType); this.featCurveByEditCtrl1.Enabled = true; #endregion } //修改泵曲线信息 private void barBtnEditPumpCurveInfo_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_pumpCurve == null) return; WaitFrmHelper.ShowWaitForm(); var dlg = new EditPumpCurveInfoDlg(); dlg.Shown += delegate { WaitFrmHelper.HideWaitForm(); }; dlg.SetBindingData(_pumpCurve); dlg.ReloadDataEvent += (rhs) => { rhs.UpdateTime = DateTime.Now; var result = new BLL.PumpCurve().Update( rhs); if (result) { _pumpCurve.Reset(rhs); SetBindingData(_pumpCurve); } return result; }; dlg.ShowDialog(); } //修改泵曲线名称 private void barBtnEditPumpCurveOtherName_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_pumpCurveMapping == null) return; WaitFrmHelper.ShowWaitForm(); var dlg = new EditOtherNameDlg(); dlg.Shown += delegate { WaitFrmHelper.HideWaitForm(); }; dlg.SetBindingData(_pumpCurveMapping.OtherName); dlg.ReloadDataEvent += (rhs) => { var model = new Model.PumpCurveMapping(_pumpCurveMapping); model.OtherName = rhs; var result = new BLL.PumpCurveMapping().Update( model); if (result) { _pumpCurveMapping.Reset(model); this.pumpCurveMappingListCtrl1.UpdateOtherName(rhs); } return result; }; dlg.ShowDialog(); } //设置工作曲线 private void barBtnSetWorkPumpCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_pumpCurveMapping == null) return; var result = new BLL.PumpCurveMapping().UpdateWokrCurve( _pumpCurveMapping.ID); if (result) { _pumpCurveMapping.IsWorking = true; this.pumpCurveMappingListCtrl1.UpdateWorkingCurve(); } } //刷新 private void barBtnReload_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (this.tabPane1.SelectedPage == this.tabNavigationPageCurveEdit) { XtraMessageBox.Show("曲线编辑页面无法刷新!"); return; } InitialDataSource(); } //曲线编辑 设置图表坐标 private void barBtnSetCurveEditCoord_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_pumpCurve == null) return; this.featCurveByEditCtrl1.SetCoordinateByDialog(); } //曲线编辑 取消修改 private void barBtnCancelCurveEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (XtraMessageBox.Show("是否取消修改?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) != DialogResult.Yes) return; SetBindingData(_pumpCurve); } //曲线编辑 保存 private void barBtnSaveCurveEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_pumpCurve == null) return; if (XtraMessageBox.Show("是否保存曲线?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) != DialogResult.Yes) return; this.featCurveByEditCtrl1.GetPointListInfo(out List qhCurvePoints, out List qeCurvePoints, out List qpCurvePoints); var curveInfo = _pumpCurve.CurveInfo; if (curveInfo.CurveQH != null && qhCurvePoints != null) { _pumpCurve.CurveInfo.CurveQH = new Model.CurveExpress(qhCurvePoints, curveInfo.CurveQH.FitType, true); } if (curveInfo.CurveQE != null && qeCurvePoints != null) { _pumpCurve.CurveInfo.CurveQE = new Model.CurveExpress(qeCurvePoints, curveInfo.CurveQE.FitType, true); } if (curveInfo.CurveQP != null && qpCurvePoints != null) { _pumpCurve.CurveInfo.CurveQP = new Model.CurveExpress(qpCurvePoints, curveInfo.CurveQP.FitType, true); } var result = new BLL.PumpCurve().Update( _pumpCurve); if (!result) { XtraMessageBox.Show("保存失败!"); return; } XtraMessageBox.Show("保存成功!"); } //选择页变换 private void tabPane1_SelectedPageChanged(object sender, DevExpress.XtraBars.Navigation.SelectedPageChangedEventArgs e) { if (this.tabPane1.SelectedPage == this.tabNavigationPageCurveEdit) { this.ribbonPageGroupCurveEdit.Visible = true; } else { this.ribbonPageGroupCurveEdit.Visible = false; } } } }