using DevExpress.XtraEditors;
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace IStation.WinFrmUI.Curve
{
///
/// 通过Excel导入曲线
///
public partial class ImportCurveByExcelTemplateDlg : XtraForm
{
public ImportCurveByExcelTemplateDlg()
{
InitializeComponent();
}
#region 页面类
public class CurrentViewModel : Model.GroupPoint
{
public CurrentViewModel() { }
public CurrentViewModel(Model.GroupPoint rhs) : base(rhs)
{
}
private double Round_Small(double value, int num, double small = 2.0)
{
if (value < small)
value = Math.Round(value, 3);
else
value = Math.Round(value, num);
return value;
}
}
#endregion
private List _allBindingList;
public Action ReloadDataEvent;
///
/// 绑定数据
///
public void SetBindingData(string curveCode = "", double ratedSeed = 0)
{
this.CurveCodeTextEdit.EditValue = curveCode;
this.RatedSeedTextEdit.EditValue = ratedSeed;
this.SourceFromImageComboBoxEdit.Properties.AddEnum(typeof(Model.eCurveSourceFrom), false);
this.SourceFromImageComboBoxEdit.SelectedIndex = 0;
this.QHCurveFitTypeImageComboBoxEdit.Properties.AddEnum(typeof(Model.eCurveFitType), false);
this.QHCurveFitTypeImageComboBoxEdit.SelectedIndex = 0;
this.QECurveFitTypeImageComboBoxEdit.Properties.AddEnum(typeof(Model.eCurveFitType), false);
this.QECurveFitTypeImageComboBoxEdit.SelectedIndex = 0;
this.QPCurveFitTypeImageComboBoxEdit.Properties.AddEnum(typeof(Model.eCurveFitType), false);
this.QPCurveFitTypeImageComboBoxEdit.SelectedIndex = 0;
}
//选择文件
private void ExcelBtnEdit_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
{
var dlg = new System.Windows.Forms.OpenFileDialog();
dlg.Filter = "EXCEL 文件(*.xls)|*.xls";
dlg.CheckFileExists = true;
if (dlg.ShowDialog() != DialogResult.OK)
return;
this.ExcelBtnEdit.Text = dlg.FileName;
var list = CurveExpressFileHelper.ImportByExcel(dlg.FileName, out string msg);
if (list == null)
{
XtraMessageBox.Show(msg);
return;
}
_allBindingList = new List();
list.ForEach(x => _allBindingList.Add(new CurrentViewModel(x)));
this.bindingSource1.DataSource = _allBindingList;
}
//验证
private bool Valid()
{
this.dxErrorProvider1.ClearErrors();
if (string.IsNullOrEmpty(this.CurveCodeTextEdit.Text.Trim()))
{
this.dxErrorProvider1.SetError(this.CurveCodeTextEdit, "必填项");
return false;
}
if (string.IsNullOrEmpty(this.SourceFromImageComboBoxEdit.Text.Trim()))
{
this.dxErrorProvider1.SetError(this.SourceFromImageComboBoxEdit, "必选项");
return false;
}
if (string.IsNullOrEmpty(this.QHCurveFitTypeImageComboBoxEdit.Text.Trim()))
{
this.dxErrorProvider1.SetError(this.QHCurveFitTypeImageComboBoxEdit, "必选项");
return false;
}
if (string.IsNullOrEmpty(this.RatedSeedTextEdit.Text.Trim()))
{
this.dxErrorProvider1.SetError(this.RatedSeedTextEdit, "必填项");
return false;
}
if (_allBindingList == null || _allBindingList.Count < 1)
{
XtraMessageBox.Show("无数据!");
return false;
}
return true;
}
//确定
private void btnOK_Click(object sender, EventArgs e)
{
if (!Valid())
return;
var curveCode = this.CurveCodeTextEdit.Text.Trim();
var sourceFrom = (Model.eCurveSourceFrom)this.SourceFromImageComboBoxEdit.EditValue;
var qhFitType = (Model.eCurveFitType)this.QHCurveFitTypeImageComboBoxEdit.EditValue;
var qeFitType = (Model.eCurveFitType)this.QECurveFitTypeImageComboBoxEdit.EditValue;
var qpFitType = (Model.eCurveFitType)this.QPCurveFitTypeImageComboBoxEdit.EditValue;
var points_qh = new List();
var points_qe = new List();
var points_qp = new List();
for (int i = 0; i < _allBindingList.Count; i++)
{
var model = _allBindingList[i];
if (model.H > 0)
points_qh.Add(new Model.CurvePoint() { X = model.Q, Y = model.H });
if (model.E >= 0)
points_qe.Add(new Model.CurvePoint() { X = model.Q, Y = model.E });
if (model.P > 0)
points_qp.Add(new Model.CurvePoint() { X = model.Q, Y = model.P });
}
var curve = new Model.FeatCurveExpressGroup();
curve.CurveQH = new Model.CurveExpress(points_qh, qhFitType);
curve.CurveQE = new Model.CurveExpress(points_qe, qeFitType);
curve.CurveQP = new Model.CurveExpress(points_qp, qpFitType);
this.ReloadDataEvent?.Invoke(curveCode, sourceFrom, curve);
this.DialogResult = DialogResult.OK;
this.Close();
}
}
}