using DevExpress.CodeParser;
namespace HStation.WinFrmUI.PhartRelation
{
public partial class XhsPumpMainPhartPanel : DocumentPage
{
public XhsPumpMainPhartPanel()
{
InitializeComponent();
this.PageTitle.Caption = "泵型号曲线";
this.xhsPumpMainPhartListCtrl1.FocusedChangedEvent += XhsPumpMainPhartListCtrl1_FocusedChangedEvent;
}
private long _pump_main_id;
private Vmo.XhsPumpMainPhartMappingExtensions _xhs_phart_diagram_ex_std_dto = null;
private readonly BLL.XhsPumpMainPhartMappingExtensions _bll_ex = new();
///
/// 初始化数据
///
public void InitialDataSource(long pump_main_id)
{
_pump_main_id = pump_main_id;
if (_pump_main_id < 1)
{
this.xhsPumpMainPhartListCtrl1.Clear();
return;
}
this.xhsPumpMainPhartListCtrl1.SetBindingData(pump_main_id);
}
//选择曲线变换事件
private void XhsPumpMainPhartListCtrl1_FocusedChangedEvent(Vmo.XhsPumpMainPhartMappingExtensions obj)
{
_xhs_phart_diagram_ex_std_dto = obj;
InitChart(_xhs_phart_diagram_ex_std_dto);
}
private Tuple Get(Vmo.XhsPumpMainPhartMappingExtensions dto)
{
if (dto == null)
{
return default;
}
var diagram = dto.Diagram;
if (diagram == null)
{
return default;
}
var graph_list = diagram.GraphList;
if (graph_list == null || !graph_list.Any())
{
return default;
}
var graph_qh = graph_list.Find(x => x.GraphType == HStation.PhartRelation.eGraphType.PumpQH);
var graph_qe = graph_list.Find(x => x.GraphType == HStation.PhartRelation.eGraphType.PumpQE);
var graph_qp = graph_list.Find(x => x.GraphType == HStation.PhartRelation.eGraphType.PumpQP);
if (graph_qh == null)
{
return default;
}
List points_qh = null, points_qe = null, points_qp = null;
points_qh = PhartPerformCurveHelper.GetFeatPointList(graph_qh.GraphType, graph_qh.GeometryInfo, 12, null);
if (graph_qe != null)
points_qe = PhartPerformCurveHelper.GetFeatPointList(graph_qe.GraphType, graph_qe.GeometryInfo, 12, null);
if (graph_qp != null)
points_qp = PhartPerformCurveHelper.GetFeatPointList(graph_qp.GraphType, graph_qp.GeometryInfo, 12, null);
var cubic_spline_qh = new Yw.Geometry.CubicSpline2d(points_qh);
var cubic_spline_qe = new Yw.Geometry.CubicSpline2d(points_qe);
var cubic_spline_qp = new Yw.Geometry.CubicSpline2d(points_qp);
return new Tuple(cubic_spline_qh, cubic_spline_qe, cubic_spline_qp);
}
#region 图表
//初始化图表数据
private void InitChart(Vmo.XhsPumpMainPhartMappingExtensions dto)
{
if (dto == null)
{
return;
}
var diagram = dto.Diagram;
if (diagram == null)
{
return;
}
var tuple = Get(dto);
if (tuple == null)
{
return;
}
var cubic_spline_qh = tuple.Item1;
var cubic_spline_qe = tuple.Item2;
var cubic_spline_qp = tuple.Item3;
var disp_paras = diagram.DispParas;
var is_calc_disp_paras = string.IsNullOrWhiteSpace(disp_paras);
this.xtrPerform2dChart1.SetBindingData(cubic_spline_qh, cubic_spline_qe, cubic_spline_qp, disp_paras, is_calc_disp_paras);
var temp_q = cubic_spline_qh.MaxX / 2;
this.xtrPerform2dChart1.CalcWorkPointByQ(temp_q);
this.xtrPerform2dChart1.CalcDesignPointByQ(temp_q);
}
//清空图表数据
private void ClearChart()
{
this.xtrPerform2dChart1.InitialChartData();
}
#endregion 图表
#region 导入
//Excel 导入
private void barBtnImportByExcel_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
var dlg = new Yw.WinFrmUI.Phart.ImportPumpPerform2dByExcelDlg();
dlg.ReloadDataEvent += async (other_name, qh, qe, qp) =>
{
var bol = await Import(other_name, qh, qe, qp);
return bol;
};
dlg.ShowDialog();
}
//图片 导入
private void barBtnImportByPicture_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
XtraMessageBox.Show("待补充!");
}
//单点 导入
private void barBtnImportByOnePoint_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
var dlg = new Yw.WinFrmUI.Phart.ImportPumpPerform2dByOnePointDlg();
dlg.ReloadDataEvent += async (other_name, qh, qe, qp) =>
{
var bol = await Import(other_name, qh, qe, qp);
return bol;
};
dlg.ShowDialog();
}
// 导入
private async Task Import(string other_name, Yw.Pump.CurveQH qh, Yw.Pump.CurveQE qe, Yw.Pump.CurveQP qp)
{
if (_pump_main_id < 1)
{
XtraMessageBox.Show("PumpMain is null!");
return false;
}
var input = new Vmo.XhsPumpMainPhartMappingExtensions();
input.PumpMainID = _pump_main_id;
input.Importance = 0;
input.OtherName = other_name;
input.Diagram = new Vmo.PhartDiagramExGraphList()
{
DiagramType = HStation.PhartRelation.eDiagramType.Feat,
Name = other_name,
GraphList = new List()
{
new ()
{
Name = other_name+"-QH",
GeometryStyle= HStation.PhartRelation.eGeometryStyle.FeatCurve,
GraphType= HStation.PhartRelation.eGraphType.PumpQH,
GeometryInfo=qh.ToDbString()
},
new ()
{
Name = other_name+"-QE",
GeometryStyle= HStation.PhartRelation.eGeometryStyle.FeatCurve,
GraphType= HStation.PhartRelation.eGraphType.PumpQE,
GeometryInfo=qe.ToDbString()
},
new ()
{
Name = other_name+"-QP",
GeometryStyle= HStation.PhartRelation.eGeometryStyle.FeatCurve,
GraphType= HStation.PhartRelation.eGraphType.PumpQP,
GeometryInfo=qp.ToDbString()
},
}
};
var mapping_id = await _bll_ex.Insert(input);
if (mapping_id < 1)
{
return false;
}
var xhs_phart_diagram_ex_std_dto = await _bll_ex.GetByID(mapping_id);
this.xhsPumpMainPhartListCtrl1.Add(xhs_phart_diagram_ex_std_dto);
return true;
}
#endregion 导入
#region 操作
//编辑
private void barBtnEditChart_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (_xhs_phart_diagram_ex_std_dto == null)
{
return;
}
var diagram = _xhs_phart_diagram_ex_std_dto.Diagram;
if (diagram == null)
{
return;
}
var graph_list = diagram.GraphList;
if (graph_list == null || !graph_list.Any())
{
return;
}
var graph_qh = graph_list.Find(x => x.GraphType == HStation.PhartRelation.eGraphType.PumpQH);
var graph_qe = graph_list.Find(x => x.GraphType == HStation.PhartRelation.eGraphType.PumpQE);
var graph_qp = graph_list.Find(x => x.GraphType == HStation.PhartRelation.eGraphType.PumpQP);
if (graph_qh == null)
{
return;
}
Yw.Pump.CurveQH qh = null;
Yw.Pump.CurveQE qe = null;
Yw.Pump.CurveQP qp = null;
List points_qh = null, points_qe = null, points_qp = null;
points_qh = PhartPerformCurveHelper.GetFeatPointList(graph_qh.GraphType, graph_qh.GeometryInfo, 12, null);
qh = new Yw.Pump.CurveQH(Yw.Pump.eFeatType.Cubic, points_qh);
if (graph_qe != null)
{
points_qe = PhartPerformCurveHelper.GetFeatPointList(graph_qe.GraphType, graph_qe.GeometryInfo, 12, null);
qe = new Yw.Pump.CurveQE(Yw.Pump.eFeatType.Cubic, points_qe);
}
if (graph_qp != null)
{
points_qp = PhartPerformCurveHelper.GetFeatPointList(graph_qp.GraphType, graph_qp.GeometryInfo, 12, null);
qp = new Yw.Pump.CurveQP(Yw.Pump.eFeatType.Cubic, points_qp);
}
var dlg = new Yw.WinFrmUI.Phart.PumpPerform2dEditDlg();
dlg.SetBindingData(qh, qe, qp);
dlg.ReloadDataEvent += async (new_qh, new_qe, new_qp) =>
{
var new_points_qh = new_qh.GetPointList();
var new_points_qe = new_qe.GetPointList();
var new_points_qp = new_qp.GetPointList();
graph_qh.GeometryInfo = new Yw.Pump.CurveQH(Yw.Pump.eFeatType.Cubic, new_points_qh).ToDbString();
graph_qe.GeometryInfo = new Yw.Pump.CurveQE(Yw.Pump.eFeatType.Cubic, new_points_qe).ToDbString();
graph_qp.GeometryInfo = new Yw.Pump.CurveQP(Yw.Pump.eFeatType.Cubic, new_points_qp).ToDbString();
_xhs_phart_diagram_ex_std_dto.Diagram.GraphList = new List()
{
graph_qh,
graph_qe,
graph_qp,
};
var bol = await _bll_ex.Update(_xhs_phart_diagram_ex_std_dto);
if (bol)
{
InitChart(_xhs_phart_diagram_ex_std_dto);
}
return bol;
};
dlg.ShowDialog();
}
//别名
private void barBtnOtherName_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (_xhs_phart_diagram_ex_std_dto == null)
{
return;
}
var dlg = new SetOtherNameDlg();
dlg.SetBindingData(_xhs_phart_diagram_ex_std_dto.OtherName);
dlg.VerifyValueChanged += async (value) =>
{
_xhs_phart_diagram_ex_std_dto.OtherName = value;
var bol = await _bll_ex.Update(_xhs_phart_diagram_ex_std_dto);
if (!bol)
{
XtraMessageBox.Show("更新失败!");
return false;
}
this.xhsPumpMainPhartListCtrl1.UpdateOtherName(_xhs_phart_diagram_ex_std_dto.ID, value);
XtraMessageBox.Show("更新成功!");
return true;
};
dlg.ShowDialog();
}
//重要度
private void barBtnUpdateimportance_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
var dlg = new SetImportanceDlg();
dlg.SetBindingData(_xhs_phart_diagram_ex_std_dto.Importance);
dlg.VerifyValueChanged += async (value) =>
{
_xhs_phart_diagram_ex_std_dto.Importance = value;
var bol = await _bll_ex.Update(_xhs_phart_diagram_ex_std_dto);
if (!bol)
{
XtraMessageBox.Show("更新失败!");
return false;
}
this.xhsPumpMainPhartListCtrl1.UpdateImportance(_xhs_phart_diagram_ex_std_dto.ID, value);
XtraMessageBox.Show("更新成功!");
return true;
};
dlg.ShowDialog();
}
#region 删除
//删除
private async void barBtnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
await Delete();
}
//删除
private async Task Delete()
{
if (_xhs_phart_diagram_ex_std_dto == null)
{
return false;
}
var diagramId = _xhs_phart_diagram_ex_std_dto.Diagram.ID;
var bol = await _bll_ex.DeleteByDiagramID(diagramId);
if (!bol)
{
XtraMessageBox.Show("删除失败!");
return false;
}
XtraMessageBox.Show("删除成功!");
ClearChart();
this.xhsPumpMainPhartListCtrl1.Delete(_xhs_phart_diagram_ex_std_dto.ID);
return true;
}
#endregion 删除
#endregion 操作
//变速
private async void barBtnVariableSpeed_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (_xhs_phart_diagram_ex_std_dto == null)
{
return;
}
var pump_mian = await new BLL.AssetsPumpMain().GetByID(_pump_main_id);
if (pump_mian == null)
{
return;
}
var tuple = Get(_xhs_phart_diagram_ex_std_dto);
if (tuple == null)
{
return;
}
var vm = new Yw.WinFrmUI.Phart.PumpVariableSpeedViewModel();
vm.Id = _xhs_phart_diagram_ex_std_dto.ID.ToString();
vm.Name = $"{pump_mian.RatedSpeed}";
//vm.IsBp = pump_mian.;
vm.RatedSpeed = pump_mian.RatedSpeed;
vm.CurrentSpeed = pump_mian.RatedSpeed;
vm.CurrentHz = 50;
vm.Qh = tuple.Item1;
vm.Qe = tuple.Item2;
vm.Qp = tuple.Item3;
var dlg = new PumpVariableSpeedChartDlg();
dlg.SetBindingData(vm, null);
dlg.ShowDialog();
}
}
}