using DevExpress.XtraEditors;
using DevExpress.XtraGrid.Views.Grid;
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
namespace TProduct.WinFrmUI.Data4Factory
{
///
/// 泵
///
public partial class ProductPumpAndPartMgrPage : DocumentPage
{
protected Eventech.Model.UnitQ flow_unit = Eventech.Model.UnitQ.M3H;
public ProductPumpAndPartMgrPage()
{
InitializeComponent();
this.PageTitle.Caption = "泵管理";
this._pageOperateInfo = "泵列表";
this.gridView1.SetNormalView();
this.gridView1.SetGridMianViewColor();
this.gridView1.RegistCustomDrawRowIndicator();
this.gridView1.OptionsView.ShowViewCaption = false;
this.gridView1.OptionsView.ShowDetailButtons = true;
this.gridView2.SetNormalView();
this.gridView2.SetGridSubViewColor();
this.gridView1.OptionsView.EnableAppearanceOddRow = true; // 使能 // 和和上面绑定 同时使用有效
this.gridView1.Appearance.EvenRow.BackColor = Color.LightGray; // 设置偶数行颜色
this.gridView1.OptionsView.EnableAppearanceEvenRow = true;
this.gridView1.Appearance.OddRow.BackColor = Color.White; // 设置偶数行颜色
this.gridView2.OptionsView.EnableAppearanceOddRow = true; // 使能 // 和和上面绑定 同时使用有效
this.gridView2.Appearance.EvenRow.BackColor = Color.White; // 设置偶数行颜色
this.gridView2.OptionsView.EnableAppearanceEvenRow = true;
this.gridView2.Appearance.OddRow.BackColor = Color.White; // 设置偶数行颜色
this.colSdName.Visible = TProduct.UserSetting.Setting.Disp.IsShowSender;
this.colMfName.Visible = TProduct.UserSetting.Setting.Disp.IsShowManufacturer;
flow_unit = TProduct.UserSetting.Setting.PumpTest.UnitFlow;
colQ.Caption = string.Format("流量({0})", Eventech.Common.UnitQHelper.GetEnUnitName(flow_unit));
}
#region 当前视图
public class CurrentViewModel : Model.ProductMainExPump
{
Eventech.Model.UnitQ _flow_unit;
public CurrentViewModel() { }
public CurrentViewModel(Eventech.Model.UnitQ flow_unit, Model.ProductMainExPump rhs) : base(rhs)
{
_flow_unit = flow_unit;
}
public override void Reset(Model.ProductMainExPump rhs)
{
base.Reset(rhs);
}
#region 泵界面参数
public string strQ
{
get
{
var m3h = Model.RatedParas4Pump.ToModel(RatedParas).Q;
return m3h > 0 ?
Math.Round(Eventech.Common.UnitQHelper.fromM3H(
_flow_unit, m3h), 4).ToString() : "";
}
}
public string strH
{
get
{
return Model.RatedParas4Pump.ToModel(RatedParas).H > 0 ? Model.RatedParas4Pump.ToModel(RatedParas).H.ToString() : "";
}
}
public string strN
{
get
{
if (this.Ratedn > -1)
return this.Ratedn.ToString();
else
return "";
}
}
public string strD2
{
get
{
if (this.D2 > -1)
return this.D2.ToString();
else
return "";
}
}
public string strPosiAngle
{
get
{
if (this.PosiAngle > -1)
return this.PosiAngle.ToString();
else
return "";
}
}
public string MainCreateTime
{
get
{
var A = DateTime.Compare(this.CreateTime, Convert.ToDateTime("2008-8-8"));
if (A > 0)
{
return this.CreateTime.ToString("yyyy-MM-dd HH:mm");
}
else
return "";
}
}
public string MianUpdateTime
{
get
{
var A = DateTime.Compare(this.UpdateTime, Convert.ToDateTime("2008-8-8"));
if (A > 0)
{
return this.UpdateTime.ToString("yyyy-MM-dd HH:mm");
}
else
return "";
}
}
public List CurrentViewModelSubList { get; set; }
public string MotorName { get; set; }
public string UpadteName { get; set; }
public string CreateName { get; set; }
#endregion
}
public class CurrentViewModelSub : Model.PartBase
{
public CurrentViewModelSub(Model.PartBase rhs) : base(rhs) { }
public override void Reset(Model.PartBase rhs)
{
base.Reset(rhs);
}
#region 产品界面参数
public string strLastTestTime
{
get
{
if (this.LastTestTime != null)
{
return this.LastTestTime.Value.ToString("yyyy-MM-dd");
}
else
return "";
}
}
public string PartCreateTime
{
get
{
var A = DateTime.Compare(this.CreateTime, Convert.ToDateTime("2008-8-8"));
if (A > 0)
{
return this.CreateTime.ToString("yyyy-MM-dd HH:mm");
}
else
return "";
}
}
public string PartUpdateTime
{
get
{
var A = DateTime.Compare(this.UpdateTime, Convert.ToDateTime("2008-8-8"));
if (A > 0)
{
return this.UpdateTime.ToString("yyyy-MM-dd HH:mm");
}
else
return "";
}
}
public string MfName { get; set; }
public string SdName { get; set; }
public string LastRealName { get; set; }
public string UpadteName { get; set; }
public string CreateName { get; set; }
#endregion
}
#endregion
private List _bindList = null;//所有列表
private Model.ProductSeries _series = null;
///
/// 初始化数据
///
public override void InitialDataSource()
{
this.productTypeListCtr.SetBindData(Model.eProductType.Pump);
}
///
///
///
///
public void SetBindingData(long SeriesID)
{
_bindList = new List();
var allPumps = new BLL.ProductPump().GetExBySeriesID(SeriesID);
if (allPumps == null || allPumps.Count() == 0)
{
this.currentViewModelBindingSource.DataSource = _bindList;
this.currentViewModelBindingSource.ResetBindings(false);
return;
}
foreach (var pumpitem in allPumps)
{
var vm = new CurrentViewModel(flow_unit, pumpitem);
BuildViewModel(vm);
_bindList.Add(vm);
}
this.currentViewModelBindingSource.DataSource = _bindList;
this.currentViewModelBindingSource.ResetBindings(false);
}
#region 基础功能
//添加
private void barBtnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (_series == null)
{
XtraMessageBox.Show("您必须选择一个设备系列才能进行此项操作");
ShowCmdOperateInfo("您必须选择一个设备系列才能进行此项操作");
return;
}
if (_bindList == null)
_bindList = new List();
int max_sortCode = 1;
if (_bindList.Count() > 0)
max_sortCode = _bindList.Max(x => x.SortCode) + 1;
WaitFrmHelper.ShowWaitForm();
var dlg = new AddProductPumpDlg();
dlg.Shown += delegate { WaitFrmHelper.HideWaitForm(); };
dlg.SetBindingData(_series, max_sortCode);
dlg.ReloadDataEvent += (pump, motor) =>
{
_allPartList = new BLL.PartBase().GetAll();
_allProductMainList = new BLL.ProductMain().GetAll();
_bindList.Add(BuildViewModel(new CurrentViewModel(flow_unit, pump)));
ShowCmdOperateInfo("添加成功!");
XtraMessageBox.Show("添加成功!");
this.currentViewModelBindingSource.ResetBindings(false);
this.gridView1.RefreshData();
};
ShowCmdOperateInfo("添加泵信息");
dlg.ShowDialog();
ShowCmdOperateInfo(_pageOperateInfo);
}
//编辑
private void barBtnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (_bindList == null || _bindList.Count < 1)
return;
var vm = this.gridView1.GetCurrentViewModel(_bindList);
if (vm == null)
{
XtraMessageBox.Show("您必须选择一个泵才能进行此项操作.");
ShowCmdOperateInfo("您必须选择一个泵才能进行此项操作");
return;
}
WaitFrmHelper.ShowWaitForm();
var dlg = new EditProductPumpDlg();
dlg.Shown += delegate { WaitFrmHelper.HideWaitForm(); };
dlg.SetBindingData(vm,0);
dlg.ReloadDataEvent += (isChangePart, pump, motor, part) =>
{
if (isChangePart)
{
_allPartList = new BLL.PartBase().GetAll();
_allProductMainList = new BLL.ProductMain().GetAll();
}
vm.Reset(pump);
BuildViewModel(vm);
ShowCmdOperateInfo("更新成功!");
XtraMessageBox.Show("更新成功!");
this.currentViewModelBindingSource.ResetBindings(false);
this.gridView1.RefreshData();
};
ShowCmdOperateInfo("编辑泵信息");
dlg.ShowDialog();
ShowCmdOperateInfo(_pageOperateInfo);
}
//详情
private void barBtnDictTypeView_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
}
//删除
private void barBtnDictTypeDel_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (_bindList == null || _bindList.Count < 1)
return;
WaitFrmHelper.ShowWaitForm();
var row = this.gridView1.GetCurrentViewModel(_bindList);
if (row == null)
{
WaitFrmHelper.ShowWaitForm();
XtraMessageBox.Show("请选择一行数据!");
ShowCmdOperateInfo("请选择一行数据!");
return;
}
ShowCmdOperateInfo("删除数据:" + row.Name);
DialogResult dr = XtraMessageBox.Show("您确定要删除'" + row.Name + "'这条数据吗?\n(注:如果当前选中设备下仍有产品数据则不能将其删除.)", "删除提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
if (dr != DialogResult.OK)
{
ShowCmdOperateInfo(_pageOperateInfo);
return;
}
var partList = new BLL.PartBase().GetByProductMainID(row.ID);
if (partList.Count() > 0)
{
XtraMessageBox.Show("删除失败,当前选中项下仍有产品数据!");
ShowCmdOperateInfo("删除失败,当前选中项下仍有产品数据!");
return;
}
if (!new BLL.ProductPump().DeleteEx(row.ID))
{
XtraMessageBox.Show("Error:340,删除失败!");
ShowCmdOperateInfo("Error:340,删除失败!");
return;
}
SetBindingData(this._series.ID);
XtraMessageBox.Show("删除成功!");
ShowCmdOperateInfo(_pageOperateInfo);
}
#endregion
#region GridView
//设备列表
private GridView SysDataView = new GridView();
private void gridView1_MasterRowExpanded(object sender, CustomMasterRowEventArgs e)
{
this.SysDataView = this.gridView1.GetDetailView(e.RowHandle, e.RelationIndex) as GridView;
this.SysDataView.HorzScrollStep = this.SysDataView.RowCount;
}
private void barBtnExcelDown_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
ShowCmdOperateInfo("导出信息到Excel");
var path = ExcelSaveFilePathHelper.SaveFilePathName();
ShowCmdOperateInfo(_pageOperateInfo);
if (string.IsNullOrEmpty(path)) return;
gridView1.OptionsPrint.PrintDetails = true;//导出明细
gridView1.OptionsPrint.ExpandAllDetails = true;//导出所有明细,false的话,只会导出展开的明细
gridControl1.ExportToXlsx(path, new DevExpress.XtraPrinting.XlsxExportOptionsEx() { ExportType = DevExpress.Export.ExportType.WYSIWYG, TextExportMode = DevExpress.XtraPrinting.TextExportMode.Text });
DialogResult dr = XtraMessageBox.Show("导出成功!是否打开刚刚保存的Excel文件?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
if (dr != DialogResult.OK)
return;
System.Diagnostics.Process.Start(path);
}
#endregion
private void seriesListCtrl_FocusedDataChangedEvent(Model.ProductSeries obj)
{
if (obj == null)
return;
SetBindingData(obj.ID);
if (obj.IsInnerMotor == 1)
{
colMotorName.Visible = false;
}
else
{
colMotorName.Visible = true;
}
_series = obj ;
}
List _allSenderList = null;
List _allManufacturerList = null;
List _allUserList = null;
List _allPartList = null;
List _allProductMainList = null;
private CurrentViewModel BuildViewModel(CurrentViewModel viewmodel)
{
if (_allManufacturerList == null)
{
_allManufacturerList = new BLL.ManufacturerBase().GetAll();
}
if (_allSenderList == null)
{
_allSenderList = new BLL.Senderbase().GetAll();
}
if (_allUserList == null)
{
_allUserList = new BLL.LoginUser().GetAll();
}
if (_allPartList == null)
{
_allPartList = new BLL.PartBase().GetAll();
}
if (_allProductMainList == null)
_allProductMainList = new BLL.ProductMain().GetAll();
viewmodel.UpadteName = _allUserList.Find(x => x.ID == viewmodel.UpdateUserID)?.RealName;
viewmodel.CreateName = _allUserList.Find(x => x.ID == viewmodel.UpdateUserID)?.RealName;
if (viewmodel.MotorMainID == null || viewmodel.MotorMainID < 1)
{
viewmodel.MotorName = "未设置电机";
}
else
{
var motor = _allProductMainList.Find(x => x.ID == viewmodel.MotorMainID);
if (motor == null)
{
viewmodel.MotorName = "电机数据已丢失";
}
else
{
viewmodel.MotorName = motor.Name;
}
}
var parts = _allPartList.Where(x => x.ProductMainID == viewmodel.ID);
if (parts != null && parts.Count() > 0)
{
viewmodel.CurrentViewModelSubList = new List();
foreach (var part in parts)
{
var vm_part = new CurrentViewModelSub(part);
if (part.ManufacturerID > 0)
{
var Manufacturer = _allManufacturerList.Find(m => m.ID == part.ManufacturerID);
vm_part.MfName = Manufacturer?.ShortName == "" ? Manufacturer?.FullName : Manufacturer?.ShortName;
}
if (part.SenderID > 0)
{
var Sender = _allSenderList.Find(s => s.ID == part.SenderID);
vm_part.SdName = Sender?.ShortName == "" ? Sender?.FullName : Sender?.ShortName;
}
if (part.LastTestUserID > 0)
vm_part.LastRealName = _allUserList.Find(x => x.ID == part.LastTestUserID)?.RealName;
viewmodel.CurrentViewModelSubList.Add(vm_part);
}
}
return viewmodel;
}
private void ProductPumpAndPartMgrPage_Load(object sender, EventArgs e)
{
//ShowCmdOperateInfo(_pageOperateInfo);
}
private void bbiImport样本曲线_EXCEL_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
var vm = this.gridView1.GetCurrentViewModel(_bindList);
if (vm == null)
{
XtraMessageBox.Show("您必须选择一个泵才能进行此项操作.");
ShowCmdOperateInfo("您必须选择一个泵才能进行此项操作");
return;
}
SampleCurveByExcelDlg frm = new SampleCurveByExcelDlg();
frm.SetBindingData(vm.ID);
frm.ShowDialog();
}
private void bbiImport样本曲线_IMAGE_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
var vm = this.gridView1.GetCurrentViewModel(_bindList);
if (vm == null)
{
XtraMessageBox.Show("您必须选择一个泵才能进行此项操作.");
ShowCmdOperateInfo("您必须选择一个泵才能进行此项操作");
return;
}
SampleCurveByPictureDlg frm = new SampleCurveByPictureDlg();
frm.SetBindingData(vm.ID);
frm.ShowDialog();
}
private void bbiViewSampleCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
var vm = this.gridView1.GetCurrentViewModel(_bindList);
if (vm == null)
{
XtraMessageBox.Show("您必须选择一个泵才能进行此项操作.");
ShowCmdOperateInfo("您必须选择一个泵才能进行此项操作");
return;
}
var model = new BLL.PumpSampleCurve().GetDefaultByPumpID(vm.ID);
if (model == null)
{
XtraMessageBox.Show("当前泵未定义样本曲线.");
return;
}
ViewSampleCurveDlg frm = new ViewSampleCurveDlg();
frm.SetBindingData(model);
frm.ShowDialog();
}
}
}