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)
{
}
}
}