From aaac84e4ed86d089c01c5b180e4249db73cc78d7 Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期三, 19 二月 2025 14:08:04 +0800
Subject: [PATCH] 监测分析改造

---
 /dev/null                                                                                             |  268 ----------------------
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyViewModel.cs                   |   20 +
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/02-control/HydroMonitorAnalyListCtrl.resx               |    0 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs       |   26 +
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/02-control/HydroMonitorAnalyListCtrl.cs                 |  327 +++++++++++++++++++++++++++
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj                                         |    3 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyItemViewModel.cs               |   13 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/working/SimulationPrintWorkingViewModel.cs |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyHelper.cs                      |   29 +-
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/02-control/HydroMonitorAnalyListCtrl.Designer.cs        |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user                                    |    3 
 11 files changed, 387 insertions(+), 306 deletions(-)

diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
index e151e1e..369c254 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
@@ -2783,7 +2783,7 @@
                 //姘存车鍒嗘瀽
                 printWorking.PumpAnaly = SimulationPrintPumpAnalyHelper.Create(baseHydroInfoRhs, working, calcuResult, _calcuPressModeIsHead, allEvaluationList);
                 //鐩戞祴鍒嗘瀽
-                printWorking.MonitorAnaly = SimulationPrintMonitorAnalyHelper.Create(baseHydroInfoRhs, allMonitorList, working, calcuResult, _calcuPressModeIsHead, allEvaluationList);
+                printWorking.MonitorAnaly = HydroMonitorAnalyHelper.Create(baseHydroInfoRhs, allMonitorList, working, calcuResult, _calcuPressModeIsHead, allEvaluationList);
                 //鑳借�楀垎鏋�
                 printWorking.EnergyAnaly = HydroEnergyAnalyHelper.Create(baseHydroInfoRhs, working, calcuResult, _calcuPressModeIsHead, allEvaluationList);
                 //鎹熷け缁熻
@@ -2814,7 +2814,7 @@
                     //姘存车鍒嗘瀽
                     printWorking.PumpAnaly = SimulationPrintPumpAnalyHelper.Create(hydroInfoRhs, working, calcuResult, _calcuPressModeIsHead, allEvaluationList);
                     //鐩戞祴鍒嗘瀽
-                    printWorking.MonitorAnaly = SimulationPrintMonitorAnalyHelper.Create(hydroInfoRhs, allMonitorList, working, calcuResult, _calcuPressModeIsHead, allEvaluationList);
+                    printWorking.MonitorAnaly = HydroMonitorAnalyHelper.Create(hydroInfoRhs, allMonitorList, working, calcuResult, _calcuPressModeIsHead, allEvaluationList);
                     //鑳借�楀垎鏋�
                     printWorking.EnergyAnaly = HydroEnergyAnalyHelper.Create(hydroInfoRhs, working, calcuResult, _calcuPressModeIsHead, allEvaluationList);
                     //鎹熷け缁熻
@@ -3040,14 +3040,14 @@
         #region 鐩戞祴鍒嗘瀽
 
         //鐩戞祴鍒嗘瀽鍒楄〃鎺т欢
-        private HydroWorkingMonitorAnalyListCtrl _monitorAnalyListCtrl = null;
+        private HydroMonitorAnalyListCtrl _monitorAnalyListCtrl = null;
 
         //鑾峰彇鐩戞祴鍒嗘瀽鍒楄〃鎺т欢
-        private HydroWorkingMonitorAnalyListCtrl GetMonitorAnalyListCtrl()
+        private HydroMonitorAnalyListCtrl GetMonitorAnalyListCtrl()
         {
             if (_monitorAnalyListCtrl == null)
             {
-                _monitorAnalyListCtrl = new HydroWorkingMonitorAnalyListCtrl();
+                _monitorAnalyListCtrl = new HydroMonitorAnalyListCtrl();
                 _monitorAnalyListCtrl.Dock = DockStyle.Fill;
                 _monitorAnalyListCtrl.HydroViewEvent += (code) =>
                 {
@@ -3067,7 +3067,7 @@
                 {
                     if (this.controlContainerBottom.Controls.Count > 0)
                     {
-                        if (this.controlContainerBottom.Controls[0] is HydroWorkingMonitorAnalyListCtrl)
+                        if (this.controlContainerBottom.Controls[0] is HydroMonitorAnalyListCtrl)
                         {
                             return true;
                         }
@@ -3077,7 +3077,7 @@
             }
         }
 
-        //鏄剧ず鐩戞祴鍊煎垪琛ㄦ帶浠�
+        //鏄剧ず鐩戞祴鍒嗘瀽鍒楄〃鎺т欢
         private async void ShowMonitorAnalyListCtrl()
         {
             if (_hydroInfo == null)
@@ -3094,6 +3094,7 @@
                     return;
                 }
             }
+
             var monitorAnalyListCtrl = GetMonitorAnalyListCtrl();
             if (!IsMonitorAnalyListCtrlVisible)
             {
@@ -3103,14 +3104,19 @@
                 this.docPnlBottom.Text = "鐩戞祴鍒嗘瀽";
                 this.docPnlBottom.Height = 350;
             }
-            var allMontorList = await GetMonitorAnalyseList();
+
+            var allMonitorList = await GetMonitorAnalyseList();
+            var isHead = _calcuPressModeIsHead;
+            var allEvaluationList = await GetEvaluationList();
+
             if (allWorkingList == null || allWorkingList.Count < 1)
             {
-                monitorAnalyListCtrl.SetBindingData(_hydroInfo, allMontorList, GetCalcuResult());
+                var workingHelper = GetWorkingHelper();
+                monitorAnalyListCtrl.SetBindingData(workingHelper.HydroInfo, allMonitorList, workingHelper.Working, workingHelper.CalcuResult, isHead, allEvaluationList);
             }
             else
             {
-                monitorAnalyListCtrl.SetBindingData(_hydroInfo, allMontorList, allWorkingList);
+                monitorAnalyListCtrl.SetBindingData(_hydroInfo, allMonitorList, allWorkingList, isHead, allEvaluationList);
             }
         }
 
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/monitor/SimulationPrintMonitorAnalyViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/monitor/SimulationPrintMonitorAnalyViewModel.cs
deleted file mode 100644
index ebc96ad..0000000
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/monitor/SimulationPrintMonitorAnalyViewModel.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-锘縩amespace HStation.WinFrmUI
-{
-    /// <summary>
-    /// 鐩戞祴鍒嗘瀽瑙嗗浘
-    /// </summary>
-    public class SimulationPrintMonitorAnalyViewModel
-    {
-        /// <summary>
-        /// 
-        /// </summary>
-        public SimulationPrintMonitorAnalyViewModel() { }
-
-
-        /// <summary>
-        /// 瀛愮骇闆嗗悎
-        /// </summary>
-        public List<SimulationPrintMonitorAnalyItemViewModel> Items { get; set; }
-
-    }
-}
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/working/SimulationPrintWorkingViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/working/SimulationPrintWorkingViewModel.cs
index 32b7c51..1cdf1af 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/working/SimulationPrintWorkingViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/working/SimulationPrintWorkingViewModel.cs
@@ -48,7 +48,7 @@
         /// <summary>
         /// 鐩戞祴鍒嗘瀽
         /// </summary>
-        public SimulationPrintMonitorAnalyViewModel MonitorAnaly { get; set; }
+        public HydroMonitorAnalyViewModel MonitorAnaly { get; set; }
 
         /// <summary>
         /// 鑳借�楀垎鏋�
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.cs
deleted file mode 100644
index 805cae6..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.cs
+++ /dev/null
@@ -1,268 +0,0 @@
-锘縰sing DevExpress.XtraEditors.Controls;
-using DevExpress.XtraGrid.Columns;
-using Mapster;
-using System.Data;
-
-namespace Yw.WinFrmUI
-{
-    public partial class HydroWorkingMonitorAnalyListCtrl : DevExpress.XtraEditors.XtraUserControl
-    {
-        public HydroWorkingMonitorAnalyListCtrl()
-        {
-            InitializeComponent();
-            this.gridView1.SetLimitView();
-            this.gridView1.RegistCustomDrawRowIndicator(40);
-        }
-
-        /// <summary>
-        /// 姘村姏瑙嗗浘浜嬩欢
-        /// </summary>
-        public event Action<string> HydroViewEvent;
-
-        /// <summary>
-        /// 杈规鍙鎬�
-        /// </summary>
-        public bool BorderVisible
-        {
-            get
-            {
-                return this.gridView1.BorderStyle != BorderStyles.NoBorder;
-            }
-            set
-            {
-                this.gridView1.BorderStyle = value ? BorderStyles.Default : BorderStyles.NoBorder;
-            }
-        }
-
-        private DataTable _dt = null;//琛ㄦ牸
-        private Yw.Model.HydroModelInfo _hydroInfo = null;
-        private List<HydroMonitorVmo> _allMonitorList = null;
-        private HydroCalcuResult _calcuResult = null;
-        private List<HydroWorkingVmo> _allWorkingList = null;
-
-        /// <summary>
-        /// 缁戝畾鏁版嵁
-        /// </summary>
-        public void SetBindingData
-            (
-                Yw.Model.HydroModelInfo hydroInfo,
-                List<HydroMonitorVmo> allMonitorList,
-                HydroCalcuResult calcuResult
-            )
-        {
-
-            _hydroInfo = hydroInfo;
-            _allMonitorList = allMonitorList;
-            _calcuResult = calcuResult;
-            InitialSingleColumns();
-            InitialSingleDataTable();
-            var overlay = this.ShowOverlay();
-            this.bindingSource1.DataSource = _dt;
-            this.gridView1.RefreshData();
-            overlay.Close();
-        }
-
-        /// <summary>
-        /// 缁戝畾鏁版嵁
-        /// </summary>
-        public void SetBindingData
-            (
-                Yw.Model.HydroModelInfo hydroInfo,
-                List<HydroMonitorVmo> allMonitorList,
-                List<HydroWorkingVmo> allWorkingList
-            )
-        {
-
-            _hydroInfo = hydroInfo;
-            _allMonitorList = allMonitorList;
-            _allWorkingList = allWorkingList;
-            var overlay = this.ShowOverlay();
-            InitialMultiColumns();
-            InitialMultiDataTable();
-            this.bindingSource1.DataSource = _dt;
-            this.gridView1.RefreshData();
-            overlay.Close();
-        }
-
-
-        //鍒濆鍖栧崟宸ュ喌鍒�
-        private void InitialSingleColumns()
-        {
-            this.gridView1.Columns.Clear();
-
-            //鏋勪欢
-            var colRelation = new GridColumn();
-            colRelation.Caption = "鏋勪欢";
-            colRelation.FieldName = "Parter";
-            colRelation.Visible = true;
-            this.gridView1.Columns.Add(colRelation);
-
-            //灞炴��
-            var colProp = new GridColumn();
-            colProp.Caption = "灞炴��";
-            colProp.FieldName = "PropName";
-            colProp.Visible = true;
-            this.gridView1.Columns.Add(colProp);
-
-            //璁$畻鍊�
-            var colCalcuValue = new GridColumn();
-            colCalcuValue.Caption = "璁$畻鍊�";
-            colCalcuValue.FieldName = "CalcuValue";
-            colCalcuValue.Visible = true;
-            this.gridView1.Columns.Add(colCalcuValue);
-
-            //鍗曚綅
-            var colUnit = new GridColumn();
-            colUnit.Caption = "鍗曚綅";
-            colUnit.FieldName = "UnitName";
-            colUnit.Visible = true;
-            this.gridView1.Columns.Add(colUnit);
-        }
-
-        //鍒濆鍖栧崟宸ュ喌琛ㄦ牸
-        private void InitialSingleDataTable()
-        {
-            _dt = new DataTable();
-            _dt.Columns.Add("Code", typeof(string));
-            _dt.Columns.Add("Parter", typeof(string));
-            _dt.Columns.Add("PropName", typeof(string));
-            _dt.Columns.Add("CalcuValue", typeof(string));
-            _dt.Columns.Add("UnitName", typeof(string));
-
-            var allMonitorList = _allMonitorList?.OrderBy(x => x.SortCode).ToList();
-            if (allMonitorList != null && allMonitorList.Count > 0)
-            {
-                var allVisualDict = _hydroInfo.GetVisualDict();
-                var allCalcuVisualDict = _calcuResult?.GetVisualDict();
-                foreach (var monitor in allMonitorList)
-                {
-                    var visual = allVisualDict?.GetValue(monitor.Parter);
-                    if (visual == null)
-                    {
-                        continue;
-                    }
-                    var calcuValue = allCalcuVisualDict?.GetValue(monitor.Parter)?.GetCalcuValue(monitor.PropName);
-                    var row = _dt.NewRow();
-                    row["Code"] = monitor.Parter;
-                    row["Parter"] = visual.Name;
-                    row["PropName"] = HydroMonitorPropHelper.GetName(monitor.PropName);
-                    row["CalcuValue"] = calcuValue.HasValue ? Math.Round(calcuValue.Value, 2).ToString() : null;
-                    row["UnitName"] = HydroMonitorPropHelper.GetUnit(monitor.PropName);
-                    _dt.Rows.Add(row);
-                }
-            }
-        }
-
-        //鍒濆鍖栧宸ュ喌鍒�
-        private void InitialMultiColumns()
-        {
-            this.gridView1.Columns.Clear();
-
-            //鏋勪欢
-            var colRelation = new GridColumn();
-            colRelation.Caption = "鏋勪欢";
-            colRelation.FieldName = "Parter";
-            colRelation.Visible = true;
-            this.gridView1.Columns.Add(colRelation);
-
-            //灞炴��
-            var colProp = new GridColumn();
-            colProp.Caption = "灞炴��";
-            colProp.FieldName = "PropName";
-            colProp.Visible = true;
-            this.gridView1.Columns.Add(colProp);
-
-            //宸ュ喌
-            if (_allWorkingList != null && _allWorkingList.Count > 0)
-            {
-                foreach (var working in _allWorkingList)
-                {
-                    var colCalcuValue = new GridColumn();
-                    colCalcuValue.Caption = working.Name;
-                    colCalcuValue.FieldName = working.ID.ToString();
-                    colCalcuValue.Visible = true;
-                    this.gridView1.Columns.Add(colCalcuValue);
-                }
-            }
-
-            //鍗曚綅
-            var colUnit = new GridColumn();
-            colUnit.Caption = "鍗曚綅";
-            colUnit.FieldName = "UnitName";
-            colUnit.Visible = true;
-            this.gridView1.Columns.Add(colUnit);
-        }
-
-        //鍒濆鍖栧宸ュ喌琛ㄦ牸
-        private void InitialMultiDataTable()
-        {
-            _dt = new DataTable();
-            _dt.Columns.Add("Code", typeof(string));
-            _dt.Columns.Add("Parter", typeof(string));
-            _dt.Columns.Add("PropName", typeof(string));
-            if (_allWorkingList != null && _allWorkingList.Count > 0)
-            {
-                foreach (var working in _allWorkingList)
-                {
-                    _dt.Columns.Add(working.ID.ToString(), typeof(string));
-                }
-            }
-            _dt.Columns.Add("UnitName", typeof(string));
-
-            var dict = new Dictionary<HydroWorkingVmo, Dictionary<string, HydroCalcuVisualResult>>();
-            if (_allWorkingList != null && _allWorkingList.Count > 0)
-            {
-                foreach (var working in _allWorkingList)
-                {
-                    var hydroInfo = _hydroInfo.Adapt<Yw.Model.HydroModelInfo>();
-                    hydroInfo.UpdateWorkingInfo(working.WorkingInfo);
-                    var calcuResult = hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss);
-                    var allCalcuVisualDict = calcuResult.GetVisualDict();
-                    dict.Add(working, allCalcuVisualDict);
-                }
-            }
-
-            var allMonitorList = _allMonitorList?.OrderBy(x => x.SortCode).ToList();
-            if (allMonitorList != null && allMonitorList.Count > 0)
-            {
-                var allVisualDict = _hydroInfo.GetVisualDict();
-                foreach (var monitor in allMonitorList)
-                {
-                    var visual = allVisualDict?.GetValue(monitor.Parter);
-                    if (visual == null)
-                    {
-                        continue;
-                    }
-                    var row = _dt.NewRow();
-                    row["Code"] = monitor.Parter;
-                    row["Parter"] = visual.Name;
-                    row["PropName"] = HydroMonitorPropHelper.GetName(monitor.PropName);
-                    if (dict.Count > 0)
-                    {
-                        foreach (var item in dict)
-                        {
-                            var calcuValue = item.Value.GetValue(monitor.Parter)?.GetCalcuValue(monitor.PropName);
-                            row[item.Key.ID.ToString()] = calcuValue.HasValue ? Math.Round(calcuValue.Value, 2).ToString() : null;
-                        }
-                    }
-                    row["UnitName"] = HydroMonitorPropHelper.GetUnit(monitor.PropName);
-
-                    _dt.Rows.Add(row);
-                }
-            }
-        }
-
-        private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
-        {
-            var row = this.gridView1.GetRow(e.RowHandle) as DataRowView;
-            if (row == null)
-            {
-                return;
-            }
-            var code = row.Row["Code"]?.ToString();
-            this.HydroViewEvent?.Invoke(code);
-        }
-
-
-    }
-}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj
index 3ef01c9..78b432b 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj
@@ -431,6 +431,9 @@
 		<Compile Update="loss-statistics\08-working\HydroLossStatisticsWorkingDlg.cs">
 		  <SubType>Form</SubType>
 		</Compile>
+		<Compile Update="monitor-analy\02-control\HydroMonitorAnalyListCtrl.cs">
+		  <SubType>UserControl</SubType>
+		</Compile>
 		<Compile Update="Properties\Resources.Designer.cs">
 			<DesignTime>True</DesignTime>
 			<AutoGen>True</AutoGen>
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user
index ac40d95..d36dfff 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user
@@ -43,9 +43,6 @@
     <Compile Update="12-monitor\01-value\HydroMonitorValueListCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="12-monitor\05-analy\HydroWorkingMonitorAnalyListCtrl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
     <Compile Update="16-evaluation\04-single\HydroSingleWorkingEvaluationCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/monitor/helper/SimulationPrintMonitorAnalyHelper.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyHelper.cs
similarity index 68%
rename from WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/monitor/helper/SimulationPrintMonitorAnalyHelper.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyHelper.cs
index e862880..cd8a96a 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/monitor/helper/SimulationPrintMonitorAnalyHelper.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyHelper.cs
@@ -1,16 +1,14 @@
-锘縰sing Mapster;
-
-namespace HStation.WinFrmUI
+锘縩amespace Yw.WinFrmUI
 {
     /// <summary>
     /// 
     /// </summary>
-    public class SimulationPrintMonitorAnalyHelper
+    public class HydroMonitorAnalyHelper
     {
         /// <summary>
         /// 鍒涘缓
         /// </summary>
-        public static SimulationPrintMonitorAnalyViewModel Create
+        public static HydroMonitorAnalyViewModel Create
             (
                Yw.Model.HydroModelInfo hydroInfo,
                List<Yw.Vmo.HydroMonitorVmo> allMonitorList,
@@ -20,31 +18,31 @@
                List<Yw.Vmo.HydroEvaluationVmo> allEvaluationList = null
             )
         {
-            var vm = new SimulationPrintMonitorAnalyViewModel();
-
             //楠岃瘉
             if (hydroInfo == null)
             {
-                return vm;
+                return default;
             }
             if (allMonitorList == null || allMonitorList.Count < 1)
             {
-                return vm;
+                return default;
             }
             if (working == null)
             {
-                return vm;
+                return default;
             }
 
+            var vm = new HydroMonitorAnalyViewModel();
+
+
             //杩囨护娴嬬偣锛屼粎闇�瑕佸垎鏋愭祴鐐�
-            var monitorList = allMonitorList?.Where(x => x.SourceType == Yw.Hydro.eSourceType.Analyse).ToList();
+            var monitorList = allMonitorList.Where(x => x.SourceType == Yw.Hydro.eSourceType.Analyse).ToList();
             if (monitorList == null || monitorList.Count < 1)
             {
                 return vm;
             }
 
-            //璧嬪�兼ā鍨嬩俊鎭紝閬垮厤骞叉壈
-            //var newHydroInfo = hydroInfo.Adapt<Yw.Model.HydroModelInfo>();
+            //鏋勪欢鍒楄〃
             var allVisualDict = hydroInfo.GetVisualDict();
             if (allVisualDict == null || allVisualDict.Count < 1)
             {
@@ -54,6 +52,7 @@
             //璁$畻缁撴灉
             if (calcuResult == null)
             {
+                hydroInfo.UpdateWorkingInfo(working.WorkingInfo);
                 calcuResult = hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss, isHead, allEvaluationList);
                 if (!calcuResult.Succeed)
                 {
@@ -63,10 +62,10 @@
             var allCalcuVisualDict = calcuResult.GetVisualDict();
 
             //閬嶅巻娴嬬偣
-            vm.Items = new List<SimulationPrintMonitorAnalyItemViewModel>();
+            vm.Items = new List<HydroMonitorAnalyItemViewModel>();
             foreach (var monitor in monitorList)
             {
-                var item = new SimulationPrintMonitorAnalyItemViewModel(monitor, allVisualDict, allCalcuVisualDict);
+                var item = new HydroMonitorAnalyItemViewModel(monitor, allVisualDict, allCalcuVisualDict);
                 vm.Items.Add(item);
             }
 
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/monitor/item/SimulationPrintMonitorAnalyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyItemViewModel.cs
similarity index 83%
rename from WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/monitor/item/SimulationPrintMonitorAnalyViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyItemViewModel.cs
index 5615499..bde199f 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/monitor/item/SimulationPrintMonitorAnalyViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyItemViewModel.cs
@@ -1,24 +1,21 @@
-锘縰sing DevExpress.PerformanceTests.PerfomanceMonitor;
-using System.Threading;
-using Yw.Model;
-using Yw.Vmo;
+锘縰sing Yw.Model;
 
-namespace HStation.WinFrmUI
+namespace Yw.WinFrmUI
 {
     /// <summary>
     /// 鐩戞祴鍒嗘瀽椤硅鍥�
     /// </summary>
-    public class SimulationPrintMonitorAnalyItemViewModel
+    public class HydroMonitorAnalyItemViewModel
     {
         /// <summary>
         /// 
         /// </summary>
-        public SimulationPrintMonitorAnalyItemViewModel() { }
+        public HydroMonitorAnalyItemViewModel() { }
 
         /// <summary>
         /// 
         /// </summary>
-        public SimulationPrintMonitorAnalyItemViewModel
+        public HydroMonitorAnalyItemViewModel
             (
                 HydroMonitorVmo rhs,
                 Dictionary<string, HydroVisualInfo> allVisualDict,
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyViewModel.cs
new file mode 100644
index 0000000..271a1ae
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/01-core/HydroMonitorAnalyViewModel.cs
@@ -0,0 +1,20 @@
+锘縩amespace Yw.WinFrmUI
+{
+    /// <summary>
+    /// 鐩戞祴鍒嗘瀽瑙嗗浘
+    /// </summary>
+    public class HydroMonitorAnalyViewModel
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroMonitorAnalyViewModel() { }
+
+
+        /// <summary>
+        /// 瀛愮骇闆嗗悎
+        /// </summary>
+        public List<HydroMonitorAnalyItemViewModel> Items { get; set; }
+
+    }
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/02-control/HydroMonitorAnalyListCtrl.Designer.cs
similarity index 97%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/02-control/HydroMonitorAnalyListCtrl.Designer.cs
index d5816f3..7294504 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.Designer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/02-control/HydroMonitorAnalyListCtrl.Designer.cs
@@ -1,6 +1,6 @@
 锘縩amespace Yw.WinFrmUI
 {
-    partial class HydroWorkingMonitorAnalyListCtrl
+    partial class HydroMonitorAnalyListCtrl
     {
         /// <summary> 
         /// Required designer variable.
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/02-control/HydroMonitorAnalyListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/02-control/HydroMonitorAnalyListCtrl.cs
new file mode 100644
index 0000000..6632f52
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/02-control/HydroMonitorAnalyListCtrl.cs
@@ -0,0 +1,327 @@
+锘縰sing DevExpress.XtraEditors.Controls;
+using DevExpress.XtraGrid.Columns;
+using Mapster;
+using System.Data;
+
+namespace Yw.WinFrmUI
+{
+    public partial class HydroMonitorAnalyListCtrl : DevExpress.XtraEditors.XtraUserControl
+    {
+        public HydroMonitorAnalyListCtrl()
+        {
+            InitializeComponent();
+            this.gridView1.SetLimitView();
+            this.gridView1.RegistCustomDrawRowIndicator(40);
+        }
+
+        /// <summary>
+        /// 姘村姏瑙嗗浘浜嬩欢
+        /// </summary>
+        public event Action<string> HydroViewEvent;
+
+        /// <summary>
+        /// 杈规鍙鎬�
+        /// </summary>
+        public bool BorderVisible
+        {
+            get
+            {
+                return this.gridView1.BorderStyle != BorderStyles.NoBorder;
+            }
+            set
+            {
+                this.gridView1.BorderStyle = value ?
+                    BorderStyles.Default :
+                    BorderStyles.NoBorder;
+            }
+        }
+
+        private DataTable _dt = null;//琛ㄦ牸
+        private Yw.Model.HydroModelInfo _hydroInfo = null;
+        private List<HydroMonitorVmo> _allMonitorList = null;
+        private List<HydroWorkingVmo> _allWorkingList = null;
+        private Dictionary<HydroWorkingVmo, HydroCalcuResult> _allCalcuResultDict = null;//璁$畻缁撴灉瀛楀吀
+
+        /// <summary>
+        /// 缁戝畾鏁版嵁
+        /// </summary>
+        public void SetBindingData
+            (
+                Yw.Model.HydroModelInfo hydroInfo,
+                List<HydroMonitorVmo> allMonitorList,
+                HydroWorkingVmo working,
+                HydroCalcuResult calcuResult = null,
+                bool isHead = false,
+                List<HydroEvaluationVmo> allEvaluationList = null
+            )
+        {
+            if (hydroInfo == null)
+            {
+                return;
+            }
+            if (allMonitorList == null || allMonitorList.Count < 1)
+            {
+                return;
+            }
+            if (working == null)
+            {
+                return;
+            }
+            _hydroInfo = hydroInfo.Adapt<Yw.Model.HydroModelInfo>();
+            _allMonitorList = allMonitorList;
+            _allWorkingList = new List<HydroWorkingVmo>() { working };
+            if (calcuResult == null)
+            {
+                _hydroInfo.UpdateWorkingInfo(working.WorkingInfo);
+                calcuResult = _hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss, isHead, allEvaluationList);
+                if (!calcuResult.Succeed)
+                {
+                    return;
+                }
+            }
+            _allCalcuResultDict = new Dictionary<HydroWorkingVmo, HydroCalcuResult>()
+            {
+                { working,calcuResult}
+            };
+
+            var overlay = this.ShowOverlay();
+            InitialSingleColumns();
+            InitialSingleDataTable();
+            this.bindingSource1.DataSource = _dt;
+            this.bindingSource1.ResetBindings(false);
+            this.gridView1.RefreshData();
+            overlay.Close();
+        }
+
+        /// <summary>
+        /// 缁戝畾鏁版嵁
+        /// </summary>
+        public void SetBindingData
+            (
+                Yw.Model.HydroModelInfo hydroInfo,
+                List<HydroMonitorVmo> allMonitorList,
+                List<HydroWorkingVmo> allWorkingList,
+                bool isHead = false,
+                List<HydroEvaluationVmo> allEvaluationList = null
+            )
+        {
+            if (hydroInfo == null)
+            {
+                return;
+            }
+            if (allMonitorList == null || allMonitorList.Count < 1)
+            {
+                return;
+            }
+            if (allWorkingList == null || allWorkingList.Count < 1)
+            {
+                return;
+            }
+
+            var overlay = this.ShowOverlay();
+
+            _hydroInfo = hydroInfo.Adapt<Yw.Model.HydroModelInfo>();
+            _allMonitorList = allMonitorList;
+            _allWorkingList = allWorkingList;
+            _allCalcuResultDict = new Dictionary<HydroWorkingVmo, HydroCalcuResult>();
+            foreach (var working in allWorkingList)
+            {
+                _hydroInfo.UpdateWorkingInfo(working.WorkingInfo);
+                var calcuResult = _hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss, isHead, allEvaluationList);
+                if (calcuResult != null && calcuResult.Succeed)
+                {
+                    _allCalcuResultDict.Add(working, calcuResult);
+                }
+            }
+            InitialMultiColumns();
+            InitialMultiDataTable();
+            this.bindingSource1.DataSource = _dt;
+            this.bindingSource1.ResetBindings(false);
+            this.gridView1.RefreshData();
+            overlay.Close();
+        }
+
+
+        //鍒濆鍖栧崟宸ュ喌鍒�
+        private void InitialSingleColumns()
+        {
+            this.gridView1.Columns.Clear();
+
+            //鏋勪欢
+            var colRelation = new GridColumn();
+            colRelation.Caption = "鏋勪欢";
+            colRelation.FieldName = "VisualName";
+            colRelation.Visible = true;
+            this.gridView1.Columns.Add(colRelation);
+
+            //灞炴��
+            var colProp = new GridColumn();
+            colProp.Caption = "灞炴��";
+            colProp.FieldName = "PropName";
+            colProp.Visible = true;
+            this.gridView1.Columns.Add(colProp);
+
+            //璁$畻鍊�
+            var colCalcuValue = new GridColumn();
+            colCalcuValue.Caption = "璁$畻鍊�";
+            colCalcuValue.FieldName = "CalcuValue";
+            colCalcuValue.Visible = true;
+            this.gridView1.Columns.Add(colCalcuValue);
+
+            //鍗曚綅
+            var colUnit = new GridColumn();
+            colUnit.Caption = "鍗曚綅";
+            colUnit.FieldName = "UnitName";
+            colUnit.Visible = true;
+            this.gridView1.Columns.Add(colUnit);
+        }
+
+        //鍒濆鍖栧崟宸ュ喌琛ㄦ牸
+        private void InitialSingleDataTable()
+        {
+            _dt = new DataTable();
+            _dt.Columns.Add("Code", typeof(string));
+            _dt.Columns.Add("VisualName", typeof(string));
+            _dt.Columns.Add("PropName", typeof(string));
+            _dt.Columns.Add("CalcuValue", typeof(string));
+            _dt.Columns.Add("UnitName", typeof(string));
+
+            var monitorList = _allMonitorList?.Where(x => x.SourceType == Yw.Hydro.eSourceType.Analyse).ToList();
+            monitorList = monitorList?.OrderBy(x => x.SortCode).ToList();
+            if (monitorList != null && monitorList.Count > 0)
+            {
+                var allVisualDict = _hydroInfo?.GetVisualDict();
+                if (allVisualDict != null && allVisualDict.Count > 0)
+                {
+                    var allCalcuVisualDict = _allCalcuResultDict?.FirstOrDefault().Value?.GetVisualDict();
+                    foreach (var monitor in monitorList)
+                    {
+                        var visual = allVisualDict.GetValue(monitor.Parter);
+                        if (visual == null)
+                        {
+                            continue;
+                        }
+                        var calcuValue = allCalcuVisualDict?.GetValue(monitor.Parter)?.GetCalcuValue(monitor.PropName);
+                        var row = _dt.NewRow();
+                        row["Code"] = monitor.Parter;
+                        row["VisualName"] = visual.Name;
+                        row["PropName"] = HydroMonitorPropHelper.GetName(monitor.PropName);
+                        row["CalcuValue"] = calcuValue.HasValue ? Math.Round(calcuValue.Value, 2).ToString() : null;
+                        row["UnitName"] = HydroMonitorPropHelper.GetUnit(monitor.PropName);
+                        _dt.Rows.Add(row);
+                    }
+                }
+            }
+        }
+
+        //鍒濆鍖栧宸ュ喌鍒�
+        private void InitialMultiColumns()
+        {
+            this.gridView1.Columns.Clear();
+
+            //鏋勪欢
+            var colRelation = new GridColumn();
+            colRelation.Caption = "鏋勪欢";
+            colRelation.FieldName = "VisualName";
+            colRelation.Visible = true;
+            this.gridView1.Columns.Add(colRelation);
+
+            //灞炴��
+            var colProp = new GridColumn();
+            colProp.Caption = "灞炴��";
+            colProp.FieldName = "PropName";
+            colProp.Visible = true;
+            this.gridView1.Columns.Add(colProp);
+
+            //宸ュ喌
+            if (_allWorkingList != null && _allWorkingList.Count > 0)
+            {
+                foreach (var working in _allWorkingList)
+                {
+                    var colCalcuValue = new GridColumn();
+                    colCalcuValue.Caption = working.Name;
+                    colCalcuValue.FieldName = working.ID.ToString();
+                    colCalcuValue.Visible = true;
+                    this.gridView1.Columns.Add(colCalcuValue);
+                }
+            }
+
+            //鍗曚綅
+            var colUnit = new GridColumn();
+            colUnit.Caption = "鍗曚綅";
+            colUnit.FieldName = "UnitName";
+            colUnit.Visible = true;
+            this.gridView1.Columns.Add(colUnit);
+        }
+
+        //鍒濆鍖栧宸ュ喌琛ㄦ牸
+        private void InitialMultiDataTable()
+        {
+            _dt = new DataTable();
+            _dt.Columns.Add("Code", typeof(string));
+            _dt.Columns.Add("VisualName", typeof(string));
+            _dt.Columns.Add("PropName", typeof(string));
+            if (_allWorkingList != null && _allWorkingList.Count > 0)
+            {
+                foreach (var working in _allWorkingList)
+                {
+                    _dt.Columns.Add(working.ID.ToString(), typeof(string));
+                }
+            }
+            _dt.Columns.Add("UnitName", typeof(string));
+
+            var monitorList = _allMonitorList?.Where(x => x.SourceType == Yw.Hydro.eSourceType.Analyse).ToList();
+            monitorList = monitorList?.OrderBy(x => x.SortCode).ToList();
+            if (monitorList != null && monitorList.Count > 0)
+            {
+                var allVisualDict = _hydroInfo?.GetVisualDict();
+                if (allVisualDict != null && allVisualDict.Count > 0)
+                {
+                    foreach (var monitor in monitorList)
+                    {
+                        var visual = allVisualDict.GetValue(monitor.Parter);
+                        if (visual == null)
+                        {
+                            continue;
+                        }
+                        var row = _dt.NewRow();
+                        row["Code"] = monitor.Parter;
+                        row["VisualName"] = visual.Name;
+                        row["PropName"] = HydroMonitorPropHelper.GetName(monitor.PropName);
+                        if (_allWorkingList != null && _allWorkingList.Count > 0)
+                        {
+                            foreach (var working in _allWorkingList)
+                            {
+                                if (_allCalcuResultDict != null && _allCalcuResultDict.Count > 0)
+                                {
+                                    if (_allCalcuResultDict.ContainsKey(working))
+                                    {
+                                        var allCalcuVisualDict = _allCalcuResultDict[working].GetVisualDict();
+                                        var calcuValue = allCalcuVisualDict?.GetValue(monitor.Parter)?.GetCalcuValue(monitor.PropName);
+                                        row[working.ID.ToString()] = calcuValue.HasValue ? Math.Round(calcuValue.Value, 2).ToString() : null;
+                                    }
+                                }
+                            }
+                        }
+                        row["UnitName"] = HydroMonitorPropHelper.GetUnit(monitor.PropName);
+                        _dt.Rows.Add(row);
+                    }
+                }
+            }
+        }
+
+        //琛屽崟鍏冩牸鐐瑰嚮浜嬩欢
+        private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
+        {
+            var row = this.gridView1.GetRow(e.RowHandle) as DataRowView;
+            if (row == null)
+            {
+                return;
+            }
+            var code = row.Row["Code"]?.ToString();
+            this.HydroViewEvent?.Invoke(code);
+        }
+
+
+    }
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/02-control/HydroMonitorAnalyListCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/monitor-analy/02-control/HydroMonitorAnalyListCtrl.resx

--
Gitblit v1.9.3