From 51e66d3bc5ef0fe491800ccdce292a8d58300efa Mon Sep 17 00:00:00 2001 From: duheng <2784771470@qq.com> Date: 星期日, 22 十二月 2024 12:33:41 +0800 Subject: [PATCH] 单泵曲线匹配修改 --- WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/01-series/AssetsCoolingSeriesMgrTreeCtrl.cs | 412 ++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 336 insertions(+), 76 deletions(-) diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/01-series/AssetsCoolingSeriesMgrTreeCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/01-series/AssetsCoolingSeriesMgrTreeCtrl.cs index 46f4ea6..3d14b0f 100644 --- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/01-series/AssetsCoolingSeriesMgrTreeCtrl.cs +++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/01-series/AssetsCoolingSeriesMgrTreeCtrl.cs @@ -1,112 +1,61 @@ 锘縰sing DevExpress.Utils; using DevExpress.Utils.Design; +using DevExpress.Utils.DragDrop; +using DevExpress.XtraEditors; +using DevExpress.XtraTreeList; +using DevExpress.XtraTreeList.Nodes; +using HStation.Vmo; using System.ComponentModel; +using System.Windows.Media.Imaging; +using Yw; namespace HStation.WinFrmUI { public partial class AssetsCoolingSeriesMgrTreeCtrl : DevExpress.XtraEditors.XtraUserControl { /// <summary> - /// + /// /// </summary> public AssetsCoolingSeriesMgrTreeCtrl() { InitializeComponent(); this.treeList1.InitialDefaultSettings(); this.layoutControl1.SetupLayoutControl(); + this.barBtnAdd.ItemClick += BarBtnAdd_ItemClick; + this.barBtnEdit.ItemClick += BarBtnEdit_ItemClick; + this.barBtnDelete.ItemClick += BarBtnDelete_ItemClick; + this.barBtnInfo.ItemClick += BarBtnInfo_ItemClick; } /// <summary> /// 鑱氱劍鏀瑰彉浜嬩欢 /// </summary> - public event Action<SimpleTreeViewModel> FocusedChangedEvent; + public event Action<AssetsCoolingSeriesVmo> FocusedChangedEvent; /// <summary> /// 鎵�鏈夌粦瀹氬垪琛� /// </summary> - private List<SimpleTreeViewModel> _allBindingList = null; + private List<AssetsCoolingSeriesMgrViewModel> _allBindingList = null; /// <summary> - /// 缁戝畾鏁版嵁 + /// 鍒濆鍖栨暟鎹� /// </summary> - public void SetBindingData(List<SimpleTreeViewModel> allList) + public async void InitialData() { - _allBindingList = new List<SimpleTreeViewModel>(); + var overlay = this.ShowOverlay(); + var allList = await BLLFactory<HStation.BLL.AssetsCoolingSeries>.Instance.GetAll(); + _allBindingList = new List<AssetsCoolingSeriesMgrViewModel>(); allList?.ForEach(x => { - _allBindingList.Add(x); + var vm = new AssetsCoolingSeriesMgrViewModel(x); + _allBindingList.Add(vm); }); this.treeList1.DataSource = _allBindingList; this.treeList1.ForceInitialize(); - } - - /// <summary> - /// 鍏ㄩ儴灞曞紑 - /// </summary> - public void ExpandAll() - { this.treeList1.ExpandAll(); + overlay.Close(); + SetDragEnable(this.barCkDrag.Checked); } - - /// <summary> - /// 鍏ㄩ儴鎶樺彔 - /// </summary> - public void CollapseAll() - { - this.treeList1.CollapseAll(); - } - - /// <summary> - /// 鏄剧ず鏍戠嚎 - /// </summary> - public bool ShowTreeLines - { - get { return this.barCkTreeLine.Checked; } - set { this.barCkTreeLine.Checked = value; } - } - - /// <summary> - /// 鏄剧ず鎼滅储妗� - /// </summary> - public void ShowSearchControl() - { - this.layoutControlItem1.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always; - } - - /// <summary> - /// 鍏抽棴鎼滅储妗� - /// </summary> - public void CloseSearchControl() - { - this.layoutControlItem1.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never; - } - - /// <summary> - /// 閫夋嫨鍥剧墖鍒楄〃 - /// </summary> - [DefaultValue(null)] - [TypeConverter(typeof(ImageCollectionImagesConverter))] - public object SelectImageList - { - get - { - return this.treeList1.SelectImageList; - } - set - { - this.treeList1.SelectImageList = value; - } - } - - /// <summary> - /// 宸ュ叿鏉″彲瑙佹�� - /// </summary> - public bool ToolBarVisible - { - get { return this.bar1.Visible; } - set { this.bar1.Visible = value; } - } - //鍏ㄩ儴灞曞紑 private void barBtnExpandAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) @@ -138,11 +87,322 @@ //鑱氱劍鑺傜偣鏀瑰彉 private void treeList1_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e) { - var vm = this.treeList1.GetDataRecordByNode(e.Node) as SimpleTreeViewModel; - this.FocusedChangedEvent?.Invoke(vm); + var vm = this.treeList1.GetDataRecordByNode(e.Node) as AssetsCoolingSeriesMgrViewModel; + if (vm != null) + { + this.FocusedChangedEvent?.Invoke(vm.Vmo); + } } + //鍒锋柊 + private void barBtnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + InitialData(); + } + //鍙抽敭鑿滃崟 + private void treeList1_MouseClick(object sender, MouseEventArgs e) + { + if (e.Button != MouseButtons.Right) + { + return; + } + _calcHitInfo = this.treeList1.CalcHitInfo(e.Location); + this.popupMenu1.ShowPopup(MousePosition); + } + private TreeListHitInfo _calcHitInfo = null; + + //鍙抽敭鑿滃崟寮瑰嚭鍓嶉獙璇� + private void popupMenu1_BeforePopup(object sender, CancelEventArgs e) + { + if (_calcHitInfo == null) + { + return; + } + if (_calcHitInfo.InRow) + { + this.barBtnAdd.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + this.barBtnEdit.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + this.barBtnDelete.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + this.barBtnInfo.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + } + else + { + this.barBtnAdd.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + this.barBtnEdit.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + this.barBtnDelete.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + this.barBtnInfo.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + } + } + + //鑾峰彇褰撳墠 + private AssetsCoolingSeriesMgrViewModel GetCurrentViewModel() + { + if (_allBindingList == null) + { + TipFormHelper.ShowError("鏁版嵁鍒濆鍖栭敊璇紒"); + return null; + } + if (_allBindingList.Count < 1) + { + TipFormHelper.ShowInfo("鏃犳暟鎹紒"); + return null; + } + var vm = this.treeList1.GetCurrentViewModel(_allBindingList); + if (vm == null) + { + TipFormHelper.ShowWarn("璇烽�夋嫨鏁版嵁琛岋紒"); + return null; + } + return vm; + } + + //娣诲姞 + private void Add() + { + if (_allBindingList == null) + { + TipFormHelper.ShowError("鏁版嵁鍒濆鍖栧け璐ワ紒"); + return; + } + if (_calcHitInfo == null) + { + return; + } + long parentId = 0; + if (_calcHitInfo.InRow) + { + var vm = this.treeList1.GetCurrentViewModel(_allBindingList); + if (vm != null) + { + parentId = vm.ID; + } + } + var dlg = new AddAssetsCoolingSeriesDlg(); + dlg.ReloadDataEvent += (rhs) => + { + var vm = new AssetsCoolingSeriesMgrViewModel(rhs); + _allBindingList.Add(vm); + this.treeList1.RefreshDataSource(); + TipFormHelper.ShowSucceed("娣诲姞鎴愬姛锛�"); + }; + dlg.SetBindingData(parentId); + dlg.ShowDialog(); + } + + //缂栬緫 + private void Edit() + { + var vm = GetCurrentViewModel(); + if (vm == null) + { + return; + } + var dlg = new EditAssetsCoolingSeriesDlg(); + dlg.ReloadDataEvent += (rhs) => + { + vm.Reset(rhs); + this.treeList1.RefreshNode(this.treeList1.FocusedNode); + TipFormHelper.ShowSucceed("鏇存柊鎴愬姛"); + }; + dlg.SetBindingData(vm.Vmo); + dlg.ShowDialog(); + } + + //鍒犻櫎 + private async void Delete() + { + var vm = GetCurrentViewModel(); + if (vm == null) + { + return; + } + var result = XtraMessageBox.Show("璇烽棶纭鍒犻櫎褰撳墠鏁版嵁鍚楋紵", "璇㈤棶", MessageBoxButtons.YesNo) == DialogResult.Yes; + if (!result) + { + return; + } + var bol = await BLLFactory<HStation.BLL.AssetsCoolingSeries>.Instance.DeleteByID(vm.ID); + if (!bol) + { + TipFormHelper.ShowError("鍒犻櫎澶辫触锛�"); + return; + } + _allBindingList.Remove(vm); + this.treeList1.RefreshDataSource(); + TipFormHelper.ShowSucceed("鍒犻櫎鎴愬姛锛�"); + } + + //鏌ョ湅 + private void View() + { + var vm = GetCurrentViewModel(); + if (vm == null) + { + return; + } + var dlg = new ViewAssetsCoolingSeriesDlg(); + dlg.SetBindingData(vm.Vmo); + dlg.ShowDialog(); + } + + //娣诲姞 + private void BarBtnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + Add(); + } + + //缂栬緫 + private void BarBtnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + Edit(); + } + + //璇︾粏淇℃伅 + private void BarBtnInfo_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + View(); + } + + //鍒犻櫎 + private void BarBtnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + Delete(); + } + + #region 鎷栨嫿 + + private async void dragDropEvents1_DragDrop(object sender, DevExpress.Utils.DragDrop.DragDropEventArgs e) + { + var nodes = e.Data as List<TreeListNode>; + if (nodes == null || nodes.Count < 1) + { + e.Handled = true; + return; + } + var sourceNode = nodes[0]; + var sourceNodeObj = this.treeList1.GetDataRecordByNode(sourceNode) as AssetsCoolingSeriesMgrViewModel; + if (sourceNodeObj == null) + { + e.Handled = true; + return; + } + var destNode = this.treeList1.GetNodeByCP(e.Location); + if (destNode == null) + { + e.Handled = true; + return; + } + var destNodeObj = this.treeList1.GetDataRecordByNode(destNode) as AssetsCoolingSeriesMgrViewModel; + if (destNode == null) + { + e.Handled = true; + return; + } + + long id = sourceNodeObj.ID; + long parentId = 0; + int sortCode = 0; + + var sorters = new List<Yw.Vmo.Sorter>(); + + if (e.InsertType == InsertType.Before) + { + parentId = destNodeObj.ParentID; + sortCode = destNodeObj.SortCode; + _allBindingList.ForEach(x => + { + if (x.ParentID == destNodeObj.ParentID) + { + if (x.SortCode >= destNodeObj.SortCode) + { + if (x != sourceNodeObj) + { + sorters.Add(new Yw.Vmo.Sorter() { ID = x.ID, SortCode = x.SortCode + 1 }); + } + } + } + }); + } + else if (e.InsertType == InsertType.After) + { + parentId = destNodeObj.ParentID; + sortCode = destNodeObj.SortCode + 1; + _allBindingList.ForEach(x => + { + if (x.ParentID == destNodeObj.ParentID) + { + if (x.SortCode > destNodeObj.SortCode) + { + if (x != sourceNodeObj) + { + sorters.Add(new Yw.Vmo.Sorter() { ID = x.ID, SortCode = x.SortCode + 1 }); + } + } + } + }); + } + else if (e.InsertType == InsertType.AsChild) + { + parentId = destNodeObj.ID; + var allChildList = _allBindingList.Where(x => x.ParentID == destNodeObj.ParentID).ToList(); + sortCode = allChildList.Count < 1 ? 1 : allChildList.Max(x => x.SortCode) + 1; + } + else + { + e.Handled = true; + return; + } + + var bll = BLLFactory<HStation.BLL.AssetsCoolingSeries>.Instance; + var bol = await bll.UpdateTreeSortCode(id, parentId, sortCode); + if (!bol) + { + e.Handled = true; + return; + } + if (sorters != null && sorters.Count > 0) + { + bol = await bll.UpdateSorter(sorters); + if (!bol) + { + e.Handled = true; + return; + } + } + + _allBindingList.ForEach(x => + { + if (x.ID == id) + { + x.ParentID = parentId; + x.SortCode = sortCode; + } + if (sorters.Count > 0) + { + var sorter = sorters.Find(t => t.ID == x.ID); + if (sorter != null) + { + x.SortCode = sorter.SortCode; + } + } + }); + } + + //鎷栨嫿鎺掑簭 + private void barCkDrag_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + this.SetDragEnable(this.barCkDrag.Checked); + } + + //璁剧疆鎷栧姩鍙敤鎬� + private void SetDragEnable(bool allowDrag) + { + var be = this.behaviorManager1.GetBehavior<DevExpress.Utils.DragDrop.DragDropBehavior>(this.treeList1); + be.Properties.AllowDrag = allowDrag; + } + + #endregion 鎷栨嫿 } } \ No newline at end of file -- Gitblit v1.9.3