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