From 5b5c4221ec96596e14da1b5cec9e29f27555daa2 Mon Sep 17 00:00:00 2001
From: tangxu <76880903@qq.com>
Date: 星期二, 08 十一月 2022 13:00:52 +0800
Subject: [PATCH] Merge branch 'master' of http://47.103.154.90:83/r/IStation/Service.V4.1

---
 Calculation/IStation.Calculation.Dispatch/base/CalculatorOptAnaBase.cs |  104 ++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 77 insertions(+), 27 deletions(-)

diff --git a/Calculation/IStation.Calculation.Dispatch/base/CalculatorOptAnaBase.cs b/Calculation/IStation.Calculation.Dispatch/base/CalculatorOptAnaBase.cs
index 88abe46..27cb80a 100644
--- a/Calculation/IStation.Calculation.Dispatch/base/CalculatorOptAnaBase.cs
+++ b/Calculation/IStation.Calculation.Dispatch/base/CalculatorOptAnaBase.cs
@@ -30,18 +30,30 @@
 
         Dictionary<string, IStation.Calculation.DispatchAna.Model.AnaScheme> _dict = new Dictionary<string, Model.AnaScheme>();
         /// <summary>
-        /// 璁$畻姹囨�绘暟鎹�
+        /// 鎻愬崌鍑哄彛鍘嬪姏姣忔鎻愬崌鐨勭櫨鍒嗙巼
         /// </summary>
+        public double UpOutletPressPercent { get; set; } = 0;
+        /// <summary>
+        /// 鎻愬崌鍑哄彛鍘嬪姏娆℃暟
+        /// </summary>
+        public int UpOutletPressCount { get; set; } = 0;
+
+        /// <summary>
+        /// 璁$畻姹囨�绘暟鎹� :鎴愬姛杩斿洖null, 澶辫触杩斿洖閿欒淇℃伅
+        /// </summary>
+        /// <param name="Month">鏈堜唤</param>
         /// <param name="HourRequests"></param>
-        /// <param name="isUseCache">鏄惁鐢ㄧ紦瀛�</param>
-        /// <param name="error_info"></param>
+        /// <param name="isUseCache">鏄惁鐢ㄧ紦瀛�</param> 
+        /// <param name="daySumData"></param>
         /// <returns></returns>
-        public virtual IStation.Calculation.DispatchAna.Model.DaySumData CalcSumData(
-             List<Model.HourRequest> HourRequests, bool isUseCache, out string error_info)
-        {
-            error_info = null;
-            IStation.Calculation.DispatchAna.Model.DaySumData sum = new Model.DaySumData();
-            sum.Qt = 0;
+        public virtual string  CalcSumData(
+             int Month,
+             List<Model.HourRequest> HourRequests,
+             bool isUseCache, 
+             out IStation.Calculation.DispatchAna.Model.DaySumData daySumData)
+        { 
+            daySumData = new Model.DaySumData();
+            daySumData.Qt = 0;
             foreach (var hourRequest in HourRequests)
             {
                 var complex_request_paras = hourRequest.Request;
@@ -49,9 +61,8 @@
                 #region 妫�鏌ユ暟鎹�
                 if (complex_request_paras.OutletPipePara == null || complex_request_paras.OutletPipePara.Count < 1)
                 {
-                    error_info = string.Format("{0}鏃�,鍒嗘瀽鍑洪敊,鍘熷洜鏄�:{1}",
-                        hourRequest.Hour + 1, "鍑哄彛绠¤矾鍙傛暟鏈夎, 璇风‘璁ゆ槸鍚﹁祴鍊�, ERROR 35");
-                    return null;
+                    return string.Format("{0}鏈堢殑{1}鏃�,鍒嗘瀽鍑洪敊,鍘熷洜鏄�:{2}",
+                        Month, hourRequest.Hour  , "鍑哄彛绠¤矾鍙傛暟鏈夎, 璇风‘璁ゆ槸鍚﹁祴鍊�, ERROR 35"); 
                 }
 
                 StringBuilder cacheNameBuilder = new StringBuilder();
@@ -94,22 +105,34 @@
                 }
                 else
                 {
-                    var result_anaSchemes = CalcSchemes鍘嬪姏(complex_request_paras, null, out error_info);
+                    string error_info = "";
+                    List<Calculation.DispatchAna.Model.AnaScheme> result_anaSchemes = null;
+                    for (int i = 0; i <= UpOutletPressCount; i++)
+                    {
+                        result_anaSchemes = CalcSchemes鍘嬪姏(complex_request_paras, null, out error_info);
+                        if (result_anaSchemes != null && result_anaSchemes.Count > 0)
+                            break;
+                        if (UpOutletPressCount > 0 && i != UpOutletPressCount)
+                        {
+                            foreach (var p in complex_request_paras.OutletPipePara)
+                                p.TargetPress = complex_request_paras.OutletPipePara[0].TargetPress * (1.0 + UpOutletPressPercent / 100);
+
+                        }
+                    }
+
                     if (result_anaSchemes == null || result_anaSchemes.Count == 0)
                     {
                         if (string.IsNullOrEmpty(error_info))
                         {
-                            error_info = string.Format("{0}鏃�,鍒嗘瀽鍑洪敊,鍙兘鏄叆鍙傛暟鎹笉鍚堢悊,璇锋鏌�",
-                                                    hourRequest.Hour + 1 );
+                            return  string.Format("{0}鏈堢殑{1}鏃�,鍒嗘瀽鍑洪敊,鍙兘鏄叆鍙傛暟鎹笉鍚堢悊,璇锋鏌�",
+                                                  Month, hourRequest.Hour  );
                         }
                         else
                         {
-                            error_info = string.Format("{0}鏃�,鍒嗘瀽鍑洪敊,鍘熷洜鏄�:{1}",
-                                        hourRequest.Hour + 1,
-                                        error_info);
+                            return string.Format("{0}鏈堢殑{1}鏃�,鍒嗘瀽鍑洪敊,鍘熷洜鏄�:{2}",
+                                                   Month, hourRequest.Hour  ,
+                                                   error_info);
                         }
-        
-                        return null;
                     }
                     opt_anaScheme = result_anaSchemes.First();
                     _dict[cacheName] = opt_anaScheme;
@@ -117,13 +140,40 @@
 
 
                 //姹囨��
-                sum.Qt = sum.Qt + opt_anaScheme.TotalWrkQ;
-                sum.Dt = sum.Dt + opt_anaScheme.TotalWrkP;
-            }
-            sum.WP = CalculateWP(sum.Dt, sum.Qt);
-            return sum;
-        }
- 
+                daySumData.Qt = daySumData.Qt + opt_anaScheme.TotalWrkQ;
+                daySumData.Dt = daySumData.Dt + opt_anaScheme.TotalWrkP;
 
+                //
+                if(!string.IsNullOrEmpty(opt_anaScheme.ResultStatusInfo))
+                daySumData.Info = opt_anaScheme.ResultStatusInfo;
+            }
+            daySumData.WP = CalculateWP(daySumData.Dt, daySumData.Qt);
+            return null;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="pipes"></param>
+        /// <returns></returns>
+        protected static double CalcConnectPipeEta(List<IStation.Calculation.DispatchAna.Model.AnaScheme> pipes)
+        {
+            double eta = 0;
+            double qh = 0;
+            int count = 0;
+            foreach (var pipe in pipes)
+            {
+                if (pipe == null)
+                    continue;
+                if (pipe.TotalWrkQ < 1 || pipe.TotalWrkH < 0.1)
+                    continue;
+                qh += pipe.TotalWrkQ * pipe.TotalWrkH;
+                eta += pipe.TotalWrkQ * pipe.TotalWrkH * pipe.TotalWrkE;
+                count++;
+            }
+            if (count <= 0)
+                return 0;
+            return Math.Round(eta / qh, 2);
+        }
     }
 }

--
Gitblit v1.9.3