duheng
2024-12-22 51e66d3bc5ef0fe491800ccdce292a8d58300efa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
using DevExpress.XtraCharts;
using HStation.WinFrmUI.PhartRelation;
using System.Windows.Input;
 
namespace HStation.WinFrmUI
{
    public partial class PumpSingleMatchingCtrl : DevExpress.XtraEditors.XtraUserControl
    {
        public PumpSingleMatchingCtrl()
        {
            InitializeComponent();
            this.gridView1.SetNormalView();
            this.gridView2.SetNormalView();
        }
 
        private List<PumpSingleMatchingViewModel> _allBindingList = null;
 
        private BLL.AssetsPumpMain _pumpBll = null;
 
        private List<PhartViewModel> _allPhartList = null;
        private readonly Lazy<BLL.PhartDiagramRelation> _bll_ex = new();
 
        private HydroPumpMatchingViewModel _pumpMatchingViewModel;
 
        public async void SetBindingData(HydroPumpMatchingViewModel pumpMatchingViewModel)
        {
            _pumpMatchingViewModel = pumpMatchingViewModel;
            _allBindingList = new List<PumpSingleMatchingViewModel>();
            _pumpBll = new BLL.AssetsPumpMain();
            var allAssetsPumpMain = await _pumpBll.GetAll();
            foreach (var Main in allAssetsPumpMain)
            {
                _allBindingList.Add(new PumpSingleMatchingViewModel(Main));
            }
            this.gridControl2.DataSource = _allBindingList;
            this.searchControl1.Text = pumpMatchingViewModel.ModelType;
            for (int i = 0; i < _allBindingList.Count; i++)
            {
                if (long.TryParse(pumpMatchingViewModel.DbId, out long dbID))
                {
                    if (_allBindingList[i].ID == dbID)
                    {
                        gridView2.FocusedRowHandle = i;
                    }
                }
            }
        }
 
        //初始化图表数据
        private void InitChart(Yw.Vmo.PhartDiagramExGraphListVmo vmo, double speed = 0)
        {
            this.pumpChartViewCtrl1.SetBindingData(vmo, speed);
        }
 
        //泵型号列表选择项切换事件
        private async void gridView2_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            var vm = this.gridView2.GetCurrentViewModel(_allBindingList);
            if (vm != null)
            {
                _pumpMatchingViewModel.MatchingDbId = vm.ID.ToString();
                _pumpMatchingViewModel.MatchingModelType = vm.Name.ToString();
                _pumpMatchingViewModel.MatchingRatedH = vm.RatedHead;
                _pumpMatchingViewModel.MatchingRatedN = vm.RatedSpeed;
                _pumpMatchingViewModel.MatchingRatedP = vm.RatedPower;
                _pumpMatchingViewModel.MatchingRatedQ = vm.RatedFlow;
                var list = await BLLFactory<HStation.BLL.PhartDiagramRelation>.Instance
                 .GetByObjectTypeAndObjectID(HStation.Assets.DataType.PumpMain, vm.ID);
                _allPhartList = new List<PhartViewModel>();
                if (list != null && list.Any())
                {
                    foreach (var item in list)
                    {
                        _allPhartList.Add(new PhartViewModel { ID = item.ID, OtherName = item.OtherName, Importance = item.Importance, SortCode = item.SortCode, DiagramID = item.DiagramID });
                    }
                }
            }
            this.phartViewModelBindingSource.DataSource = _allPhartList;
            if (_pumpMatchingViewModel.CurveDbId != null)
            {
                for (int i = 0; i < _allPhartList.Count; i++)
                {
                    if (_allPhartList[i].ID.ToString() == _pumpMatchingViewModel.CurveDbId)
                    {
                        gridView1.FocusedRowHandle = i;
                    }
                }
            }
            this.phartViewModelBindingSource.ResetBindings(false);
        }
 
        //曲线列表选择项切换事件
        private async void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            var vm = this.gridView1.GetCurrentViewModel(_allPhartList);
            if (vm != null)
            {
                var list = Task.Run(async () => await new BLL.PhartDiagramRelation().GetExByObjectTypeAndObjectID(HStation.Assets.DataType.PumpMain, vm.ID)).Result;
                if (list != null && list.Count > 0)
                {
                    var def = list.OrderByDescending(x => x.Importance).First();
                    _pumpMatchingViewModel.MatchingCurveDbId = def.ID.ToString();
                    var diagram = def.Diagram.GetDefaultVmo();
                    var qh = diagram.QH.GetFeatPointList();
                    var qp = diagram.QP.GetFeatPointList();
                    var qe = diagram.QE.GetFeatPointList();
                    _pumpMatchingViewModel.MatchingCurveQH = new List<HydroCurvePointViewModel>();
                    _pumpMatchingViewModel.MatchingCurveQP = new List<HydroCurvePointViewModel>();
                    _pumpMatchingViewModel.MatchingCurveQE = new List<HydroCurvePointViewModel>();
                    foreach (var item in qh)
                    {
                        _pumpMatchingViewModel.MatchingCurveQH.Add(new HydroCurvePointViewModel(item.X, item.Y));
                    }
                    foreach (var item in qp)
                    {
                        _pumpMatchingViewModel.MatchingCurveQP.Add(new HydroCurvePointViewModel(item.X, item.Y));
                    }
                    foreach (var item in qe)
                    {
                        _pumpMatchingViewModel.MatchingCurveQE.Add(new HydroCurvePointViewModel(item.X, item.Y));
                    }
                }
                var vmo = await BLLFactory<Yw.BLL.PhartDiagramExtensions>.Instance.GetByID(vm.DiagramID);
                InitChart(vmo);
                return;
            }
            this.pumpChartViewCtrl1.SetBindingData(null, 0);
        }
    }
}