lixiaojun
2024-12-10 31a8e93cf1cc708b68456b88aa5b0031a41eb47a
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/04-working/SimulationPumpSingleWorkingChartCtrl.cs
@@ -25,25 +25,46 @@
        private HydroWorkingVmo _working = null;
        private Yw.Model.HydroModelInfo _hydroInfo = null;
        private List<HydroMonitorVmo> _allMonitorList = null;
        private Dictionary<string, HydroCalcuVisualResult> _allCalcuResultVisualDict = null;
        /// <summary>
        /// 绑定数据
        /// </summary>
        public void SetBindingData
            (HydroWorkingVmo working, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuResult calcuResult)
            (
                HydroWorkingVmo working,
                Yw.Model.HydroModelInfo hydroInfo,
                List<HydroMonitorVmo> allMonitorList,
                HydroCalcuResult calcuResult
            )
        {
            var allCalcuResultVisualDict = calcuResult.GetVisualDict();
            SetBindingData(working, hydroInfo, allCalcuResultVisualDict);
            SetBindingData(working, hydroInfo, allMonitorList, allCalcuResultVisualDict);
        }
        /// <summary>
        /// 绑定数据
        /// </summary>
        public void SetBindingData
            (HydroWorkingVmo working, Yw.Model.HydroModelInfo hydroInfo, Dictionary<string, HydroCalcuVisualResult> allCalcuResultVisualDict)
            (
                HydroWorkingVmo working,
                Yw.Model.HydroModelInfo hydroInfo,
                List<HydroMonitorVmo> allMonitorList,
                Dictionary<string, HydroCalcuVisualResult> allCalcuResultVisualDict
            )
        {
            _working = working;
            _hydroInfo = hydroInfo;
            _allMonitorList = allMonitorList;
            _allCalcuResultVisualDict = allCalcuResultVisualDict;
            var vm = CreateViewModel();
            SetBindingData(vm);
        }
        /// <summary>
        /// 绑定数据
        /// </summary>
        public void SetBindingData(PumpWorkingViewViewModel vm)
        {
            this.pumpWorkingViewChart1.SetBindingData(vm);
@@ -54,8 +75,6 @@
            }
            this.barCkE.Checked = this.pumpWorkingViewChart1.QEVisible;
        }
        //创建
        private PumpWorkingViewViewModel CreateViewModel()
@@ -78,7 +97,89 @@
            vm.CurveName = $"装置线";
            vm.Color = Color.Black;
            vm.StartH = 2;
            var startSourceMonitor = _allMonitorList?
                .Matching(HydroVisualCalcuProp.CalcuHead, new List<string>()
                { HStation.Xhs.Flags.水源,HStation.Xhs.Flags.始端,HStation.Xhs.Flags.默认});
            if (startSourceMonitor == null)
            {
                startSourceMonitor = _allMonitorList?
                .Matching(HydroVisualCalcuProp.CalcuHead, new List<string>()
                { HStation.Xhs.Flags.水源,HStation.Xhs.Flags.始端});
            }
            if (startSourceMonitor != null)
            {
                var startSourceCalcuResult = _allCalcuResultVisualDict?.GetValue(startSourceMonitor.Relation);
                if (startSourceCalcuResult != null)
                {
                    var startHead = startSourceCalcuResult.GetCalcuValue(startSourceMonitor.PropName);
                    if (startHead.HasValue)
                    {
                        var endSourceMonitor = _allMonitorList?
                                    .Matching(HydroVisualCalcuProp.CalcuHead, new List<string>()
                                    { HStation.Xhs.Flags.水源,HStation.Xhs.Flags.末端,HStation.Xhs.Flags.默认});
                        if (endSourceMonitor == null)
                        {
                            endSourceMonitor = _allMonitorList?
                                        .Matching(HydroVisualCalcuProp.CalcuHead, new List<string>()
                                        { HStation.Xhs.Flags.水源,HStation.Xhs.Flags.末端});
                        }
                        if (endSourceMonitor != null)
                        {
                            var endSouceCalcuResult = _allCalcuResultVisualDict?.GetValue(endSourceMonitor.Relation);
                            if (endSouceCalcuResult != null)
                            {
                                var endHead = endSouceCalcuResult.GetCalcuValue(endSourceMonitor.PropName);
                                if (endHead.HasValue)
                                {
                                    vm.StartH = Math.Round(endHead.Value - startHead.Value, 2);
                                }
                            }
                        }
                    }
                }
            }
            var outPipeFlowMonitor = _allMonitorList?.Matching(HydroVisualCalcuProp.CalcuFlow, new List<string>()
                            { HStation.Xhs.Flags.总管,HStation.Xhs.Flags.出口,HStation.Xhs.Flags.默认});
            if (outPipeFlowMonitor == null)
            {
                outPipeFlowMonitor = _allMonitorList?.Matching(HydroVisualCalcuProp.CalcuFlow, new List<string>()
                        { HStation.Xhs.Flags.总管,HStation.Xhs.Flags.出口});
            }
            if (outPipeFlowMonitor != null)
            {
                var outPipeFlowCalcuResult = _allCalcuResultVisualDict?.GetValue(outPipeFlowMonitor.Relation);
                if (outPipeFlowCalcuResult != null)
                {
                    var outPipeFlow = outPipeFlowCalcuResult.GetCalcuValue(outPipeFlowMonitor.PropName);
                    if (outPipeFlow.HasValue)
                    {
                        vm.PipeQ = Math.Round(outPipeFlow.Value, 1);
                    }
                }
            }
            var outPipeHeadMonitor = _allMonitorList?.Matching(HydroVisualCalcuProp.CalcuHead, new List<string>()
                            { HStation.Xhs.Flags.总管,HStation.Xhs.Flags.出口,HStation.Xhs.Flags.默认});
            if (outPipeHeadMonitor == null)
            {
                outPipeHeadMonitor = _allMonitorList?.Matching(HydroVisualCalcuProp.CalcuHead, new List<string>()
                            { HStation.Xhs.Flags.总管,HStation.Xhs.Flags.出口});
            }
            if (outPipeHeadMonitor != null)
            {
                var outPipeHeadCalcuResult = _allCalcuResultVisualDict?.GetValue(outPipeHeadMonitor.Relation);
                if (outPipeHeadCalcuResult != null)
                {
                    var outPipeHead = outPipeHeadCalcuResult.GetCalcuValue(outPipeHeadMonitor.PropName);
                    if (outPipeHead.HasValue)
                    {
                        vm.PipeH = Math.Round(outPipeHead.Value, 2);
                    }
                }
            }
            if (_hydroInfo.Pumps != null && _hydroInfo.Pumps.Count > 0)
            {
@@ -140,9 +241,6 @@
                        }
                    }
                    vm.PipeQ = vm.Items.Sum(t => t.Q);
                    vm.PipeH = vm.Items.Max(t => t.H);
                }
            }
@@ -176,5 +274,7 @@
        {
            this.pumpWorkingViewChart1.SetChartAxis();
        }
    }
}