using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IStation.Calculation.DispatchAna { /// /// 常规 /// public class Calculator_OptAna_General : CalculatorOptAnaBase, IOptAnaCalc { List allMachineList = null; #region 计算 最优方案 /// /// 计算 最优方案 /// /// /// /// /// public List CalcSchemes( IStation.Calculation.DispatchAna.Model.RequestParasComplex complex_request_paras, IStation.Calculation.DispatchAna.Model.EtaAnaRecord4Station eta_ana_records, IStation.Calculation.DispatchAna.Model.MachineRunPara machine_run_status, out string error_info) { var isUsePress = complex_request_paras.PressValueType == Model.RequestParasComplex.ePressValueType.压力 ? true : false; if (eta_ana_records != null && eta_ana_records.Q.HasValue && eta_ana_records.H.HasValue) { if (complex_request_paras.OutletPipePara[0].TargetFlow < 50 || complex_request_paras.OutletPipePara[1].TargetFlow < 50) { complex_request_paras.ValvePara[0].OpenStatus = 0;//关闭 if (complex_request_paras.OutletPipePara[0].TargetFlow < 50) { complex_request_paras.OutletPipePara[0].TargetFlow = 0; complex_request_paras.OutletPipePara[1].TargetFlow = eta_ana_records.Q.Value; complex_request_paras.OutletPipePara[0].TargetPress = eta_ana_records.H.Value; complex_request_paras.OutletPipePara[1].TargetPress = eta_ana_records.H.Value; } else { complex_request_paras.OutletPipePara[1].TargetFlow = 0; complex_request_paras.OutletPipePara[0].TargetFlow = eta_ana_records.Q.Value; complex_request_paras.OutletPipePara[0].TargetPress = eta_ana_records.H.Value; complex_request_paras.OutletPipePara[1].TargetPress = eta_ana_records.H.Value; } } else { complex_request_paras.OutletPipePara[0].TargetPress = eta_ana_records.H.Value; complex_request_paras.OutletPipePara[1].TargetPress = eta_ana_records.H.Value; } } if (isUsePress) return CalcSchemes压力(complex_request_paras, machine_run_status, out error_info); else return CalcSchemes扬程(complex_request_paras, machine_run_status, out error_info); } /// /// /// /// /// /// /// protected override List CalcSchemes压力( IStation.Calculation.DispatchAna.Model.RequestParasComplex complex_request_paras, IStation.Calculation.DispatchAna.Model.MachineRunPara machine_run_status, out string error_info) { error_info = null; this._corpID = complex_request_paras.CorpID; this._stationID = complex_request_paras.StationID; if (complex_request_paras == null) { error_info = "ERROR 30"; return null; } if (complex_request_paras.OutletPipePara == null || complex_request_paras.OutletPipePara.Count < 1) { error_info = "出口管路参数有误, 请确认是否赋值, ERROR 35"; return null; } double target_flow = complex_request_paras.OutletPipePara[0].TargetFlow; if (target_flow < 10) { error_info = "流量值过低, 请确认是否赋值, 如果确实是零流量,则不需要做分析, ERROR 67"; return null; } double target_press = complex_request_paras.OutletPipePara[0].TargetPress; if (target_press < 0.01) { error_info = "压力值过低, 请确认是否赋值, ERROR 68"; return null; } double water_level = 0;//水位 if (complex_request_paras.WaterLevelPara != null && complex_request_paras.WaterLevelPara.Count > 0) { water_level = complex_request_paras.WaterLevelPara.First().Value; } if(allMachineList == null) { if (!BuildMachineList( out allMachineList, out error_info)) { error_info = "机泵组无法构建,ERROR 70,错误信息:" + error_info; return null; } } IStation.Calculation.DispatchAna.Common.DispatchAnaGeneralHelper压力 calc_pipe_helper = new IStation.Calculation.DispatchAna.Common.DispatchAnaGeneralHelper压力(); calc_pipe_helper.InitialParas( target_flow, water_level, target_press, complex_request_paras.OutletPipePara[0].TargetFlowRangeMin, complex_request_paras.OutletPipePara[0].TargetFlowRangeMax, allMachineList, machine_run_status==null?null: machine_run_status.MachineRunFilter); return calc_pipe_helper.CalcOptList(complex_request_paras.SchemeSortType, complex_request_paras.SchemeNumber); } /// /// /// /// /// /// /// protected List CalcSchemes扬程( IStation.Calculation.DispatchAna.Model.RequestParasComplex complex_request_paras, IStation.Calculation.DispatchAna.Model.MachineRunPara machine_run_status, out string error_info) { error_info = null; this._corpID = complex_request_paras.CorpID; this._stationID = complex_request_paras.StationID; if (complex_request_paras == null) { error_info = "ERROR 30"; return null; } if (complex_request_paras.OutletPipePara == null || complex_request_paras.OutletPipePara.Count < 1) { error_info = "出口管路参数有误, ERROR 35"; return null; } double target_flow = complex_request_paras.OutletPipePara[0].TargetFlow; if (target_flow < 10) { error_info = "流量值过低, ERROR 67"; return null; } double target_head = complex_request_paras.OutletPipePara[0].TargetPress; if (target_head < 0.01) { error_info = "压力值过低,ERROR 68"; return null; } if (allMachineList == null) { if (!BuildMachineList( out allMachineList, out error_info)) { error_info = "机泵组无法构建,ERROR 70,错误信息:" + error_info; return null; } } IStation.Calculation.DispatchAna.Common.DispatchAnaGeneralHelper扬程 calc_pipe_helper = new IStation.Calculation.DispatchAna.Common.DispatchAnaGeneralHelper扬程(); calc_pipe_helper.InitialParas( target_flow, target_head, complex_request_paras.OutletPipePara[0].TargetFlowRangeMin, complex_request_paras.OutletPipePara[0].TargetFlowRangeMax, allMachineList, machine_run_status.MachineRunFilter); return calc_pipe_helper.CalcOptList(complex_request_paras.SchemeSortType, complex_request_paras.SchemeNumber); } #endregion } }