using DevExpress.XtraEditors; using IStation.Model; using IStation.WinFrmUI.Curve; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Windows.Forms; namespace IStation.WinFrmUI.Basic { public partial class PumpCurveMgrPage : DocumentPage { public PumpCurveMgrPage() { InitializeComponent(); PageTitle.Caption = "单泵曲线"; pumpCurveTreeListCtrl1.FocusedChangedEvent += PumpCurveTreeListCtrl1_FocusedChangedEvent; ; curveExpressChart1.OnCurveCoordinateParasChanged += CurveExpressChart1_OnCurveCoordinateParasChanged; } private string _belongType; private Model.PumpCurveExMapping _pumpCurveExMapping = null; private Model.PumpSpeedCurve _pumpSpeedCurve = null; private BLL.PumpCurve _bll = new BLL.PumpCurve(); /// /// 初始化数据 /// public override void InitialDataSource() { _pumpCurveExMapping = null; pumpCurveTreeListCtrl1.SetBindingData(); } //曲线切换 private void PumpCurveTreeListCtrl1_FocusedChangedEvent(string objectType, object obj) { _belongType = objectType; _pumpCurveExMapping = null; _pumpSpeedCurve = null; curveExpressChart1.InitialChartData(); var isMapping = objectType == IStation.ObjectType.PumpCurveMapping; if (isMapping) { var mapping = obj as Model.PumpCurveMapping; var pumpCurve = _bll.GetByID(mapping.CurveID); _pumpCurveExMapping = new Model.PumpCurveExMapping(pumpCurve, mapping); SetBindingData(_pumpCurveExMapping.CurveInfo, _pumpCurveExMapping.CoordParas); } else { _pumpSpeedCurve = obj as Model.PumpSpeedCurve; SetBindingData(_pumpSpeedCurve.CurveInfo, _pumpSpeedCurve.CoordParas); } SetRibbonButton(isMapping); } private void SetRibbonButton(bool use) { barBtnEditInfo.Enabled = use; barBtnEditOtherName.Enabled = use; barBtnSetWorkCurve.Enabled = use; barBtnRefresh.Enabled = use; barBtnDeleteCurve.Enabled = use; barBtnEditCurve.Enabled = use; barBtnCopyAndExpandCurve.Enabled = use; barBtnExportYCM.Enabled = use; // this.barSubImport.Enabled = use; // this.barSubExport.Enabled = use; } //绑定数据 private void SetBindingData(Model.FeatCurveExpressGroup curveInfo, Model.CurveCoordinateParas coordinateParas) { if (curveInfo == null || curveInfo.CurveQH == null) return; curveExpressChart1.SetBindingData(curveInfo.CurveQH, curveInfo.CurveQE, curveInfo.CurveQP, coordinateParas); } //坐标变换修改 private void CurveExpressChart1_OnCurveCoordinateParasChanged(Model.CurveCoordinateParas obj) { _pumpCurveExMapping.CoordParas = obj; if (!new BLL.PumpCurve().Update(_pumpCurveExMapping)) { XtraMessageBox.Show("修改失败!"); return; } XtraMessageBox.Show("修改成功!"); } //修改泵曲线信息 private void barBtnEditInfo_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_pumpCurveExMapping == null) return; WaitFrmHelper.ShowWaitForm(); var dlg = new EditPumpCurveInfoDlg(); dlg.Shown += delegate { WaitFrmHelper.HideWaitForm(); }; dlg.SetBindingData(_pumpCurveExMapping); dlg.ReloadDataEvent += (rhs) => { rhs.UpdateTime = DateTime.Now; var result = new BLL.PumpCurve().Update(rhs); if (result) { _pumpCurveExMapping.Reset(rhs); SetBindingData(_pumpCurveExMapping.CurveInfo, _pumpCurveExMapping.CoordParas); } return result; }; dlg.ShowDialog(); } //修改泵曲线名称 private void barBtnEditOtherName_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_pumpCurveExMapping == null) return; WaitFrmHelper.ShowWaitForm(); var dlg = new EditOtherNameDlg(); dlg.Shown += delegate { WaitFrmHelper.HideWaitForm(); }; dlg.SetBindingData(_pumpCurveExMapping.OtherName); dlg.ReloadDataEvent += (rhs) => { var mapping = new BLL.PumpCurveMapping().GetByID(_pumpCurveExMapping.MappingID); mapping.OtherName = rhs; var result = new BLL.PumpCurveMapping().Update(mapping); if (result) { _pumpCurveExMapping.Reset(mapping); pumpCurveTreeListCtrl1.UpdateOtherName(rhs); } return result; }; dlg.ShowDialog(); } //设置工作曲线 private void barBtnSetWorkCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_pumpCurveExMapping == null) return; var result = new BLL.PumpCurveMapping().UpdateWorkCurve(_pumpCurveExMapping.MappingID); if (result) { _pumpCurveExMapping.IsWorking = true; pumpCurveTreeListCtrl1.UpdateWorkingCurve(); } } //编辑曲线 private void barBtnEditCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_pumpCurveExMapping != null) { var curveInfo = _pumpCurveExMapping.CurveInfo; if (curveInfo == null) return; if (curveInfo.CurveQH == null) return; var dlg = new EditCurveExpressDlg(); dlg.SetBindingData(curveInfo); dlg.ReloadDataEvent += (featCurveExpressGroup) => { _pumpCurveExMapping.CurveInfo = featCurveExpressGroup; var bol = new BLL.PumpCurve().Update(_pumpCurveExMapping); if (bol) { curveExpressChart1.SetBindingData(featCurveExpressGroup, _pumpCurveExMapping.CoordParas); } return bol; }; dlg.ShowDialog(); } else if (_pumpSpeedCurve != null) { var curveInfo = _pumpSpeedCurve.CurveInfo; if (curveInfo == null) return; if (curveInfo.CurveQH == null) return; var dlg = new EditCurveExpressDlg(); dlg.SetBindingData(curveInfo); dlg.ReloadDataEvent += (featCurveExpressGroup) => { _pumpSpeedCurve.CurveInfo = featCurveExpressGroup; var bol = new BLL.PumpSpeedCurve().Update(_pumpSpeedCurve); if (bol) { curveExpressChart1.SetBindingData(featCurveExpressGroup, _pumpSpeedCurve.CoordParas); } return bol; }; dlg.ShowDialog(); } } //复制并延长曲线 private void barBtnCopyAndExpandCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_pumpCurveExMapping == null) return; var dlg = new CopyAndExpandCurveDlg(); dlg.SetBindingData(_pumpCurveExMapping); dlg.ReloadDataEvent += (otherName, curveExpressGroup) => { var pumpCurve = new Model.PumpCurve(_pumpCurveExMapping); pumpCurve.CurveInfo = curveExpressGroup; pumpCurve.ID = 0; var pumpCurveId = new BLL.PumpCurve().Insert(pumpCurve); if (pumpCurveId < 1) return false; pumpCurve.ID = pumpCurveId; var pumpCurveMapping = new Model.PumpCurveMapping(); pumpCurveMapping.PumpID = _pumpCurveExMapping.PumpID; pumpCurveMapping.CurveID = pumpCurveId; pumpCurveMapping.OtherName = otherName; pumpCurveMapping.IsWorking = false; var pumpCurveMappingId = new BLL.PumpCurveMapping().Insert(pumpCurveMapping); if (pumpCurveMappingId < 1) return false; pumpCurveMapping.ID = pumpCurveMappingId; return true; }; dlg.ShowDialog(); } //删除曲线 private void barBtnDeleteCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_pumpCurveExMapping == null) return; if (XtraMessageBox.Show("是否删除曲线?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) != DialogResult.Yes) return; var result = new BLL.PumpCurve().DeleteByID(_pumpCurveExMapping.ID, out string msg); if (!result) { XtraMessageBox.Show("删除失败!"); return; } pumpCurveTreeListCtrl1.DeletePumpMapping(_pumpCurveExMapping.ID, _pumpCurveExMapping.MappingID); } //刷新 private void barBtnReload_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { InitialDataSource(); } //导出 inp private void barBtnExportCrv_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { string fileName; Model.FeatCurveExpressGroup featCurveExpressGroup = null; //if (_belongType == IStation.ObjectType.PumpCurveExMapping) //{ fileName = _pumpCurveExMapping.OtherName; featCurveExpressGroup = _pumpCurveExMapping.CurveInfo; //} //else //{ // fileName = _pumpSpeedCurve.HZ.ToString(); // featCurveExpressGroup = _pumpSpeedCurve.CurveInfo; //} ExportCurveHelper.INPFile(fileName, featCurveExpressGroup); } //导出ycm文件 private void barBtnExportYCM_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_pumpCurveExMapping == null) return; if (_pumpCurveExMapping.CurveInfo.CurveQH == null) return; var json = PumpCurveDtoHelper.ExportJson(_pumpCurveExMapping); if (string.IsNullOrEmpty(json)) { XtraMessageBox.Show("无法解析!"); return; } var dlg = new SaveFileDialog(); dlg.Title = "导出 .ycm 文件"; dlg.FileName = $"{_pumpCurveExMapping.CurveCode}.ycm"; dlg.Filter = "ycm (*.ycm)|*.ycm"; if (dlg.ShowDialog() != DialogResult.OK) return; var filePath = dlg.FileName; File.WriteAllText(filePath, json); XtraMessageBox.Show("导出成功!"); } private void barBtnTemp_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var station = new BLL.Station().GetAll().Last(); var pumps = new BLL.Equipment().GetPumpListByBelongTypeAndBelongID(IStation.ObjectType.Station, station.ID); foreach (var pump in pumps) { var list = new List(); var curve = new BLL.PumpCurve().GetExMappingByPumpID(pump.ID).First(); for (int i = 1; i <= 4; i++) { var vm = new Temp2ViewModel(pump.RatedParas); vm.ID = i; vm.Name = i + "#"; vm.Code = pump.Name; vm.CurveQH = curve.CurveInfo.CurveQH; vm.CurveQE = curve.CurveInfo.CurveQE; vm.CurveQP = curve.CurveInfo.CurveQP; list.Add(vm); } var json = JsonHelper.Object2Json(list); var path = Path.Combine(Settings.File.RootDirectory, "陈行"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } File.WriteAllText(path + "\\" + pump.Name + ".json", json); } XtraMessageBox.Show("over"); } public class Temp2ViewModel { public Temp2ViewModel(Model.Pump rhs) { Qr = rhs.Qr; Hr = rhs.Hr; Nr = rhs.Nr; Pr = rhs.Pr; Er = rhs.Er; Ic = rhs.Ic; Oc = rhs.Oc; IOd = rhs.IOd; IsBp = rhs.IsBp; IsSxp = rhs.IsSxp; } public long ID { get; set; } public string Code { get; set; } public string Name { get; set; } public double Qr { get; set; } public double Hr { get; set; } public double Nr { get; set; } public double Pr { get; set; } public double Er { get; set; } public double? Ic { get; set; } public double? Oc { get; set; } public double? IOd { get; set; } public double? Ie { get; set; } public double? Oe { get; set; } public bool IsBp { get; set; } public bool IsSxp { get; set; } public CurveExpress CurveQH { get; set; } public CurveExpress CurveQE { get; set; } public CurveExpress CurveQP { get; set; } } //陈行输水 private void barBtnExportChSS_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var path = Path.Combine(Settings.File.RootDirectory, "陈行"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } var stations = new BLL.Station().GetAll(); stations = stations?.Where(x => x.Name.Contains("输")).ToList(); if (stations == null || !stations.Any()) return; var ch1 = stations.First(); var ch2 = stations.Last(); var model = new Model.StationInfo(); model.Station1 = new List(); model.Station2 = new List(); var pumps1 = new BLL.Equipment().GetPumpListByBelongTypeAndBelongID(IStation.ObjectType.Station, ch1.ID); foreach (var pump in pumps1) { var curve = new BLL.PumpCurve().GetDefaultWorkingByPumpID(pump.ID); if (curve == null) continue; var rhs = new PumpInfo(); rhs.Flag = pump.SortCode; rhs.Code = pump.NO; rhs.Name = pump.Name; rhs.Qr = pump.RatedParas.Qr; rhs.Hr = pump.RatedParas.Hr; rhs.Nr = pump.RatedParas.Nr; rhs.Pr = pump.RatedParas.Pr; rhs.Er = pump.RatedParas.Er; rhs.Ic = pump.RatedParas.Ic; rhs.Oc = pump.RatedParas.Oc; rhs.IOd = pump.RatedParas.IOd; rhs.IsBp = pump.RatedParas.IsBp; rhs.CurveQH = curve.CurveInfo.CurveQH; rhs.CurveQE = curve.CurveInfo.CurveQE; rhs.CurveQP = curve.CurveInfo.CurveQP; model.Station1.Add(rhs); } var pumps2 = new BLL.Equipment().GetPumpListByBelongTypeAndBelongID(IStation.ObjectType.Station, ch2.ID); foreach (var pump in pumps2) { var curve = new BLL.PumpCurve().GetDefaultWorkingByPumpID(pump.ID); if (curve == null) continue; var rhs = new PumpInfo(); rhs.Flag = pump.SortCode; rhs.Code = pump.NO; rhs.Name = pump.Name; rhs.Qr = pump.RatedParas.Qr; rhs.Hr = pump.RatedParas.Hr; rhs.Nr = pump.RatedParas.Nr; rhs.Pr = pump.RatedParas.Pr; rhs.Er = pump.RatedParas.Er; rhs.Ic = pump.RatedParas.Ic; rhs.Oc = pump.RatedParas.Oc; rhs.IOd = pump.RatedParas.IOd; rhs.IsBp = pump.RatedParas.IsBp; rhs.CurveQH = curve.CurveInfo.CurveQH; rhs.CurveQE = curve.CurveInfo.CurveQE; rhs.CurveQP = curve.CurveInfo.CurveQP; model.Station2.Add(rhs); } var json = JsonHelper.Object2FormatJson(model); var jsonPath = path + "\\" + "Station" + ".json"; File.WriteAllText(jsonPath, json); XtraMessageBox.Show("over"); } private void barBtnDataValid_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { } } }