From c22cc4c60e9ff156fc25b39a5c024cc758df354b Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期一, 30 十二月 2024 09:40:51 +0800
Subject: [PATCH] 水力模块联动修改

---
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/04-monitor/02-value/SimulationMonitorValueHelper.cs |  120 +++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 79 insertions(+), 41 deletions(-)

diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/04-monitor/02-value/SimulationMonitorValueHelper.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/04-monitor/02-value/SimulationMonitorValueHelper.cs
index 5cd37ed..1d7ab45 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/04-monitor/02-value/SimulationMonitorValueHelper.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/04-monitor/02-value/SimulationMonitorValueHelper.cs
@@ -1,4 +1,6 @@
-锘縰sing Yw.Vmo;
+锘縰sing DevExpress.Xpo.Helpers;
+using Yw.Hydro;
+using Yw.Vmo;
 
 namespace HStation.WinFrmUI
 {
@@ -10,84 +12,120 @@
         /// <summary>
         /// 
         /// </summary>
-        public SimulationMonitorValueHelper(SimulationVisualListHelper visualListHelper, SimulationMonitorHelper monitorHelper)
+        public SimulationMonitorValueHelper
+            (
+                SimulationVisualListHelper visualListHelper,
+                SimulationMonitorHelper monitorHelper,
+                SimulationCalcuResultHelper calcuResultHelper
+            )
         {
             _visualListHelper = visualListHelper;
             _monitorHelper = monitorHelper;
+            _calcuResultHelper = calcuResultHelper;
+            _calcuResultHelper.InitialEvent += async () => await Update();
         }
 
-        private SimulationVisualListHelper _visualListHelper = null;//鍙鍒楄〃杈呭姪绫�
-        private SimulationMonitorHelper _monitorHelper = null;//鐩戞祴鐐硅緟鍔╃被     
-        private List<HydroMonitorValueViewModel> _allMonitorValueList = null;//鎵�鏈夌洃娴嬪�煎垪琛�
+        private readonly SimulationVisualListHelper _visualListHelper = null;//鍙鍒楄〃杈呭姪绫�
+        private readonly SimulationMonitorHelper _monitorHelper = null;//鐩戞祴鐐硅緟鍔╃被     
+        private readonly SimulationCalcuResultHelper _calcuResultHelper = null;//璁$畻缁撴灉杈呭姪绫�
+        private List<HydroMonitorValueViewModel> _allList = null;//鎵�鏈夌洃娴嬪�煎垪琛�
 
         /// <summary>
-        /// 鑾峰彇
+        /// 鑾峰彇鎵�鏈�
         /// </summary>
-        public async Task<List<HydroMonitorValueViewModel>> Get()
+        public async Task<List<HydroMonitorValueViewModel>> GetAll()
         {
-            if (_allMonitorValueList == null)
+            if (_allList == null)
             {
-                _allMonitorValueList = new List<HydroMonitorValueViewModel>();
+                _allList = new List<HydroMonitorValueViewModel>();
                 var allVisualDict = _visualListHelper.GetVisualDict();
                 if (allVisualDict != null && allVisualDict.Count > 0)
                 {
-                    var allMonitorList = await _monitorHelper.Get();
+                    var allMonitorList = await _monitorHelper.GetAll();
                     if (allMonitorList != null && allMonitorList.Count > 0)
                     {
                         foreach (var monitor in allMonitorList)
                         {
-                            if (allVisualDict.ContainsKey(monitor.Relation))
+                            if (allVisualDict.ContainsKey(monitor.Parter))
                             {
-                                var visual = allVisualDict[monitor.Relation];
-                                var vm = new HydroMonitorValueViewModel(monitor, visual);
-                                _allMonitorValueList.Add(vm);
+                                var visual = allVisualDict[monitor.Parter];
+                                double? propValue = null;
+                                var calcuVisualResult = _calcuResultHelper.GetVisual(monitor.Parter);
+                                if (calcuVisualResult != null)
+                                {
+                                    propValue = calcuVisualResult.GetCalcuValue(monitor.PropName);
+                                }
+                                var vm = new HydroMonitorValueViewModel(monitor, visual, propValue);
+                                _allList.Add(vm);
                             }
                         }
                     }
                 }
             }
-            return _allMonitorValueList;
+            return _allList;
+        }
+
+        /// <summary>
+        /// 鑾峰彇瀵规帴鍒楄〃
+        /// </summary>
+        public async Task<List<HydroMonitorValueViewModel>> GetDockingList()
+        {
+            var all = await GetAll();
+            return all.Where(x => x.Vmo.SourceType == eSourceType.Docking).ToList();
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍒嗘瀽鍒楄〃
+        /// </summary>
+        public async Task<List<HydroMonitorValueViewModel>> GetAnalyseList()
+        {
+            var all = await GetAll();
+            return all.Where(x => x.Vmo.SourceType == eSourceType.Analyse).ToList();
         }
 
         /// <summary>
         /// 鏇存柊
         /// </summary>
-        public async void Update(string code, List<HydroMonitorVmo> monitorList)
+        public async Task Update()
         {
-            var visual = _visualListHelper.GetVisual(code);
-            if (visual == null)
+            var all = await GetAll();
+            foreach (var item in all)
             {
-                return;
+                if (!item.PropValue.HasValue)
+                {
+                    var calcuVisualResult = _calcuResultHelper.GetVisual(item.Vmo.Parter);
+                    if (calcuVisualResult != null)
+                    {
+                        var propValue = calcuVisualResult.GetCalcuValue(item.Vmo.PropName);
+                        if (propValue.HasValue)
+                        {
+                            item.UpdatePropValue(propValue.Value);
+                        }
+                    }
+                }
             }
+        }
 
-            var allMonitorValueList = await Get();
-            var monitorValueList = allMonitorValueList.Where(x => x.Vmo.Relation == code).ToList();
-            monitorValueList?.ForEach(x =>
+        /// <summary>
+        /// 鏇存柊
+        /// </summary>
+        public async Task Update(string code, eSourceType sourceType, List<HydroMonitorValueViewModel> valueList)
+        {
+            var all = await GetAll();
+            all.RemoveAll(x => x.Vmo.Parter == code && x.Vmo.SourceType == sourceType);
+            if (valueList != null && valueList.Count > 0)
             {
-                var result = monitorList?.Exists(t => t.Relation == x.Vmo.Relation && t.PropName == x.Vmo.PropName);
-                if (!(result.HasValue && result.Value))
-                {
-                    allMonitorValueList.Remove(x);
-                }
-            });
-            monitorList?.ForEach(x =>
-            {
-                var result = monitorValueList?.Exists(t => t.Vmo.Relation == x.Relation && t.Vmo.PropName == x.PropName);
-                if (!(result.HasValue && result.Value))
-                {
-                    var vm = new HydroMonitorValueViewModel(x, visual);
-                    allMonitorValueList.Add(vm);
-                }
-            });
+                all.AddRange(valueList);
+            }
         }
 
         /// <summary>
         /// 閲嶇疆
         /// </summary>
-        public async void Reset(List<HydroWorkingMonitorViewModel> allWorkingMonitorList)
+        public async Task Reset(List<HydroWorkingMonitorViewModel> allWorkingMonitorList)
         {
-            var allMonitorValueList = await Get();
-            allMonitorValueList.UpdateMonitorValue(allWorkingMonitorList);
+            var all = await GetAll();
+            all.UpdateMonitorValue(allWorkingMonitorList);
         }
 
         /// <summary>
@@ -95,7 +133,7 @@
         /// </summary>
         public async void Reset(string monitorInfo)
         {
-            var allMonitorValueList = await Get();
+            var allMonitorValueList = await GetAll();
             allMonitorValueList.UpdateMonitorValue(monitorInfo);
         }
 

--
Gitblit v1.9.3