cloudflight
2024-12-24 97a43bf839f59cdda1641d61706e6e71a0c5e172
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/18-exchanger/AssetsExchangerSingleMatchingCtrl.cs
@@ -1,4 +1,6 @@
using DevExpress.XtraEditors;
using DevExpress.XtraBars.Ribbon.Drawing;
using DevExpress.XtraEditors;
using DevExpress.XtraMap;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@@ -18,19 +20,36 @@
            InitializeComponent();
            this.layoutControl1.SetupLayoutControl();
            this.gridView1.SetLimitView();
            this.gridView1.RegistCustomDrawCell();
            this.gridView1.RegistCustomDrawCell(Color.BurlyWood, Color.White);
            this.generalSearchCtrl1.SearchEvent += Search;
            this.generalSearchCtrl1.ClearEvent += Clear;
            this.phartDiagramRelationGridViewCtrl1.SelectDataEvent += SelectData;
        }
        public List<AssetsExchangerSingleMatchingViewModel> _allList = null;//所有列表
        private List<AssetsExchangerSingleMatchingViewModel> _allBindingList = null;//所有绑定列表
        private AssetsExchangerMainVmo _selected = null;//当前选中
        private AssetsExchangerSingleMatchingViewModel _row;
        private ExchangerMatchingViewModel _viewModel;
        private long _curveDbId;
        public class ExchangerMatchingViewModel
        {
            public ExchangerMatchingViewModel()
            {
            }
            public AssetsExchangerMainVmo Vmo { get; set; }
            public string MatchingCurveDbId { get; set; }
            public List<HydroCurvePointViewModel> MatchingCurve { get; set; }
        }
        /// <summary>
        /// 绑定数据
        /// </summary>
        public async void SetBindingData(string dbId)
        public async void SetBindingData(string dbId, string curveDbId)
        {
            var allList = await BLLFactory<HStation.BLL.AssetsExchangerMain>.Instance.GetAll();
            _allList = new List<AssetsExchangerSingleMatchingViewModel>();
@@ -40,20 +59,22 @@
                var item = allList?.Find(x => x.ID == id);
                _selected = item;
            }
            if (long.TryParse(curveDbId, out long curveId))
            {
                _curveDbId = curveId;
            }
            Search();
            await Task.Delay(300);
            if (_selected != null)
            {
                if (_allBindingList != null && _allBindingList.Count > 0)
                {
                    await Task.Run(() =>
                     {
                         var dataSourceIndex = _allBindingList.FindIndex(x => x.Vmo == _selected);
                         if (dataSourceIndex >= 0)
                         {
                             var rowIndex = this.gridView1.GetRowHandle(dataSourceIndex);
                             this.gridView1.FocusedRowHandle = rowIndex;
                         }
                     });
                    var dataSourceIndex = _allBindingList.FindIndex(x => x.Vmo == _selected);
                    if (dataSourceIndex >= 0)
                    {
                        var rowIndex = this.gridView1.GetRowHandle(dataSourceIndex);
                        this.gridView1.FocusedRowHandle = rowIndex;
                    }
                }
            }
        }
@@ -99,28 +120,46 @@
        /// <summary>
        /// 获取
        /// </summary>
        public AssetsExchangerMainVmo Get()
        public ExchangerMatchingViewModel Get()
        {
            var vm = this.gridView1.GetFocusedRow() as AssetsExchangerSingleMatchingViewModel;
            if (vm == null)
            {
                return default;
            }
            return vm.Vmo;
            /*            var vm = this.gridView1.GetFocusedRow() as AssetsExchangerSingleMatchingViewModel;
                        if (vm == null)
                        {
                            return default;
                        }
                        _viewModel.Vmo = vm;
            */
            return _viewModel;
        }
        //聚焦改变
        private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            _viewModel = new ExchangerMatchingViewModel();
            var row = this.gridView1.GetFocusedRow() as AssetsExchangerSingleMatchingViewModel;
            if (row == null)
            {
                return;
            }
            this.phartDiagramRelationGridViewCtrl1.SetBindingData(HStation.Assets.DataType.ExchangerMain, row.Vmo.ID);
            _row = row;
            _viewModel.Vmo = row.Vmo;
            this.phartDiagramRelationGridViewCtrl1.SetBindingData(HStation.Assets.DataType.ExchangerMain, row.Vmo.ID, _curveDbId);
        }
        //曲线数据关联变化
        private void SelectData(PhartDiagramRelationExtensionsVmo def)
        {
            if (def != null)
            {
                _viewModel.MatchingCurveDbId = def.ID.ToString();
                var curve = def.Diagram.GraphList[0].GetFeatPointList();
                _viewModel.MatchingCurve = new List<HydroCurvePointViewModel>();
                foreach (var item in curve)
                {
                    _viewModel.MatchingCurve.Add(new HydroCurvePointViewModel(item.X, item.Y));
                }
            }
        }
    }
}
}