using System.Collections.Generic; using System.Linq; namespace PBS.WinFrmUI.Hydro.Dispatch { /// /// 常规 /// public class Calculator_OptAna_General : CalculatorBase { /// /// /// protected List allMachineList = null; #region 计算 最优方案 public List CalcSchemes( List simuCalcPumps, Model.RequestParasComplex complex_request_paras, Model.MachineRunPara machine_run_status, out string error_info) { return CalcSchemes扬程(simuCalcPumps, complex_request_paras, machine_run_status, out error_info); } protected List CalcSchemes扬程( List simuCalcPumps, Model.RequestParasComplex complex_request_paras, Model.MachineRunPara machine_run_status, out string error_info) { error_info = null; 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 < 0.01) { 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( simuCalcPumps, out allMachineList, out error_info)) { error_info = "机泵组无法构建,ERROR 70,错误信息:" + error_info; return null; } } if (allMachineList != null && allMachineList.Any()) { if (machine_run_status != null && machine_run_status.MachineRunFilter != null && machine_run_status.MachineRunFilter.Any()) { foreach (var machine in allMachineList) { var runStatus = machine_run_status.MachineRunFilter.Find(x => x.MachineID == machine.MachineID); if (runStatus != null) { machine.Percentage = runStatus.Percentage; } machine.IsFrequency = runStatus.IsFrequency; } } } Common.DispatchAnaGeneralHelper扬程 calc_pipe_helper = new 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 } }