lixiaojun
2024-12-17 a2ad15911dcde2d45cd546d5b8d7fb791f7afafd
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
namespace Yw.WinFrmUI
{
    public partial class SetHydroMonitorListCtrl : DevExpress.XtraEditors.XtraUserControl
    {
        public SetHydroMonitorListCtrl()
        {
            InitializeComponent();
            this.gridView1.SetNormalEditView(30);
            this.colRelation.OptionsColumn.AllowEdit = false;
            this.colPropName.OptionsColumn.AllowEdit = false;
            InitialFlags();
        }
 
        private Yw.Model.HydroModelInfo _hydroInfo = null;//水力信息
        private Yw.Model.HydroVisualInfo _visualInfo = null;//构件信息
        private BindingList<SetHydroMonitorViewModel> _allBindingList = null;//所有绑定列表
 
        /// <summary>
        /// 绑定数据
        /// </summary>
        public void SetBindingData
            (
                Yw.Model.HydroModelInfo hydroInfo,
                Yw.Model.HydroVisualInfo visualInfo,
                List<HydroMonitorVmo> allMonitorList
            )
        {
            _hydroInfo = hydroInfo;
            _visualInfo = visualInfo;
            _allBindingList = new BindingList<SetHydroMonitorViewModel>();
            if (hydroInfo != null)
            {
                if (visualInfo != null)
                {
                    var propList = HydroMonitorPropHelper.GetNameDict(visualInfo.Catalog);
                    if (propList != null && propList.Count > 0)
                    {
                        var sortCode = allMonitorList == null || allMonitorList.Count < 1 ? 0 : allMonitorList.Max(x => x.SortCode);
                        foreach (var prop in propList)
                        {
                            var vmo = allMonitorList?.Find(x => x.ModelID == hydroInfo.ID && x.Relation == visualInfo.Code && x.PropName == prop.Key);
                            if (vmo == null)
                            {
                                sortCode++;
                                vmo = new HydroMonitorVmo()
                                {
                                    ID = 0,
                                    ModelID = hydroInfo.ID,
                                    Relation = visualInfo.Code,
                                    PropName = prop.Key,
                                    SortCode = sortCode,
                                    Description = string.Empty
                                };
                            }
                            var vm = new SetHydroMonitorViewModel(vmo, visualInfo, prop.Value);
                            _allBindingList.Add(vm);
                        }
                    }
                }
            }
            this.setHydroMonitorViewModelBindingSource.DataSource = _allBindingList;
            this.setHydroMonitorViewModelBindingSource.ResetBindings(false);
        }
 
        private async void InitialFlags()
        {
            var flags = await BLLFactory<Yw.BLL.SysFlag>.Instance.GetBySysType(Yw.Hydro.DataType.HydroMonitor);
            this.repositoryItemCheckedComboBoxEdit1.Items.BeginUpdate();
            this.repositoryItemCheckedComboBoxEdit1.Items.Clear();
            if (flags != null && flags.Count > 0)
            {
                foreach (var flag in flags)
                {
                    this.repositoryItemCheckedComboBoxEdit1.Items.Add(flag.Name);
                }
            }
            this.repositoryItemCheckedComboBoxEdit1.Items.EndUpdate();
        }
 
        /// <summary>
        /// 获取监测列表
        /// </summary>
        public List<HydroMonitorVmo> GetMonitorList()
        {
            var list = _allBindingList?.Where(x => x.Checked).ToList();
            list?.ForEach(x =>
            {
                x.Vmo.Flags = HydroFlagsHelper.ToList(x.Flags);
                x.Vmo.Description = x.Description;
            });
            return list?.Select(x => x.Vmo).ToList();
        }
 
 
    }
}