From 049f546f25cabfb5b08e29c54f49d61a544b0395 Mon Sep 17 00:00:00 2001
From: Shuxia Ning <NingShuxia0927@outlook.com>
Date: 星期二, 10 九月 2024 10:36:24 +0800
Subject: [PATCH] 升级前备份

---
 IStation.Service/08-algorithm/01-analysis/AnalysisHelper.cs |  507 +++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 387 insertions(+), 120 deletions(-)

diff --git a/IStation.Service/08-algorithm/01-analysis/AnalysisHelper.cs b/IStation.Service/08-algorithm/01-analysis/AnalysisHelper.cs
index 9aac3dc..0ac7cd4 100644
--- a/IStation.Service/08-algorithm/01-analysis/AnalysisHelper.cs
+++ b/IStation.Service/08-algorithm/01-analysis/AnalysisHelper.cs
@@ -7,147 +7,157 @@
     /// </summary>
     public partial class AnalysisHelper
     {
+        private readonly double _frequency_def = 50;
+        private readonly double _frequency_min = 25;
+        private readonly double _frequency_max = 50;
+        private readonly double _frequency_space = 0.10;//棰戠巼闂撮殧  
+        private readonly decimal _head_space = 0.1m;//鎵▼闂撮殧
 
-        double _frequency_def = 50;
-        double _frequency_min = 25;
-        double _frequency_max = 50;
-        double _frequency_space = 0.1;//棰戠巼闂撮殧 
-
-        double _head_space = 0.1;//鎵▼闂撮殧
-
-        readonly DAL.SQLite.AnalysisCombine _dal_analysis_combine = new();
-        readonly DAL.SQLite.AnalysisConclusion _dal_analysis_conclusion = new();
-        readonly DAL.SQLite.AnalysisLog _dal_analysis_log = new();
-        readonly DAL.SQLite.AnalysisDeviation _dal_analysis_deviation = new();
+        private readonly DAL.SQLite.AnalysisPump _dal_analysis_pump = new();
+        private readonly DAL.SQLite.AnalysisParameter _dal_analysis_conclusion = new();
+        private readonly DAL.SQLite.AnalysisFactor _dal_analysis_factor = new();
 
 
         /// <summary>
-        /// 鍒嗘瀽娉电粍鍚�(鐩墠鍙垎鏋愬崟娉�)
+        /// 鍒嗘瀽娉�
         /// </summary>
         /// <param name="pumps">娉靛垪琛�</param>
         /// <returns></returns>
-        public void AnalysisCombine(List<Model.Pump> pumps)
+        public void AnalysisPump(List<Model.Pump> pumps)
         {
-            InsertAnaLog("寮�濮嬪垎鏋愭车缁勫悎"); 
+            InsertLog("寮�濮嬪垎鏋愭车缁勫悎");
             if (pumps == null || pumps.Count < 1)
             {
-                InsertAnaLog("鍒嗘瀽澶辫触:娌℃湁娉垫暟鎹�!");
+                InsertLog("鍒嗘瀽澶辫触:娌℃湁娉垫暟鎹�!");
                 return;
             }
+
+            var all_analysis_factor_list = _dal_analysis_factor.GetAll();
             var fre_def = _frequency_def;
-            var ana_pump_list = new List<AnaPump>();
+            var analysis_pump_list = new List<AnaPump>();
             foreach (var pump in pumps)
             {
+                var pump_factor_list = all_analysis_factor_list?.Where(x => x.Flag == pump.Flag).ToList();
                 if (pump.IsBp)
                 {
                     //鍙橀娉�
-                    var anaPump = new AnaPump(pump, fre_def, _frequency_min, _frequency_max, _frequency_space);
-                    if (anaPump.AllowCalc)
-                        ana_pump_list.Add(anaPump);
+                    var fre_head_diff_avg_dict = pump_factor_list?.ToDictionary(x => x.Hz, y => y.HeadDeviation);
+                    var analysisPump = new AnaPump(pump, fre_def, _frequency_min, _frequency_max, _frequency_space, fre_head_diff_avg_dict);
+                    if (analysisPump.AllowCalc)
+                        analysis_pump_list.Add(analysisPump);
                 }
                 else
                 {
                     //鍥洪娉�
-                    var anaPump = new AnaPump(pump);
-                    if (anaPump.AllowCalc)
-                        ana_pump_list.Add(anaPump);
+                    var analysisPump = new AnaPump(pump);
+                    if (analysisPump.AllowCalc)
+                        analysis_pump_list.Add(analysisPump);
                 }
             }
-            if (!ana_pump_list.Any())
+            if (!analysis_pump_list.Any())
             {
-                InsertAnaLog($"鍒嗘瀽杩涘害:娌℃湁娉靛彲鍒嗘瀽");
+                InsertLog($"鍒嗘瀽杩涘害:娌℃湁娉靛彲鍒嗘瀽");
                 return;
             }
-            for (int i = 0; i < ana_pump_list.Count; i++)
+            for (int i = 0; i < analysis_pump_list.Count; i++)
             {
-                var pump = ana_pump_list[i];
-                var ana_frequency_items = pump.AnaFrequencyItems;
-                if (ana_frequency_items == null || !ana_frequency_items.Any())
+                var pump = analysis_pump_list[i];
+                var analysis_frequency_items = pump.AnaFrequencyItems;
+                if (analysis_frequency_items == null || !analysis_frequency_items.Any())
                     continue;
 
                 var run_flag = RunFlagHelper.GetRunFlag(pump.Flag, pump.IsBp);
-                InsertAnaLog($"鍒嗘瀽杩涘害:绗瑊i + 1}鍙版车");
+                InsertLog($"鍒嗘瀽杩涘害:绗瑊i + 1}鍙版车");
 
-                var list = new List<Entity.AnalysisCombine>(pump.AnaFrequencyItems.Count);
-                foreach (var freItem in ana_frequency_items)
+                var list = new List<Entity.AnalysisPump>(pump.AnaFrequencyItems.Count);
+                foreach (var freItem in analysis_frequency_items)
                 {
-                    var scheduleCombine = new Entity.AnalysisCombine();
-                    scheduleCombine.ID = Yw.YitIdHelper.NextId();
-                    scheduleCombine.Pump = freItem.Frequency;
-                    scheduleCombine.CurveQH = freItem.CurveQH.ToJson();
-                    scheduleCombine.CurveQP = freItem.CurveQP.ToJson();
+                    var analysis_pump = new Entity.AnalysisPump();
+                    analysis_pump.ID = Yw.YitIdHelper.NextId();
+                    analysis_pump.Flag = pump.Flag;
+                    analysis_pump.Hz = freItem.Frequency;
+                    analysis_pump.CurveQH = freItem.CurveQH.ToJson();
+                    analysis_pump.CurveQP = freItem.CurveQP.ToJson();
 
                     freItem.CurveQH.GetMinMaxPointY(out double maxHead, out double minHead);
-                    scheduleCombine.MinFlow = Math.Round(freItem.CurveQH.Min, 4);
-                    scheduleCombine.MaxFlow = Math.Round(freItem.CurveQH.Max, 4);
-                    scheduleCombine.MaxHead = Math.Round(maxHead, 4);
-                    scheduleCombine.MinHead = Math.Round(minHead, 4);
-                    scheduleCombine.AnaStatus = false;
-                    list.Add(scheduleCombine);
+                    analysis_pump.MinFlow = Math.Round(freItem.CurveQH.Min, 4);
+                    analysis_pump.MaxFlow = Math.Round(freItem.CurveQH.Max, 4);
+                    analysis_pump.MaxHead = Math.Round(maxHead, 4);
+                    analysis_pump.MinHead = Math.Round(minHead, 4);
+                    list.Add(analysis_pump);
                 }
-                InsertAnalysisCombineList(i + 1, run_flag, list);
+                InsertList(i + 1, run_flag, list);
             }
 
-            InsertAnaLog($"鍒嗘瀽杩涘害:{pumps.Count}鍙版车,鍒嗘瀽瀹屾瘯!");
+            InsertLog($"鍒嗘瀽杩涘害:{pumps.Count}鍙版车,鍒嗘瀽瀹屾瘯!");
         }
 
+
         /// <summary>
-        /// 鍒嗘瀽缁撹
+        /// 鍒嗘瀽鍙傛暟
         /// </summary>
-        public void AnalysisConclusion()
+        public void AnalysisParameter(List<Model.Pump> pumps)
         {
-            InsertAnaLog($"寮�濮嬪垎鏋愭车缁勫悎缁撹!");
-            _dal_analysis_conclusion.DeleteAllTable();
-            var analysis_combine_table_list = _dal_analysis_combine.GetAllTableName();
-            if (analysis_combine_table_list == null || !analysis_combine_table_list.Any())
+            InsertLog($"寮�濮嬪垎鏋愭车缁撹!");
+            if (pumps == null || pumps.Count < 1)
             {
-                InsertAnaLog($"鏃犳车缁勫悎琛�!");
+                InsertLog("鍒嗘瀽澶辫触:娌℃湁娉垫暟鎹�!");
                 return;
             }
-            var tableCount = analysis_combine_table_list.Count();
-            InsertAnaLog($"鍒嗘瀽{tableCount}涓粍鍚�!");
-            for (int tableIndex = 0; tableIndex < tableCount; tableIndex++)
+
+            _dal_analysis_conclusion.DeleteAllTable();
+            for (int pump_index = 0; pump_index < pumps.Count; pump_index++)
             {
-                var table_name = analysis_combine_table_list[tableIndex];
-                var analysis_combine_list = _dal_analysis_combine.GetNoAnalysisByTableName(table_name);
-                if (analysis_combine_list == null || !analysis_combine_list.Any())
+                var pump = pumps[pump_index];
+                var flag = pump.Flag;
+                var run_flag = RunFlagHelper.GetRunFlag(flag, pump.IsBp);
+                var table_name = _dal_analysis_pump.GetTableName(run_flag);
+                var analysis_pump_list = _dal_analysis_pump.GetAllByTableName(table_name);
+                if (analysis_pump_list == null || !analysis_pump_list.Any())
                 {
-                    InsertAnaLog($"鍒嗘瀽杩涘害:{table_name},绗瑊tableIndex + 1}涓�,鍒嗘瀽瀹屾瘯");
+                    InsertLog($"鍒嗘瀽杩涘害:{table_name},绗瑊pump_index + 1}涓�,鍒嗘瀽瀹屾瘯");
                     continue;
                 }
-                var analysis_combine_list_count = analysis_combine_list.Count();
-                var analysis_conclusion_list = new List<List<Entity.AnalysisConclusion>>(analysis_combine_list_count);
-                var analysis_combine_ids = new List<long>(analysis_combine_list_count);
 
-                for (int combineIndex = 0; combineIndex < analysis_combine_list_count; combineIndex++)
+                var analysis_pump_list_count = analysis_pump_list.Count();
+                var analysis_conclusion_list = new List<List<Entity.AnalysisParameter>>(analysis_pump_list_count);
+                for (int analysis_pump_index = 0; analysis_pump_index < analysis_pump_list_count; analysis_pump_index++)
                 {
-                    var analysis_combine = analysis_combine_list[combineIndex];
-                    var analysis_combine_id = analysis_combine.ID;
-                    analysis_combine_ids.Add(analysis_combine_id);
-                    var curveQH = JsonHelper.Json2Object<Curve.CurveExpress>(analysis_combine.CurveQH);
-                    var curveQP = JsonHelper.Json2Object<Curve.CurveExpress>(analysis_combine.CurveQP);
+                    var analysis_pump = analysis_pump_list[analysis_pump_index];
+                    var curveQH = JsonHelper.Json2Object<Curve.CurveExpress>(analysis_pump.CurveQH);
+                    var curveQP = JsonHelper.Json2Object<Curve.CurveExpress>(analysis_pump.CurveQP);
                     var bol = curveQH.GetMinMaxPointY(out double maxY, out double minY);
                     if (!bol)
-                        return;
-                    var maxHead = Math.Ceiling(maxY);
-                    var minHead = Math.Floor(minY);
+                        throw new Exception("鏇茬嚎寮傚父");
 
-                    var currentListCount = (int)((maxHead - minHead) / _head_space) + 1;
-                    var current_analysis_conclusion_list = new List<Entity.AnalysisConclusion>(currentListCount);
-                    for (double head = minHead; head <= maxHead; head += _head_space)
+                    decimal max_head = (decimal)Math.Ceiling(maxY);
+                    decimal min_head = (decimal)Math.Floor(minY);
+
+                    var current_list_count = (int)((max_head - min_head) / _head_space) + 1;
+                    var current_analysis_conclusion_list = new List<Entity.AnalysisParameter>(current_list_count);
+                    for (decimal head = min_head; head <= max_head; head += _head_space)
                     {
-                        var flow = curveQH.GetInterPointLastX(head);
-                        if (!flow.HasValue)
+                        var flow = curveQH.GetInterPointLastX((double)head) ?? 0;
+                        if (flow < 1)
                         {
                             continue;
                         }
-                        var analysis_conclusion = new Entity.AnalysisConclusion();
+
+                        double differV = 0;
+                        if (pump.Oc != null)
+                        {
+                            //1杈撳拰2杈撻兘鏄敤鐨勮繘鍙f恫浣嶏紝涓嶈�冭檻杩涘彛鍙e緞
+                            differV = PumpCalculateHelper.CalculateOtherPress(flow, null, pump.Oc, null, null);
+                        }
+
+                        var analysis_conclusion = new Entity.AnalysisParameter();
                         analysis_conclusion.ID = Yw.YitIdHelper.NextId();
-                        analysis_conclusion.CombineID = analysis_combine_id;
-                        analysis_conclusion.Pump = analysis_combine.Pump;
-                        analysis_conclusion.Head = head;
-                        analysis_conclusion.Flow = flow.Value;
-                        analysis_conclusion.Power = curveQP.GetFitPointY(flow.Value);
+                        analysis_conclusion.PumpID = analysis_pump.ID;
+                        analysis_conclusion.Hz = analysis_pump.Hz;
+                        analysis_conclusion.Head = (double)head;
+                        analysis_conclusion.PressureDiff = (double)head - differV;
+                        analysis_conclusion.Flow = flow;
+                        analysis_conclusion.Power = curveQP.GetFitPointY(flow);
                         analysis_conclusion.UWP = PumpCalculateHelper.CalculateUWP(analysis_conclusion.Power, analysis_conclusion.Flow, analysis_conclusion.Head);
                         analysis_conclusion.WP = PumpCalculateHelper.CalculateWP(analysis_conclusion.Power, analysis_conclusion.Flow);
 
@@ -156,10 +166,91 @@
                     }
                     analysis_conclusion_list.Add(current_analysis_conclusion_list);
                 }
-                UpdateAnaStatus(table_name, analysis_combine_ids);
                 var list = analysis_conclusion_list.SelectMany(x => x.ToList()).ToList();
-                var run_flag = _dal_analysis_combine.GetRunFlag(table_name);
-                InsertAnalysisConclusionList(tableIndex + 1, run_flag, list);
+                InsertList(pump_index + 1, run_flag, list);
+            }
+        }
+
+
+        /// <summary>
+        /// 鍒嗘瀽鍙傛暟
+        /// </summary>
+        public void Test(List<Model.Pump> pumps)
+        {
+            if (pumps == null || pumps.Count < 1)
+            {
+                return;
+            }
+
+            _dal_analysis_conclusion.DeleteAllTable();
+            for (int pump_index = 0; pump_index < pumps.Count; pump_index++)
+            {
+                var pump = pumps[pump_index];
+                var flag = pump.Flag;
+                var run_flag = RunFlagHelper.GetRunFlag(flag, pump.IsBp);
+                var table_name = _dal_analysis_pump.GetTableName(run_flag);
+                var analysis_pump_list = _dal_analysis_pump.GetAllByTableName(table_name);
+                if (analysis_pump_list == null || !analysis_pump_list.Any())
+                {
+                    continue;
+                }
+
+                var analysis_pump_list_count = analysis_pump_list.Count();
+                var analysis_conclusion_list = new List<List<Entity.AnalysisParameter>>(analysis_pump_list_count);
+                for (int analysis_pump_index = 0; analysis_pump_index < analysis_pump_list_count; analysis_pump_index++)
+                {
+                    var analysis_pump = analysis_pump_list[analysis_pump_index];
+                    var curveQH = JsonHelper.Json2Object<Curve.CurveExpress>(analysis_pump.CurveQH);
+                    var curveQP = JsonHelper.Json2Object<Curve.CurveExpress>(analysis_pump.CurveQP);
+                    var bol = curveQH.GetMinMaxPointY(out double maxY, out double minY);
+                    if (!bol)
+                        throw new Exception("鏇茬嚎寮傚父");
+
+                    decimal max_head = (decimal)Math.Ceiling(maxY);
+                    decimal min_head = (decimal)Math.Floor(minY);
+
+                    decimal head_space = 0.01m;
+                    var current_list_count = (int)((max_head - min_head) / head_space) + 1;
+                    var current_analysis_conclusion_list = new List<Entity.AnalysisParameter>(current_list_count);
+                    for (decimal head = min_head; head <= max_head; head += head_space)
+                    {
+                        var flow = curveQH.GetInterPointLastX((double)head) ?? 0;
+                        if (flow < 1)
+                        {
+                            continue;
+                        }
+
+                        double differV = 0;
+                        if (pump.Oc != null)
+                        {
+                            differV = PumpCalculateHelper.CalculateOtherPress(flow, pump.Ic, pump.Oc, null, null);
+                        }
+
+                        var analysis_conclusion = new Entity.AnalysisParameter();
+                        analysis_conclusion.ID = Yw.YitIdHelper.NextId();
+                        analysis_conclusion.PumpID = analysis_pump.ID;
+                        analysis_conclusion.Hz = analysis_pump.Hz;
+                        analysis_conclusion.Head = (double)head;
+                        analysis_conclusion.PressureDiff = (double)head - differV;
+                        analysis_conclusion.Flow = flow;
+                        analysis_conclusion.Power = curveQP.GetFitPointY(flow);
+                        analysis_conclusion.UWP = PumpCalculateHelper.CalculateUWP(analysis_conclusion.Power, analysis_conclusion.Flow, analysis_conclusion.Head);
+                        analysis_conclusion.WP = PumpCalculateHelper.CalculateWP(analysis_conclusion.Power, analysis_conclusion.Flow);
+
+
+                        analysis_conclusion.Hz = Math.Round(analysis_conclusion.Hz, 1);
+                        analysis_conclusion.Head = Math.Round(analysis_conclusion.Head, 2);
+                        analysis_conclusion.PressureDiff = Math.Round(analysis_conclusion.PressureDiff, 2);
+                        analysis_conclusion.Flow = Math.Round(analysis_conclusion.Flow, 1);
+                        analysis_conclusion.Power = Math.Round(analysis_conclusion.Power, 1);
+                        analysis_conclusion.WP = Math.Round(analysis_conclusion.WP, 1);
+                        analysis_conclusion.UWP = Math.Round(analysis_conclusion.UWP, 1);
+                        current_analysis_conclusion_list.Add(analysis_conclusion);
+                    }
+                    analysis_conclusion_list.Add(current_analysis_conclusion_list);
+                }
+                var list = analysis_conclusion_list.SelectMany(x => x.ToList()).ToList();
+                InsertList(pump_index + 1, run_flag, list);
             }
         }
 
@@ -169,10 +260,11 @@
         /// <summary>
         /// 鍦嗘暣
         /// </summary> 
-        private void Round(Entity.AnalysisConclusion conclusion)
+        private void Round(Entity.AnalysisParameter conclusion)
         {
-            conclusion.Pump = Math.Round(conclusion.Pump, 1);
+            conclusion.Hz = Math.Round(conclusion.Hz, 1);
             conclusion.Head = Math.Round(conclusion.Head, 1);
+            conclusion.PressureDiff = Math.Round(conclusion.PressureDiff, 1);
             conclusion.Flow = Math.Round(conclusion.Flow, 1);
             conclusion.Power = Math.Round(conclusion.Power, 1);
             conclusion.WP = Math.Round(conclusion.WP, 1);
@@ -180,76 +272,251 @@
         }
 
         /// <summary>
-        /// 鎻掑叆鍒嗘瀽鏃ュ織
+        /// 鎻掑叆鏃ュ織
         /// </summary> 
-        private void InsertAnaLog(string info)
+        private void InsertLog(string info)
         {
-            var entity = new Entity.AnalysisLog(info);
-            _dal_analysis_log.Insert(entity);
-        }
-
-        /// <summary>
-        /// 鏇存柊鍒嗘瀽鐘舵��
-        /// </summary>
-        public bool UpdateAnaStatus(string tableName, List<long> ids)
-        {
-            if (ids == null || !ids.Any())
-            {
-                return false;
-            }
-            return _dal_analysis_combine.UpdateAnaStatus(tableName, ids);
+            LogHelper.Info(info);
         }
 
         /// <summary>
         /// 鎻掑叆鍒嗘瀽缁勫悎鍒楄〃
         /// </summary> 
-        public void InsertAnalysisCombineList(int index, string runFlag, List<Entity.AnalysisCombine> list)
+        public void InsertList(int index, string runFlag, List<Entity.AnalysisPump> list)
         {
             string log;
             if (list == null || !list.Any())
             {
                 log = $"{runFlag}:涓嬫爣:{index},鏃犳暟鎹�";
-                InsertAnaLog(log);
+                InsertLog(log);
                 return;
             }
 
             var sw = Stopwatch.StartNew();
-            _dal_analysis_combine.BulkInsertsEx(runFlag, list);
+            _dal_analysis_pump.BulkInsertsEx(runFlag, list);
             log = $"{runFlag}:涓嬫爣:{index},鏁伴噺:{list.Count},鎻掑叆鑰楁椂:{sw.ElapsedMilliseconds / 1000}m";
-            InsertAnaLog(log);
+            InsertLog(log);
         }
 
         /// <summary>
-        /// 鎻掑叆鍒嗘瀽缁撹鍒楄〃
+        /// 鎻掑叆鍒嗘瀽鍙傛暟鍒楄〃
         /// </summary> 
-        public void InsertAnalysisConclusionList(int index, string runFlag, List<Entity.AnalysisConclusion> list)
+        public void InsertList(int index, string runFlag, List<Entity.AnalysisParameter> list)
         {
             string log;
             if (list == null || !list.Any())
             {
                 log = $"{runFlag}:涓嬫爣:{index},鏃犳暟鎹�";
-                InsertAnaLog(log);
+                InsertLog(log);
                 return;
             }
 
             var sw = Stopwatch.StartNew();
             _dal_analysis_conclusion.BulkInsertsEx(runFlag, list);
             log = $"鍒嗘瀽杩涘害:{runFlag},涓嬫爣:{index},鏁伴噺:{list.Count},鎻掑叆鑰楁椂:{sw.ElapsedMilliseconds / 1000}m";
-            InsertAnaLog(log);
+            InsertLog(log);
         }
-
-        /// <summary>
-        /// 鎻掑叆鍒嗘瀽鍋忓樊
-        /// </summary> 
-        private bool InsertAnalysisDeviationList(List<Entity.AnalysisDeviation> analysis_deviation_list)
-        {
-            var bol = _dal_analysis_deviation.Inserts(analysis_deviation_list);
-            return bol;
-        }
-
 
         #endregion
 
     }
 
 }
+
+
+///// <summary>
+///// 鍒嗘瀽鍙傛暟
+///// </summary>
+//public void Test_bak(List<Model.Pump> pumps)
+//{
+//    if (pumps == null || pumps.Count < 1)
+//    {
+//        return;
+//    }
+
+//    _dal_analysis_conclusion.DeleteAllTable();
+//    for (int pump_index = 0; pump_index < pumps.Count; pump_index++)
+//    {
+//        var pump = pumps[pump_index];
+//        var flag = pump.Flag;
+//        var run_flag = RunFlagHelper.GetRunFlag(flag, pump.IsBp);
+//        var table_name = _dal_analysis_pump.GetTableName(run_flag);
+//        var analysis_pump_list = _dal_analysis_pump.GetAllByTableName(table_name);
+//        if (analysis_pump_list == null || !analysis_pump_list.Any())
+//        {
+//            continue;
+//        }
+
+//        var analysis_pump_list_count = analysis_pump_list.Count();
+//        var analysis_conclusion_list = new List<List<Entity.AnalysisParameter>>(analysis_pump_list_count);
+//        for (int analysis_pump_index = 0; analysis_pump_index < analysis_pump_list_count; analysis_pump_index++)
+//        {
+//            var analysis_pump = analysis_pump_list[analysis_pump_index];
+//            var curveQH = JsonHelper.Json2Object<Curve.CurveExpress>(analysis_pump.CurveQH);
+//            var curveQP = JsonHelper.Json2Object<Curve.CurveExpress>(analysis_pump.CurveQP);
+//            var bol = curveQH.GetMinMaxPointY(out double maxY, out double minY);
+//            if (!bol)
+//                throw new Exception("鏇茬嚎寮傚父");
+
+//            var min_flow = curveQH.Min;
+//            var max_flow = curveQH.Max;
+
+//            var min_flow_head = curveQH.GetFitPointY(min_flow);
+//            var max_flow_head = curveQH.GetFitPointY(max_flow);
+
+//            var min_flow_diffV = PumpCalculateHelper.CalculateOtherPress(min_flow, pump.Ic, pump.Oc, null, null);
+//            var max_flow_diffV = PumpCalculateHelper.CalculateOtherPress(max_flow, pump.Ic, pump.Oc, null, null);
+
+//            decimal min_flow_pressure_diff = (decimal)(min_flow_head - min_flow_diffV);
+//            decimal max_flow_pressure_diff = (decimal)(max_flow_head - max_flow_diffV);
+
+//            decimal pressure_space = 0.1m;
+//            for (decimal pressure_diff = max_flow_pressure_diff; pressure_diff < max_flow_pressure_diff; pressure_diff += pressure_space)
+//            {
+
+//            }
+
+//            var max_head = Math.Ceiling(maxY);
+//            var min_head = Math.Floor(minY);
+
+//            //var curve_max_flow= max.X;
+//            //var curve_min_flow= min.X;
+
+//            //var curve_max_diffV = PumpCalculateHelper.CalculateOtherPress(curve_max_flow, pump.Ic, pump.Oc, null, null);
+//            //var curve_min_diffV = PumpCalculateHelper.CalculateOtherPress(curve_min_flow, pump.Ic, pump.Oc, null, null);
+
+//            //var curve_max_pressure_diff = max_head - curve_max_diffV;
+//            //var curve_min_pressure_diff = min_head - curve_min_diffV;
+
+
+
+
+//            var max_diffV = PumpCalculateHelper.CalculateOtherPress(min_flow, pump.Ic, pump.Oc, null, null);
+//            var min_diffV = PumpCalculateHelper.CalculateOtherPress(max_flow, pump.Ic, pump.Oc, null, null);
+
+//            var max_pressure_diff = max_head - max_diffV;
+//            var min_pressure_diff = min_head - min_diffV;
+//            //max_pressure_diff = Math.Round(max_pressure_diff);
+
+//            var current_list_count = (int)((max_head - min_head) / _head_space) + 1;
+//            var current_analysis_conclusion_list = new List<Entity.AnalysisParameter>(current_list_count);
+//            for (double head = min_head; head <= max_head; head += _head_space)
+//            {
+//                var flow = curveQH.GetInterPointLastX(head) ?? 0;
+//                if (flow < 1)
+//                {
+//                    continue;
+//                }
+
+//                double diffV = 0;
+//                if (pump.Oc != null)
+//                {
+//                    diffV = PumpCalculateHelper.CalculateOtherPress(flow, pump.Ic, pump.Oc, null, null);
+//                }
+
+//                var analysis_conclusion = new Entity.AnalysisParameter();
+//                analysis_conclusion.ID = Yw.YitIdHelper.NextId();
+//                analysis_conclusion.PumpID = analysis_pump.ID;
+//                analysis_conclusion.Hz = analysis_pump.Hz;
+//                analysis_conclusion.Head = head;
+//                analysis_conclusion.PressureDiff = head - diffV;
+//                analysis_conclusion.Flow = flow;
+//                analysis_conclusion.Power = curveQP.GetFitPointY(flow);
+//                analysis_conclusion.UWP = PumpCalculateHelper.CalculateUWP(analysis_conclusion.Power, analysis_conclusion.Flow, analysis_conclusion.Head);
+//                analysis_conclusion.WP = PumpCalculateHelper.CalculateWP(analysis_conclusion.Power, analysis_conclusion.Flow);
+
+//                Round(analysis_conclusion);
+//                current_analysis_conclusion_list.Add(analysis_conclusion);
+//            }
+//            analysis_conclusion_list.Add(current_analysis_conclusion_list);
+//        }
+//        var list = analysis_conclusion_list.SelectMany(x => x.ToList()).ToList();
+//        InsertList(pump_index + 1, run_flag, list);
+//    }
+
+//}
+
+
+///// <summary>
+///// 鍒嗘瀽鍙傛暟
+///// </summary>
+//public void AnalysisParameterBak(List<Model.Pump> pumps)
+//{
+//    InsertLog($"寮�濮嬪垎鏋愭车缁撹!");
+//    if (pumps == null || pumps.Count < 1)
+//    {
+//        InsertLog("鍒嗘瀽澶辫触:娌℃湁娉垫暟鎹�!");
+//        return;
+//    }
+
+//    _dal_analysis_conclusion.DeleteAllTable();
+//    var analysis_pump_table_list = _dal_analysis_pump.GetAllTableName();
+//    if (analysis_pump_table_list == null || !analysis_pump_table_list.Any())
+//    {
+//        InsertLog($"鏃犲垎鏋愭车琛�!");
+//        return;
+//    }
+//    var flag_pump_dict = pumps.ToDictionary(x => x.Flag, x => x);
+//    var tableCount = analysis_pump_table_list.Count();
+//    InsertLog($"鍒嗘瀽{tableCount}鍙版车缁撹!");
+//    for (int tableIndex = 0; tableIndex < tableCount; tableIndex++)
+//    {
+//        var table_name = analysis_pump_table_list[tableIndex];
+//        var analysis_pump_list = _dal_analysis_pump.GetAllByTableName(table_name);
+//        if (analysis_pump_list == null || !analysis_pump_list.Any())
+//        {
+//            InsertLog($"鍒嗘瀽杩涘害:{table_name},绗瑊tableIndex + 1}涓�,鍒嗘瀽瀹屾瘯");
+//            continue;
+//        }
+//        var analysis_pump_list_count = analysis_pump_list.Count();
+//        var analysis_conclusion_list = new List<List<Entity.AnalysisParameter>>(analysis_pump_list_count);
+
+//        for (int analysis_pump_index = 0; analysis_pump_index < analysis_pump_list_count; analysis_pump_index++)
+//        {
+//            var analysis_pump = analysis_pump_list[analysis_pump_index];
+//            var pump = flag_pump_dict[analysis_pump.Flag];
+//            var curveQH = JsonHelper.Json2Object<Curve.CurveExpress>(analysis_pump.CurveQH);
+//            var curveQP = JsonHelper.Json2Object<Curve.CurveExpress>(analysis_pump.CurveQP);
+//            var bol = curveQH.GetMinMaxPointY(out double maxY, out double minY);
+//            if (!bol)
+//                return;
+//            var max_head = Math.Ceiling(maxY);
+//            var min_head = Math.Floor(minY);
+
+//            var current_list_count = (int)((max_head - min_head) / _head_space) + 1;
+//            var current_analysis_conclusion_list = new List<Entity.AnalysisParameter>(current_list_count);
+//            for (double head = min_head; head <= max_head; head += _head_space)
+//            {
+//                var flow = curveQH.GetInterPointLastX(head) ?? 0;
+//                if (flow < 1)
+//                {
+//                    continue;
+//                }
+
+//                double differV = 0;
+//                if (pump.Oc != null)
+//                {
+//                    differV = PumpCalculateHelper.CalculateOtherPress(flow, pump.Ic, pump.Oc, null, null);
+//                }
+
+//                var analysis_conclusion = new Entity.AnalysisParameter();
+//                analysis_conclusion.ID = Yw.YitIdHelper.NextId();
+//                analysis_conclusion.PumpID = analysis_pump.ID;
+//                analysis_conclusion.Hz = analysis_pump.Hz;
+//                analysis_conclusion.Head = head;
+//                analysis_conclusion.PressureDiff = head - differV;
+//                analysis_conclusion.Flow = flow;
+//                analysis_conclusion.Power = curveQP.GetFitPointY(flow);
+//                analysis_conclusion.UWP = PumpCalculateHelper.CalculateUWP(analysis_conclusion.Power, analysis_conclusion.Flow, analysis_conclusion.Head);
+//                analysis_conclusion.WP = PumpCalculateHelper.CalculateWP(analysis_conclusion.Power, analysis_conclusion.Flow);
+
+//                Round(analysis_conclusion);
+//                current_analysis_conclusion_list.Add(analysis_conclusion);
+//            }
+//            analysis_conclusion_list.Add(current_analysis_conclusion_list);
+//        }
+//        var list = analysis_conclusion_list.SelectMany(x => x.ToList()).ToList();
+//        var run_flag = _dal_analysis_pump.GetRunFlag(table_name);
+//        InsertList(tableIndex + 1, run_flag, list);
+//    }
+//}

--
Gitblit v1.9.3