using DevExpress.XtraEditors;
|
using IStation.WinFrmUI.Curve;
|
using System;
|
using System.ComponentModel;
|
using System.IO;
|
using System.Linq;
|
|
namespace IStation.WinFrmUI.Basic
|
{
|
/// <summary>
|
///
|
/// </summary>
|
public partial class PumpCurveTreeListCtrl : XtraUserControl
|
{
|
public PumpCurveTreeListCtrl()
|
{
|
InitializeComponent();
|
treeList1.InitialDefaultSettings();
|
treeList1.SelectImageList = ImageLib.Lib;
|
layoutControl1.SetupLayoutControl();
|
stationTreeListLookUpEdit1.SelectedChangedEvent += StationTreeListLookUpEdit1_SelectedChangedEvent; ;
|
}
|
|
|
public class CurrentViewModel
|
{
|
public CurrentViewModel() { }
|
public CurrentViewModel(Model.Equipment equipment)
|
{
|
ID = equipment.ID.ToString();
|
Name = equipment.Name;
|
ParentID = equipment.BelongID.ToString();
|
ObjectType = IStation.ObjectType.Equipment;
|
Model = equipment;
|
IsGroup = true;
|
ImageIndex = ImageLib.Pump;
|
}
|
|
public CurrentViewModel(Model.PumpCurveMapping mapping)
|
{
|
ID = $"{mapping.CurveID}-{mapping.ID}";
|
Name = mapping.OtherName;
|
ParentID = mapping.PumpID.ToString();
|
ObjectType = IStation.ObjectType.PumpCurveMapping;
|
Model = mapping;
|
IsGroup = false;
|
IsWorkCurve = mapping.IsWorking;
|
Reset(IsWorkCurve);
|
}
|
|
public CurrentViewModel(long mappingId, Model.PumpSpeedCurve curve)
|
{
|
ID = curve.ID.ToString();
|
Name = curve.HZ + "hz";
|
ParentID = $"{curve.PumpCurveID}-{mappingId}";
|
ObjectType = IStation.ObjectType.PumpSpeedCurve;
|
Model = curve;
|
IsGroup = false;
|
ImageIndex = ImageLib.PumpSpeedCurve;
|
}
|
|
public string ID { get; set; }
|
public string ParentID { get; set; }
|
public string Name { get; set; }
|
public string ObjectType { get; set; }
|
public object Model { get; set; }
|
public bool IsGroup { get; set; }
|
public int ImageIndex { get; set; }
|
public bool IsWorkCurve { get; set; }
|
|
public void Reset(bool isWorking)
|
{
|
if (ObjectType == IStation.ObjectType.PumpCurveMapping)
|
{
|
IsWorkCurve = isWorking;
|
ImageIndex = IsWorkCurve ? ImageLib.WorkPumpCurve : ImageLib.PumpCurve;
|
}
|
}
|
}
|
|
|
/// <summary>
|
/// 泵站改变事件
|
/// </summary>
|
public event Action<Model.Station> StationChangedEvent;
|
|
/// <summary>
|
/// 聚焦改变事件
|
/// </summary>
|
public event Action<string, object> FocusedChangedEvent;
|
|
private BLL.Equipment _bll = new BLL.Equipment();
|
private BindingList<CurrentViewModel> _allBindingList = null;//所有绑定列表
|
|
private Model.Station _station = null;
|
|
/// <summary>
|
/// 绑定数据
|
/// </summary>
|
public void SetBindingData()
|
{
|
stationTreeListLookUpEdit1.SetBindingData();
|
}
|
|
/// <summary>
|
/// 绑定数据
|
/// </summary>
|
public void Clear()
|
{
|
_allBindingList = new BindingList<CurrentViewModel>();
|
treeList1.DataSource = _allBindingList;
|
FocusedChangedEvent?.Invoke(string.Empty, null);
|
}
|
|
//泵站变换
|
private void StationTreeListLookUpEdit1_SelectedChangedEvent(Model.Station obj)
|
{
|
_station = obj;
|
StationChangedEvent?.Invoke(obj);
|
SetBindingData(obj);
|
}
|
|
/// <summary>
|
/// 绑定数据
|
/// </summary>
|
private void SetBindingData(Model.Station model)
|
{
|
WaitFrmHelper.ShowWaitForm("正在加载数据...");
|
_allBindingList = new BindingList<CurrentViewModel>();
|
if (model != null)
|
{
|
var pumps = _bll.GetPumpListByBelongTypeAndBelongID(IStation.ObjectType.Station, model.ID);
|
if (pumps != null && pumps.Any())
|
{
|
var bllMapping = new BLL.PumpCurveMapping();
|
var bllSpeedCurve = new BLL.PumpSpeedCurve();
|
foreach (var pump in pumps)
|
{
|
_allBindingList.Add(new CurrentViewModel(pump));
|
|
var mappings = bllMapping.GetByPumpID(pump.ID);
|
if (mappings == null || mappings.Count < 1)
|
continue;
|
foreach (var mapping in mappings)
|
{
|
_allBindingList.Add(new CurrentViewModel(mapping));
|
var speedCurves = bllSpeedCurve.GetByPumpCurveID(mapping.CurveID);
|
if (speedCurves == null || speedCurves.Count < 1)
|
continue;
|
foreach (var speedCurve in speedCurves)
|
{
|
_allBindingList.Add(new CurrentViewModel(mapping.ID, speedCurve));
|
}
|
}
|
}
|
}
|
}
|
|
|
treeList1.DataSource = _allBindingList;
|
treeList1.RefreshDataSource();
|
|
var firstNode = _allBindingList.Where(x => !x.IsGroup).FirstOrDefault();
|
if (firstNode != null)
|
{
|
treeList1.FocusedNode = treeList1.FindNodeByKeyID(firstNode.ID);
|
}
|
WaitFrmHelper.HideWaitForm();
|
}
|
|
/// <summary>
|
/// 修改曲线映射别名
|
/// </summary>
|
public void UpdateOtherName(string name)
|
{
|
var row = treeList1.GetCurrentViewModel(_allBindingList);
|
if (row == null)
|
return;
|
row.Name = name;
|
treeList1.RefreshNode(treeList1.FocusedNode);
|
}
|
|
/// <summary>
|
/// 修改工作曲线
|
/// </summary>
|
public void UpdateWorkingCurve()
|
{
|
var row = treeList1.GetCurrentViewModel(_allBindingList);
|
if (row == null)
|
return;
|
var existWorkPumpCurve = _allBindingList.Where(x => x.ParentID == row.ParentID && x.ID != row.ID && x.IsWorkCurve).FirstOrDefault();
|
if (existWorkPumpCurve != null)
|
{
|
existWorkPumpCurve.Reset(false);
|
}
|
row.Reset(true);
|
treeList1.RefreshDataSource();
|
}
|
|
/// <summary>
|
/// 删除
|
/// </summary>
|
public void DeletePumpMapping(long id, long mappingId)
|
{
|
var node = treeList1.FindNodeByKeyID($"{id}-{mappingId}");
|
if (node == null) return;
|
if (treeList1.GetDataRecordByNode(node) is CurrentViewModel vm)
|
{
|
_allBindingList.Remove(vm);
|
var children = _allBindingList.Where(x => x.ParentID == vm.ID).ToList();
|
if (children != null && children.Any())
|
{
|
foreach (var item in children)
|
{
|
_allBindingList.Remove(item);
|
}
|
}
|
treeList1.RefreshDataSource();
|
}
|
}
|
|
private CurrentViewModel _rightClickVm = null;
|
|
#region TreeList
|
|
//聚焦前
|
private void treeList1_BeforeFocusNode(object sender, DevExpress.XtraTreeList.BeforeFocusNodeEventArgs e)
|
{
|
var vm = treeList1.GetDataRecordByNode(e.Node) as CurrentViewModel;
|
if (vm == null)
|
return;
|
if (vm.IsGroup)
|
{
|
e.CanFocus = false;
|
}
|
}
|
|
//聚焦改变
|
private void treeList1_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e)
|
{
|
var vm = treeList1.GetCurrentViewModel(_allBindingList);
|
if (vm == null || vm.IsGroup)
|
return;
|
FocusedChangedEvent?.Invoke(vm.ObjectType, vm.Model);
|
}
|
|
//鼠标点击
|
private void treeList1_MouseClick(object sender, System.Windows.Forms.MouseEventArgs e)
|
{
|
if (e.Button == System.Windows.Forms.MouseButtons.Right)
|
{
|
var hitInfo = treeList1.CalcHitInfo(e.Location);
|
_rightClickVm = treeList1.GetDataRecordByNode(hitInfo.Node) as CurrentViewModel;
|
if (_rightClickVm == null)
|
return;
|
if (_rightClickVm.IsGroup)
|
{
|
popMenu.ShowPopup(MousePosition);
|
}
|
else if (_rightClickVm.ObjectType == IStation.ObjectType.PumpCurveMapping)
|
{
|
var mapping = _rightClickVm.Model as Model.PumpCurveMapping;
|
var exist = new BLL.PumpSpeedCurve().IsExistByPumpCurveID(mapping.CurveID);
|
if (!exist)
|
return;
|
popCurve.ShowPopup(MousePosition);
|
}
|
}
|
}
|
#endregion
|
|
#region 右键菜单
|
|
//泵详细信息
|
private void barBtnPumpDetail_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var vm = _rightClickVm;
|
if (vm == null || !vm.IsGroup)
|
return;
|
var pump = vm.Model as Model.Equipment<Model.Pump>;
|
var dlg = new PumpInfoDlg();
|
dlg.SetBindingData(pump);
|
dlg.ShowDialog();
|
}
|
|
//表格导入
|
private void barBtnImportByExcel_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var vm = _rightClickVm;
|
if (vm == null || !vm.IsGroup)
|
return;
|
var pump = vm.Model as Model.Equipment;
|
var dlg = new ImportCurveByExcelDlg();
|
dlg.ReloadDataEvent += (curveCode, eCurveSourceFrom, featCurveExpressGroup) =>
|
{
|
var pumpCurveExMapping = new Model.PumpCurveExMapping();
|
pumpCurveExMapping.CurveCode = curveCode;
|
pumpCurveExMapping.SourceFrom = eCurveSourceFrom;
|
pumpCurveExMapping.CreateMethod = Model.eCurveCreateMethod.Excel导入;
|
pumpCurveExMapping.CurveInfo = featCurveExpressGroup;
|
pumpCurveExMapping.ReliabilityStatus = Model.PumpCurve.eReliabilityStatus.Normal;
|
pumpCurveExMapping.CreateTime = DateTime.Now;
|
|
pumpCurveExMapping.PumpID = pump.ID;
|
pumpCurveExMapping.OtherName = curveCode;
|
pumpCurveExMapping.IsWorking = false;
|
var mappingId = new BLL.PumpCurve().InsertEx(pumpCurveExMapping);
|
if (mappingId < 1)
|
{
|
return false;
|
}
|
var mapping = new BLL.PumpCurveMapping().GetByID(mappingId);
|
|
_allBindingList.Add(new CurrentViewModel(mapping));
|
treeList1.FocusedNode = treeList1.FocusedNode;
|
return true;
|
};
|
dlg.ShowDialog();
|
}
|
|
//图片导入
|
private void barBtnImportByImage_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var vm = _rightClickVm;
|
if (vm == null || !vm.IsGroup)
|
return;
|
var pump = vm.Model as Model.Equipment;
|
var dlg = new ImportCurveByPictureDlg();
|
dlg.ReloadDataEvent += (curveCode, eCurveSourceFrom, featCurveExpressGroup) =>
|
{
|
var pumpCurveExMapping = new Model.PumpCurveExMapping();
|
pumpCurveExMapping.CurveCode = curveCode;
|
pumpCurveExMapping.SourceFrom = eCurveSourceFrom;
|
pumpCurveExMapping.CreateMethod = Model.eCurveCreateMethod.图片拟合;
|
pumpCurveExMapping.CurveInfo = featCurveExpressGroup;
|
pumpCurveExMapping.ReliabilityStatus = Model.PumpCurve.eReliabilityStatus.Normal;
|
pumpCurveExMapping.CreateTime = DateTime.Now;
|
|
pumpCurveExMapping.PumpID = pump.ID;
|
pumpCurveExMapping.OtherName = curveCode;
|
pumpCurveExMapping.IsWorking = false;
|
var mappingId = new BLL.PumpCurve().InsertEx(pumpCurveExMapping);
|
if (mappingId < 1)
|
{
|
return false;
|
}
|
var mapping = new BLL.PumpCurveMapping().GetByID(mappingId);
|
|
_allBindingList.Add(new CurrentViewModel(mapping));
|
treeList1.FocusedNode = treeList1.FocusedNode;
|
return true;
|
};
|
dlg.ShowDialog();
|
}
|
|
//单点导入
|
private void barBtnImportByOnePoint_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var vm = _rightClickVm;
|
if (vm == null || !vm.IsGroup)
|
return;
|
var pump = vm.Model as Model.Equipment;
|
var dlg = new ImportCurveByOnePointDlg();
|
dlg.ReloadDataEvent += (curveCode, eCurveSourceFrom, featCurveExpressGroup) =>
|
{
|
var pumpCurveExMapping = new Model.PumpCurveExMapping();
|
pumpCurveExMapping.CurveCode = curveCode;
|
pumpCurveExMapping.SourceFrom = eCurveSourceFrom;
|
pumpCurveExMapping.CreateMethod = Model.eCurveCreateMethod.单点生成;
|
pumpCurveExMapping.CurveInfo = featCurveExpressGroup;
|
pumpCurveExMapping.ReliabilityStatus = Model.PumpCurve.eReliabilityStatus.Normal;
|
pumpCurveExMapping.CreateTime = DateTime.Now;
|
|
pumpCurveExMapping.PumpID = pump.ID;
|
pumpCurveExMapping.OtherName = curveCode;
|
pumpCurveExMapping.IsWorking = false;
|
var mappingId = new BLL.PumpCurve().InsertEx(pumpCurveExMapping);
|
if (mappingId < 1)
|
{
|
return false;
|
}
|
var mapping = new BLL.PumpCurveMapping().GetByID(mappingId);
|
|
_allBindingList.Add(new CurrentViewModel(mapping));
|
treeList1.FocusedNode = treeList1.FocusedNode;
|
return true;
|
};
|
dlg.ShowDialog();
|
}
|
|
//公式导入
|
private void barBtnImportByExpress_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var vm = _rightClickVm;
|
if (vm == null || !vm.IsGroup)
|
return;
|
var pump = vm.Model as Model.Equipment;
|
var dlg = new ImportCurveByCurveExpressDlg();
|
dlg.ReloadDataEvent += (curveCode, eCurveSourceFrom, featCurveExpressGroup) =>
|
{
|
var pumpCurveExMapping = new Model.PumpCurveExMapping();
|
pumpCurveExMapping.CurveCode = curveCode;
|
pumpCurveExMapping.SourceFrom = eCurveSourceFrom;
|
pumpCurveExMapping.CreateMethod = Model.eCurveCreateMethod.曲线表达式;
|
pumpCurveExMapping.CurveInfo = featCurveExpressGroup;
|
pumpCurveExMapping.ReliabilityStatus = Model.PumpCurve.eReliabilityStatus.Normal;
|
pumpCurveExMapping.CreateTime = DateTime.Now;
|
|
pumpCurveExMapping.PumpID = pump.ID;
|
pumpCurveExMapping.OtherName = curveCode;
|
pumpCurveExMapping.IsWorking = false;
|
var mappingId = new BLL.PumpCurve().InsertEx(pumpCurveExMapping);
|
if (mappingId < 1)
|
{
|
return false;
|
}
|
var mapping = new BLL.PumpCurveMapping().GetByID(mappingId);
|
|
_allBindingList.Add(new CurrentViewModel(mapping));
|
treeList1.FocusedNode = treeList1.FocusedNode;
|
return true;
|
};
|
dlg.ShowDialog();
|
}
|
|
//查看
|
private void barBtnMultiCurveView_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var mapping = _rightClickVm.Model as Model.PumpCurveMapping;
|
var model = new BLL.PumpCurve().GetExMappingByID(mapping.PumpID, mapping.CurveID);
|
if (model == null)
|
return;
|
var dlg = new MultiCurveDlg();
|
dlg.SetBindingData(model);
|
dlg.ShowDialog();
|
}
|
|
#endregion
|
|
#region 菜单事件
|
|
//全部展开
|
private void barBtnExpandAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
treeList1.ExpandAll();
|
}
|
|
//全部折叠
|
private void barBtnCollapseAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
treeList1.CollapseAll();
|
}
|
|
//检索
|
private void barCkSearch_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
if (barCkSearch.Checked)
|
treeList1.ShowFindPanel();
|
else
|
treeList1.HideFindPanel();
|
}
|
|
|
#endregion
|
|
|
private void barExportInp_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
if (_station == null)
|
return;
|
var path = Path.Combine(Settings.File.RootDirectory, "陈行", _station.Name + "_inp");
|
if (!Directory.Exists(path))
|
{
|
Directory.CreateDirectory(path);
|
}
|
var pumps = new BLL.Equipment().GetPumpListByBelongTypeAndBelongID(IStation.ObjectType.Station, _station.ID);
|
foreach (var pump in pumps)
|
{
|
var curve = new BLL.PumpCurve().GetDefaultWorkingByPumpID(pump.ID);
|
if (curve == null)
|
continue;
|
var fitPointsQH = curve.CurveInfo.CurveQH.GetFitPoints(100);
|
var fitPointsQE = curve.CurveInfo.CurveQE.GetFitPoints(100);
|
|
var curveQH = curve.CurveInfo.CurveQH;
|
var curveQE = curve.CurveInfo.CurveQE;
|
var filePath = path + "\\" + pump.Name + ".crv";
|
// ExportInpHelper.INPDefaultFile(filePath, pump.Name + "-" + curve.SourceFrom.GetDisplayText(), curveQH, curveQE);
|
ExportCurveHelper.INPFile(filePath, curveQH, curveQE, 100);
|
}
|
|
XtraMessageBox.Show("over");
|
}
|
}
|
}
|