| | |
| | | |
| | | 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; |
| | |
| | | #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(); |
| | |
| | | } |
| | | 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; |
| | |
| | | |
| | | |
| | | //汇总 |
| | | 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); |
| | | } |
| | | } |
| | | } |