| | |
| | | { |
| | | InitializeComponent(); |
| | | |
| | | this.hydroParterPropertyCtrl1.ViewCurveEvent += HydroParterPropertyCtrl1_ViewCurveEvent; |
| | | this.hydroParterPropertyCtrl1.SetCurveEvent += HydroParterPropertyCtrl1_SetCurveEvent; |
| | | this.hydroParterPropertyCtrl1.SetPatternEvent += HydroParterPropertyCtrl1_SetPatternEvent; |
| | | this.hydroParterPropertyCtrl1.PropertyValueChangedEvent += HydroParterPropertyCtrl1_PropertyValueChangedEvent; |
| | | this.hydroParterPropertyCtrl1.PropertyValueChangingEvent += HydroParterPropertyCtrl1_PropertyValueChangingEvent; |
| | | this.hydroParterPropertyCtrl1.MatchingDbEvent += HydroParterPropertyCtrl1_MatchingDbEvent; |
| | | this.hydroParterPropertyCtrl1.SetCurveEvent += HydroParterPropertyCtrl1_SetCurveEvent; |
| | | this.hydroParterPropertyCtrl1.SetPatternEvent += HydroParterPropertyCtrl1_SetPatternEvent; |
| | | this.hydroParterPropertyCtrl1.BlinkLinkParterEvent += HydroParterPropertyCtrl1_BlinkLinkParterEvent; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 强调连接组件事件 |
| | | /// 第一个参数为组件Code |
| | | /// 第二个参数为连接组件Code |
| | | /// </summary> |
| | | public event Action<string, string> BlinkLinkParterEvent; |
| | | |
| | | /// <summary> |
| | | /// 属性值改变事件 |
| | | /// </summary> |
| | | public event Func<Yw.Model.HydroParterInfo, bool> PropertyValueChangedEvent; |
| | | |
| | | //水力信息方法 |
| | | private Func<Yw.Model.HydroModelInfo> _hydroInfoFunc = null; |
| | | private Func<List<HydroCalcuResult>> _allHydroCalcuResultListFunc = null; |
| | | |
| | | /// <summary> |
| | | /// 初始化数据 |
| | | /// </summary> |
| | | public void InitialData(Func<Yw.Model.HydroModelInfo> hydroInfoFunc) |
| | | public void InitialData(Func<Yw.Model.HydroModelInfo> hydroInfoFunc, Func<List<HydroCalcuResult>> allHydroCalcuResultListFunc) |
| | | { |
| | | _hydroInfoFunc = hydroInfoFunc; |
| | | _allHydroCalcuResultListFunc = allHydroCalcuResultListFunc; |
| | | this.hydroParterPropertyCtrl1.InitialData(hydroInfoFunc); |
| | | } |
| | | |
| | | //获取水力信息 |
| | | private Yw.Model.HydroModelInfo GetHydroInfo() |
| | | { |
| | | var hydroInfo = _hydroInfoFunc?.Invoke(); |
| | | if (hydroInfo == null) |
| | | { |
| | | this.hydroParterPropertyCtrl1.SelectedObject = null; |
| | | return default; |
| | | } |
| | | return hydroInfo; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | public void SelectParter(long id) |
| | | { |
| | | var hydroInfo = _hydroInfoFunc?.Invoke(); |
| | | var hydroInfo = GetHydroInfo(); |
| | | if (hydroInfo == null) |
| | | { |
| | | this.hydroParterPropertyCtrl1.SelectedObject = null; |
| | | return; |
| | | } |
| | | var allParterList = hydroInfo.GetAllParters(); |
| | | var parter = allParterList.Find(x => x.ID == id); |
| | | var vm = Yw.WinFrmUI.HydroParterPropertyViewModelBuilder.CreateViewModel(parter, allParterList); |
| | | this.hydroParterPropertyCtrl1.SelectedObject = vm; |
| | | var parter = allParterList?.Find(x => x.ID == id); |
| | | SelectParter(parter); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | public void SelectParter(string code) |
| | | { |
| | | var hydroInfo = _hydroInfoFunc?.Invoke(); |
| | | var hydroInfo = GetHydroInfo(); |
| | | if (hydroInfo == null) |
| | | { |
| | | this.hydroParterPropertyCtrl1.SelectedObject = null; |
| | | return; |
| | | } |
| | | var allParterList = hydroInfo.GetAllParters(); |
| | | var parter = allParterList.Find(x => x.Code == code); |
| | | var vm = Yw.WinFrmUI.HydroParterPropertyViewModelBuilder.CreateViewModel(parter, allParterList); |
| | | this.hydroParterPropertyCtrl1.SelectedObject = vm; |
| | | var parter = allParterList?.Find(x => x.Code == code); |
| | | SelectParter(parter); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 选择组件 |
| | | /// </summary> |
| | | public void SelectParter(Yw.Model.HydroParterInfo parter, List<Yw.Model.HydroParterInfo> allParterList) |
| | | public void SelectParter(Yw.Model.HydroParterInfo parter) |
| | | { |
| | | var vm = Yw.WinFrmUI.HydroParterPropertyViewModelBuilder.CreateViewModel(parter, allParterList); |
| | | this.hydroParterPropertyCtrl1.SelectedObject = vm; |
| | | var hydroInfo = GetHydroInfo(); |
| | | if (hydroInfo == null) |
| | | { |
| | | return; |
| | | } |
| | | if (parter != null) |
| | | { |
| | | var vm = Yw.WinFrmUI.HydroParterViewModelBuilder.CreateViewModel(parter, hydroInfo); |
| | | this.hydroParterPropertyCtrl1.SelectedObject = vm; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 更新计算属性 |
| | | /// 取消选择组件 |
| | | /// </summary> |
| | | public void UpdateCalcuProperty(Yw.WinFrmUI.IHydroCalcuResult rhs) |
| | | public void CancelSelectParter() |
| | | { |
| | | this.hydroParterPropertyCtrl1.SelectedObject = null; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 更新属性 |
| | | /// </summary> |
| | | public void UpdateProperty() |
| | | { |
| | | var vm = this.hydroParterPropertyCtrl1.SelectedObject; |
| | | if (vm == null) |
| | | { |
| | | return; |
| | | } |
| | | vm.UpdateCalcuProperty(rhs); |
| | | vm.UpdateProperty(); |
| | | this.hydroParterPropertyCtrl1.UpdateRows(); |
| | | } |
| | | |
| | | //查看曲线 |
| | | private void HydroParterPropertyCtrl1_ViewCurveEvent(Yw.Model.HydroParterInfo parterInfo, string curveType) |
| | | /// <summary> |
| | | /// 更新计算属性 |
| | | /// </summary> |
| | | public void UpdateCalcuProperty(Yw.WinFrmUI.HydroCalcuResult calcuResult) |
| | | { |
| | | if (calcuResult == null) |
| | | { |
| | | return; |
| | | } |
| | | var vm = this.hydroParterPropertyCtrl1.SelectedObject; |
| | | if (vm == null) |
| | | { |
| | | return; |
| | | } |
| | | vm.UpdateCalcuProperty(calcuResult); |
| | | this.hydroParterPropertyCtrl1.UpdateRows(); |
| | | } |
| | | |
| | | //选择曲线 |
| | | private bool HydroParterPropertyCtrl1_SetCurveEvent(HydroParterViewModel propViewModel, string curveType) |
| | | { |
| | | var hydroInfo = _hydroInfoFunc?.Invoke(); |
| | | if (hydroInfo == null) |
| | | { |
| | | return; |
| | | return false; |
| | | } |
| | | switch (curveType) |
| | | { |
| | | case Yw.WinFrmUI.HydroCurve.Pump: |
| | | { |
| | | var pumpInfo = parterInfo as Yw.Model.HydroPumpInfo; |
| | | var curveqh = hydroInfo.Curves?.Find(x => x.Code == pumpInfo.CurveQH); |
| | | if (curveqh == null) |
| | | { |
| | | return; |
| | | } |
| | | var pumpId = string.IsNullOrEmpty(pumpInfo.DbId) ? 0 : Convert.ToInt64(pumpInfo.DbId); |
| | | var curveId = string.IsNullOrEmpty(curveqh.DbId) ? 0 : Convert.ToInt64(curveqh.DbId); |
| | | var speedRatio = pumpInfo.SpeedRatio ?? 1; |
| | | var dlg = new PumpPerform2dViewDlg(); |
| | | dlg.SetBindingData(pumpId, curveId, speedRatio); |
| | | dlg.ShowDialog(); |
| | | } |
| | | break; |
| | | |
| | | case Yw.WinFrmUI.HydroCurve.Valve: |
| | | { |
| | | } |
| | | break; |
| | | |
| | | default: break; |
| | | } |
| | | } |
| | | |
| | | //选择曲线 |
| | | private bool HydroParterPropertyCtrl1_SetCurveEvent(HydroParterPropertyViewModel propViewModel, string curveType) |
| | | { |
| | | switch (curveType) |
| | | { |
| | | case Yw.WinFrmUI.HydroCurve.Pump: |
| | | { |
| | | var hydroInfo = _hydroInfoFunc?.Invoke(); |
| | | if (hydroInfo == null) |
| | | { |
| | | return false; |
| | | } |
| | | var pumpInfo = hydroInfo.Pumps?.Find(x => x.Code == propViewModel.Code); |
| | | |
| | | var input = AssetsMatchingParasHelper.Create(hydroInfo, pumpInfo); |
| | | var dlg = new PumpSingleMatchingDlg(); |
| | | dlg.SetBindingData(input); |
| | | dlg.ReloadDataEvent += (rhs) => |
| | | if (pumpInfo == null) |
| | | { |
| | | var bol = AssetsMatchingParasHelper.Apply(hydroInfo, rhs); |
| | | break; |
| | | } |
| | | var input = AssetsMatchingParasHelper.Create(hydroInfo, pumpInfo, _allHydroCalcuResultListFunc?.Invoke()); |
| | | var dlg = new SinglePumpAnalyDlg(); |
| | | dlg.SetBindindData(input); |
| | | dlg.ReloadDataEvent += (output) => |
| | | { |
| | | var bol = AssetsMatchingParasHelper.Apply(hydroInfo, output); |
| | | if (bol) |
| | | { |
| | | TipFormHelper.ShowSucceed("匹配成功"); |
| | | propViewModel.UpdateProperty(); |
| | | this.hydroParterPropertyCtrl1.UpdateRows(); |
| | | } |
| | | else |
| | | { |
| | | TipFormHelper.ShowWarn("匹配失败"); |
| | | } |
| | | return bol; |
| | | }; |
| | | dlg.ShowDialog(); |
| | | return true; |
| | |
| | | } |
| | | |
| | | //选择模式 |
| | | private bool HydroParterPropertyCtrl1_SetPatternEvent(HydroParterPropertyViewModel propViewModel, string patternType) |
| | | private bool HydroParterPropertyCtrl1_SetPatternEvent(HydroParterViewModel propViewModel, string patternType) |
| | | { |
| | | switch (patternType) |
| | | { |
| | |
| | | } |
| | | |
| | | //属性发生改变 |
| | | private bool HydroParterPropertyCtrl1_PropertyValueChangedEvent(HydroParterPropertyViewModel obj) |
| | | private bool HydroParterPropertyCtrl1_PropertyValueChangedEvent(HydroParterViewModel parterViewModel) |
| | | { |
| | | return false; |
| | | if (parterViewModel == null) |
| | | { |
| | | return false; |
| | | } |
| | | if (this.PropertyValueChangedEvent == null) |
| | | { |
| | | return false; |
| | | } |
| | | return this.PropertyValueChangedEvent.Invoke(parterViewModel.Vmo); |
| | | } |
| | | |
| | | //属性正在发生改变 |
| | | private bool HydroParterPropertyCtrl1_PropertyValueChangingEvent(HydroParterPropertyViewModel arg) |
| | | private bool HydroParterPropertyCtrl1_PropertyValueChangingEvent(HydroParterViewModel arg) |
| | | { |
| | | return false; |
| | | } |
| | | |
| | | //匹配Db事件 |
| | | private void HydroParterPropertyCtrl1_MatchingDbEvent(Yw.Model.HydroParterInfo parter) |
| | | //匹配Db |
| | | private bool HydroParterPropertyCtrl1_MatchingDbEvent(HydroParterViewModel propertyViewModel) |
| | | { |
| | | if (parter == null) |
| | | var bol = false; |
| | | if (propertyViewModel == null) |
| | | { |
| | | return; |
| | | return bol; |
| | | } |
| | | var hydroInfo = _hydroInfoFunc?.Invoke(); |
| | | if (hydroInfo == null) |
| | | { |
| | | return; |
| | | return bol; |
| | | } |
| | | switch (parter.Catalog) |
| | | var catalog = Yw.WinFrmUI.HydroParterCatalogHelper.GetCatalogCode(propertyViewModel.Catalog); |
| | | switch (catalog) |
| | | { |
| | | case Yw.Hydro.ParterCatalog.Pump://水泵 |
| | | { |
| | | var pumpInfo = hydroInfo.Pumps?.Find(x => x.Code == parter.Code); |
| | | var input = AssetsMatchingParasHelper.Create(hydroInfo, pumpInfo); |
| | | |
| | | if (input.DbId != string.Empty) |
| | | var pumpInfo = hydroInfo.Pumps?.Find(x => x.Code == propertyViewModel.Code); |
| | | if (pumpInfo == null) |
| | | { |
| | | var detailDlg = new PumpFullInfoViewDlg(); |
| | | detailDlg.SetBindindData(input); |
| | | detailDlg.ShowDialog(); |
| | | return; |
| | | break; |
| | | } |
| | | |
| | | var input = AssetsMatchingParasHelper.Create(hydroInfo, pumpInfo, _allHydroCalcuResultListFunc?.Invoke()); |
| | | var dlg = new PumpSingleMatchingDlg(); |
| | | dlg.SetBindingData(input); |
| | | dlg.ReloadDataEvent += (rhs) => |
| | | dlg.ReloadDataEvent += (output) => |
| | | { |
| | | var bol = AssetsMatchingParasHelper.Apply(hydroInfo, rhs); |
| | | bol = AssetsMatchingParasHelper.Apply(hydroInfo, output); |
| | | if (bol) |
| | | { |
| | | TipFormHelper.ShowSucceed("匹配成功"); |
| | | } |
| | | else |
| | | { |
| | | TipFormHelper.ShowWarn("匹配失败"); |
| | | propertyViewModel.UpdateProperty(); |
| | | } |
| | | }; |
| | | dlg.ShowDialog(); |
| | | } |
| | | break; |
| | | |
| | | case Yw.Hydro.ParterCatalog.Valve://阀门 |
| | | { |
| | | var valveInfo = hydroInfo.Valves?.Find(x => x.Code == parter.Code); |
| | | var input = AssetsMatchingParasHelper.Create(hydroInfo, valveInfo); |
| | | var valveInfo = hydroInfo.Valves?.Find(x => x.Code == propertyViewModel.Code); |
| | | if (valveInfo == null) |
| | | { |
| | | break; |
| | | } |
| | | var input = AssetsMatchingParasHelper.Create(hydroInfo, valveInfo, _allHydroCalcuResultListFunc?.Invoke()); |
| | | var dlg = new ValveSingleMatchingDlg(); |
| | | dlg.SetBindingData(input); |
| | | dlg.ReloadDataEvent += (rhs) => |
| | | { |
| | | var bol = AssetsMatchingParasHelper.Apply(hydroInfo, rhs); |
| | | if (bol) |
| | | { |
| | | TipFormHelper.ShowSucceed("匹配成功"); |
| | | } |
| | | else |
| | | { |
| | | TipFormHelper.ShowWarn("匹配失败"); |
| | | } |
| | | bol = AssetsMatchingParasHelper.Apply(hydroInfo, rhs); |
| | | }; |
| | | dlg.ShowDialog(); |
| | | } |
| | | break; |
| | | |
| | | case Yw.Hydro.ParterCatalog.Pipe://管道 |
| | | { |
| | | } |
| | | break; |
| | | |
| | | case Yw.Hydro.ParterCatalog.Elbow://弯头 |
| | | { |
| | | var elbowInfo = hydroInfo.Elbows?.Find(x => x.Code == parter.Code); |
| | | var input = AssetsMatchingParasHelper.Create(hydroInfo, elbowInfo); |
| | | var elbowInfo = hydroInfo.Elbows?.Find(x => x.Code == propertyViewModel.Code); |
| | | if (elbowInfo == null) |
| | | { |
| | | break; |
| | | } |
| | | var input = AssetsMatchingParasHelper.Create(hydroInfo, elbowInfo, _allHydroCalcuResultListFunc?.Invoke()); |
| | | var dlg = new ElbowSingMatchingDlg(); |
| | | dlg.SetBindingData(input); |
| | | dlg.ReloadDataEvent += (rhs) => |
| | | dlg.ReloadDataEvent += (output) => |
| | | { |
| | | var bol = AssetsMatchingParasHelper.Apply(hydroInfo, rhs); |
| | | if (bol) |
| | | { |
| | | TipFormHelper.ShowSucceed("匹配成功"); |
| | | } |
| | | else |
| | | { |
| | | TipFormHelper.ShowWarn("匹配失败"); |
| | | } |
| | | bol = AssetsMatchingParasHelper.Apply(hydroInfo, output); |
| | | }; |
| | | dlg.ShowDialog(); |
| | | } |
| | | break; |
| | | |
| | | case Yw.Hydro.ParterCatalog.Threelink://三通 |
| | | { |
| | | } |
| | | break; |
| | | |
| | | case Yw.Hydro.ParterCatalog.Fourlink://四通 |
| | | { |
| | | } |
| | | break; |
| | | default: break; |
| | | } |
| | | return bol; |
| | | } |
| | | |
| | | //强调连接组件 |
| | | private void HydroParterPropertyCtrl1_BlinkLinkParterEvent(string code, string linkCode) |
| | | { |
| | | if (string.IsNullOrEmpty(code)) |
| | | { |
| | | return; |
| | | } |
| | | if (string.IsNullOrEmpty(linkCode)) |
| | | { |
| | | return; |
| | | } |
| | | this.BlinkLinkParterEvent?.Invoke(code, linkCode); |
| | | } |
| | | |
| | | |
| | | } |
| | | } |