using DevExpress.XtraLayout;
|
using DevExpress.XtraLayout.Utils;
|
|
namespace Yw.WinFrmUI
|
{
|
public partial class SetHydroWorkingInfoCtrl : DevExpress.XtraEditors.XtraUserControl
|
{
|
public SetHydroWorkingInfoCtrl()
|
{
|
InitializeComponent();
|
this.layoutControl1.SetupLayoutControl();
|
}
|
|
/// <summary>
|
/// 查看组件事件
|
/// </summary>
|
public event Action<Yw.Model.HydroParterInfo> HydroViewEvent;
|
|
private Yw.Model.HydroModelInfo _hydroInfo = null;//水力信息
|
private Dictionary<Yw.Model.HydroParterInfo, ISetHydroParterWorkingInfoCtrl> _parterWorkingInfoDict = null;//组件与组件工况映射字典
|
|
/// <summary>
|
/// 绑定数据
|
/// </summary>
|
public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo)
|
{
|
_hydroInfo = hydroInfo;
|
if (_hydroInfo == null)
|
{
|
return;
|
}
|
_parterWorkingInfoDict = new Dictionary<Model.HydroParterInfo, ISetHydroParterWorkingInfoCtrl>();
|
//水箱
|
if (hydroInfo.Waterboxs != null && hydroInfo.Waterboxs.Count > 0)
|
{
|
var group = this.layoutControl1.AddGroup();
|
group.Text = HydroParterCatalogHelper.GetCatalogName(Yw.Hydro.ParterCatalog.Waterbox);
|
group.ExpandButtonVisible = true;
|
group.Expanded = true;
|
group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
|
group.ExpandOnDoubleClick = true;
|
foreach (var parter in hydroInfo.Waterboxs)
|
{
|
var workingInfoCtrl = new SetHydroWaterboxWorkingInfoCtrl();
|
workingInfoCtrl.HydroViewEvent += (x) => this.HydroViewEvent?.Invoke(x);
|
workingInfoCtrl.SetBindingData(parter);
|
var item = group.AddItem(parter.Name, workingInfoCtrl);
|
item.TextVisible = false;
|
_parterWorkingInfoDict.Add(parter, workingInfoCtrl);
|
}
|
group.BestFit();
|
group.LayoutMode = LayoutMode.Flow;
|
group.AllowBorderColorBlending = true;
|
group.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
|
foreach (LayoutControlItem item in group.Items)
|
{
|
item.Size = new Size(200, 80);
|
}
|
}
|
|
//水泵
|
if (hydroInfo.Pumps != null && hydroInfo.Pumps.Count > 0)
|
{
|
var group = this.layoutControl1.AddGroup();
|
group.Text = HydroParterCatalogHelper.GetCatalogName(Yw.Hydro.ParterCatalog.Pump);
|
group.ExpandButtonVisible = true;
|
group.Expanded = true;
|
group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
|
group.ExpandOnDoubleClick = true;
|
foreach (var parter in hydroInfo.Pumps)
|
{
|
var workingInfoCtrl = new SetHydroPumpWorkingInfoCtrl();
|
workingInfoCtrl.HydroViewEvent += (x) => this.HydroViewEvent?.Invoke(x);
|
workingInfoCtrl.SetBindingData(parter);
|
var item = group.AddItem(parter.Name, workingInfoCtrl);
|
item.TextVisible = false;
|
_parterWorkingInfoDict.Add(parter, workingInfoCtrl);
|
}
|
group.BestFit();
|
group.LayoutMode = LayoutMode.Flow;
|
group.AllowBorderColorBlending = true;
|
group.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
|
foreach (LayoutControlItem item in group.Items)
|
{
|
item.Size = new Size(200, 100);
|
}
|
}
|
|
//阀门
|
if (hydroInfo.Valves != null && hydroInfo.Valves.Count > 0)
|
{
|
var group = this.layoutControl1.AddGroup();
|
group.Text = HydroParterCatalogHelper.GetCatalogName(Yw.Hydro.ParterCatalog.Valve);
|
group.ExpandButtonVisible = true;
|
group.Expanded = false;
|
group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
|
group.ExpandOnDoubleClick = true;
|
foreach (var parter in hydroInfo.Valves)
|
{
|
var workingInfoCtrl = new SetHydroValveWorkingInfoCtrl();
|
workingInfoCtrl.HydroViewEvent += (x) => this.HydroViewEvent?.Invoke(x);
|
workingInfoCtrl.SetBindingData(parter);
|
var item = group.AddItem(parter.Name, workingInfoCtrl);
|
item.TextVisible = false;
|
_parterWorkingInfoDict.Add(parter, workingInfoCtrl);
|
}
|
group.BestFit();
|
group.LayoutMode = LayoutMode.Flow;
|
group.AllowBorderColorBlending = true;
|
group.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
|
foreach (LayoutControlItem item in group.Items)
|
{
|
item.Size = new Size(200, 100);
|
}
|
}
|
|
///流量计
|
if (hydroInfo.Flowmeters != null && hydroInfo.Flowmeters.Count > 0)
|
{
|
var group = this.layoutControl1.AddGroup();
|
group.Text = HydroParterCatalogHelper.GetCatalogName(Yw.Hydro.ParterCatalog.Flowmeter);
|
group.ExpandButtonVisible = true;
|
group.Expanded = false;
|
group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
|
group.ExpandOnDoubleClick = true;
|
foreach (var parter in hydroInfo.Flowmeters)
|
{
|
var workingInfoCtrl = new SetHydroFlowmeterWorkingInfoCtrl();
|
workingInfoCtrl.HydroViewEvent += (x) => this.HydroViewEvent?.Invoke(x);
|
workingInfoCtrl.SetBindingData(parter);
|
var item = group.AddItem(parter.Name, workingInfoCtrl);
|
item.TextVisible = false;
|
_parterWorkingInfoDict.Add(parter, workingInfoCtrl);
|
}
|
group.BestFit();
|
group.LayoutMode = LayoutMode.Flow;
|
group.AllowBorderColorBlending = true;
|
group.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
|
foreach (LayoutControlItem item in group.Items)
|
{
|
item.Size = new Size(200, 80);
|
}
|
|
}
|
|
//压力表
|
if (hydroInfo.Pressmeters != null && hydroInfo.Pressmeters.Count > 0)
|
{
|
var group = this.layoutControl1.AddGroup();
|
group.Text = HydroParterCatalogHelper.GetCatalogName(Yw.Hydro.ParterCatalog.Pressmeter);
|
group.ExpandButtonVisible = true;
|
group.Expanded = false;
|
group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
|
group.ExpandOnDoubleClick = true;
|
foreach (var parter in hydroInfo.Pressmeters)
|
{
|
var workingInfoCtrl = new SetHydroPressmeterWorkingInfoCtrl();
|
workingInfoCtrl.HydroViewEvent += (x) => this.HydroViewEvent?.Invoke(x);
|
workingInfoCtrl.SetBindingData(parter);
|
var item = group.AddItem(parter.Name, workingInfoCtrl);
|
item.TextVisible = false;
|
_parterWorkingInfoDict.Add(parter, workingInfoCtrl);
|
}
|
group.BestFit();
|
group.LayoutMode = LayoutMode.Flow;
|
group.AllowBorderColorBlending = true;
|
group.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
|
foreach (LayoutControlItem item in group.Items)
|
{
|
item.Size = new Size(200, 80);
|
}
|
}
|
}
|
|
/// <summary>
|
/// 更新绑定
|
/// </summary>
|
public void UpdateBindingData(HydroWorkingInfoViewModel workingInfo)
|
{
|
if (_hydroInfo == null)
|
{
|
return;
|
}
|
if (_parterWorkingInfoDict == null || _parterWorkingInfoDict.Count < 1)
|
{
|
return;
|
}
|
if (workingInfo == null)
|
{
|
return;
|
}
|
var all = workingInfo.GetAllParterWorkingInfoList();
|
if (all == null || all.Count < 1)
|
{
|
return;
|
}
|
|
foreach (var item in _parterWorkingInfoDict)
|
{
|
var singleWorkingInfo = all.Find(x => x.Code == item.Key.Code);
|
if (singleWorkingInfo != null)
|
{
|
var singleWorkingInfoCtrl = item.Value;
|
if (singleWorkingInfoCtrl != null)
|
{
|
singleWorkingInfoCtrl.UpdateBindingData(singleWorkingInfo);
|
}
|
}
|
}
|
|
}
|
|
/// <summary>
|
/// 获取水力信息
|
/// </summary>
|
public HydroWorkingInfoViewModel GetWorkingInfo()
|
{
|
if (_hydroInfo == null)
|
{
|
return default;
|
}
|
if (_parterWorkingInfoDict == null || _parterWorkingInfoDict.Count < 1)
|
{
|
return default;
|
}
|
var workingInfo = new HydroWorkingInfoViewModel();
|
foreach (var item in _parterWorkingInfoDict)
|
{
|
var parterWorkingInfoCtrl = item.Value;
|
if (parterWorkingInfoCtrl != null)
|
{
|
var singleWorkingInfo = parterWorkingInfoCtrl.GetWorkingInfo();
|
if (singleWorkingInfo != null)
|
{
|
workingInfo.AppendParterWorkingInfo(singleWorkingInfo);
|
}
|
}
|
}
|
return workingInfo;
|
}
|
|
|
|
|
}
|
}
|