From 8ea88fedd51e4961d0fd0aec6c2873a579fb6db8 Mon Sep 17 00:00:00 2001
From: tangxu <76880903@qq.com>
Date: 星期一, 31 十月 2022 14:18:36 +0800
Subject: [PATCH] 完善调度计划分析

---
 Calculation/IStation.Calculation.Dispatch/helper/DispatchAnaGeneralHelper压力.cs |  131 ++++++++++++++++++++++++++++---------------
 1 files changed, 85 insertions(+), 46 deletions(-)

diff --git "a/Calculation/IStation.Calculation.Dispatch/helper/DispatchAnaGeneralHelper\345\216\213\345\212\233.cs" "b/Calculation/IStation.Calculation.Dispatch/helper/DispatchAnaGeneralHelper\345\216\213\345\212\233.cs"
index fdd7862..f4d3da2 100644
--- "a/Calculation/IStation.Calculation.Dispatch/helper/DispatchAnaGeneralHelper\345\216\213\345\212\233.cs"
+++ "b/Calculation/IStation.Calculation.Dispatch/helper/DispatchAnaGeneralHelper\345\216\213\345\212\233.cs"
@@ -65,20 +65,41 @@
         /// 鍒濆鍖栧弬鏁�
         /// </summary>
         /// <param name="targetQ"></param>
-        /// <param name="water_level"></param>
-        /// <param name="outlet_press"></param>
+        /// <param name="inlet_para"></param>
+        /// <param name="inlet_is_waterlevel"></param>
+        /// <param name="outlet_para"></param>
+        /// <param name="outlet_is_waterlevel"></param>
         /// <param name="MinQ"></param>
         /// <param name="MaxQ"></param>
         /// <param name="allEnginePumpList"></param>
         /// <param name="MachineRunFilterList"></param>
         /// <returns></returns>
         public bool InitialParas(
-            double targetQ, double water_level, double outlet_press, string MinQ, string MaxQ,
+            double targetQ, 
+            double inlet_para,bool inlet_is_waterlevel,
+            double outlet_para,bool outlet_is_waterlevel,
+            string MinQ, string MaxQ,
             List<IStation.Calculation.DispatchAna.Model.MachineDetail> allEnginePumpList,
             List<IStation.Calculation.DispatchAna.Model.MachineRunFilter> MachineRunFilterList)
-        {
-            this._targetInletPress = Math.Round(water_level / 102, 4);
-            this._targetOutletPress = outlet_press;
+        { 
+            if (inlet_is_waterlevel)
+            {
+                this._targetInletPress = Math.Round(inlet_para / 102, 4);
+            }
+            else
+            {
+                this._targetInletPress = Math.Round(inlet_para, 4);
+            }
+
+            if (outlet_is_waterlevel)
+            {
+                this._targetOutletPress = Math.Round(outlet_para / 102, 4);
+            }
+            else
+            {
+                this._targetOutletPress = outlet_para;
+            }
+
             this._targetQ = targetQ;
             this._allMachineList = allEnginePumpList;
 
@@ -283,51 +304,66 @@
 
             #region  寮�濮嬪垎鏋�
             _anaSchemeList = new List<IStation.Calculation.DispatchAna.Model.AnaScheme>();
-
-            int max_fre_num = 2;//鏈�澶氬彉棰�2鍙�, 鍏朵綑鐨勫嵆浣垮彉棰�,涔熸寜50HZ杩愯
-            var arry_allMachineList = all_machine_ana_result_list.ToArray();
-            for (int openPumpNum = 1; openPumpNum <= all_machine_ana_result_list.Count(); openPumpNum++)
+            if (all_machine_ana_result_list.Count() == 0)
             {
-                //寰楀埌鎵�鏈夋帓鍒楃粍鍚� 
-                List<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[]> open_machine_combine_list =
-                    IStation.Model.PermutationAndCombination<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase>.GetCombination(
-                        arry_allMachineList, openPumpNum);
-
-
-                foreach (var open_machine_list in open_machine_combine_list)
+                return null;
+            }
+            else if (all_machine_ana_result_list.Count() == 1)
+            {
+                var first_pump = all_machine_ana_result_list.First();
+                first_pump.AsFrequency = true;
+                IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[] open_machine_list = new
+                     IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[] { first_pump };
+                AnaMahineComb(open_machine_list);
+            }
+            else
+            {
+                int max_fre_num = 2;//鏈�澶氬彉棰�2鍙�, 鍏朵綑鐨勫嵆浣垮彉棰�,涔熸寜50HZ杩愯
+                var arry_allMachineList = all_machine_ana_result_list.ToArray();
+                for (int openPumpNum = 1; openPumpNum <= all_machine_ana_result_list.Count(); openPumpNum++)
                 {
-                    var fre_machines = (from x in open_machine_list where x.IsFrequency select x).ToArray();
+                    //寰楀埌鎵�鏈夋帓鍒楃粍鍚� 
+                    List<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[]> open_machine_combine_list =
+                        IStation.Model.PermutationAndCombination<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase>.GetCombination(
+                            arry_allMachineList, openPumpNum);
 
-                    if (fre_machines.Count() > max_fre_num)
-                    {//鏈�澶氭妸2鍙版车褰撲綔鍙橀娉佃繍琛�, 鍏朵綑鎸夊伐棰戞车杩愯
-                        List<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[]> real_fre_machine_combine_list =
-             IStation.Model.PermutationAndCombination<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase>.GetCombination(
-             fre_machines, max_fre_num);//鎺掑垪缁勫悎,鎵鹃噷闈㈢殑2鍙�
 
-                        foreach (var real_fre_machine_list in real_fre_machine_combine_list)
+                    foreach (var open_machine_list in open_machine_combine_list)
+                    {
+                        var fre_machines = (from x in open_machine_list where x.IsFrequency select x).ToArray();
+
+                        if (fre_machines.Count() > max_fre_num)
+                        {//鏈�澶氭妸2鍙版车褰撲綔鍙橀娉佃繍琛�, 鍏朵綑鎸夊伐棰戞车杩愯
+                            List<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[]> real_fre_machine_combine_list =
+                 IStation.Model.PermutationAndCombination<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase>.GetCombination(
+                 fre_machines, max_fre_num);//鎺掑垪缁勫悎,鎵鹃噷闈㈢殑2鍙�
+
+                            foreach (var real_fre_machine_list in real_fre_machine_combine_list)
+                            {
+                                foreach (var m in fre_machines)
+                                {//鍏堟妸鎵�鏈夊彉棰戞车褰撲綔宸ラ娉�
+                                    m.AsFrequency = false;
+                                }
+                                foreach (var m in real_fre_machine_list)
+                                {//鎶婃帓鍒楃粍鍚堜腑鐨勪袱鍙拌缃綅鍙橀娉�
+                                    m.AsFrequency = true;
+                                }
+                                AnaMahineComb(open_machine_list);
+                            }
+
+                        }
+                        else
                         {
                             foreach (var m in fre_machines)
-                            {//鍏堟妸鎵�鏈夊彉棰戞车褰撲綔宸ラ娉�
-                                m.AsFrequency = false;
-                            }
-                            foreach (var m in real_fre_machine_list)
-                            {//鎶婃帓鍒楃粍鍚堜腑鐨勪袱鍙拌缃綅鍙橀娉�
+                            {
                                 m.AsFrequency = true;
                             }
                             AnaMahineComb(open_machine_list);
                         }
-
-                    }
-                    else
-                    {
-                        foreach (var m in fre_machines)
-                        {
-                            m.AsFrequency = true;
-                        }
-                        AnaMahineComb(open_machine_list);
                     }
                 }
             }
+
 
             #endregion
             if (_anaSchemeList.Count() == 0)
@@ -409,15 +445,18 @@
                     fixPumpAnaCombine.Add(machine);
                 }
             }
+            if (fre_pump_count > 0)
+            {
+                if (total_min_flow > _targetQmax)
+                {
+                    return;
+                }
+                if (total_max_flow < _targetQmin)
+                {
+                    return;
+                }
+            }
 
-            if (total_min_flow > _targetQmax)
-            {
-                return;
-            }
-            if (total_max_flow < _targetQmin)
-            {
-                return;
-            }
 
             if (fre_pump_count == 0)
             {//鍙敤鍥洪娉靛嵆鍙�

--
Gitblit v1.9.3