using System.Collections.Generic;
|
using System.Linq;
|
|
|
namespace PBS.WinFrmUI.Hydro.Dispatch
|
{
|
/// <summary>
|
/// 常规
|
/// </summary>
|
public class Calculator_OptAna_General : CalculatorBase
|
{
|
/// <summary>
|
///
|
/// </summary>
|
protected List<PBS.WinFrmUI.Hydro.Dispatch.Model.MachineDetailEx> allMachineList = null;
|
|
#region 计算 最优方案
|
/// <summary>
|
/// 计算 最优方案
|
/// </summary>
|
/// <param name="complex_request_paras"></param>
|
/// <param name="eta_ana_records"></param>
|
/// <param name="machine_run_status"></param>
|
/// <param name="error_info"></param>
|
public List<Dispatch.Model.AnaScheme> CalcSchemes(
|
List<SimuPumpViewModel> simuCalcPumps,
|
PBS.WinFrmUI.Hydro.Dispatch.Model.RequestParasComplex complex_request_paras,
|
PBS.WinFrmUI.Hydro.Dispatch.Model.EtaAnaRecord4Station eta_ana_records,
|
PBS.WinFrmUI.Hydro.Dispatch.Model.MachineRunPara machine_run_status,
|
out string error_info)
|
{
|
|
return CalcSchemes扬程(simuCalcPumps, complex_request_paras, machine_run_status, out error_info);
|
}
|
|
protected List<Dispatch.Model.AnaScheme> CalcSchemes扬程(List<SimuPumpViewModel> simuCalcPumps,
|
PBS.WinFrmUI.Hydro.Dispatch.Model.RequestParasComplex complex_request_paras,
|
PBS.WinFrmUI.Hydro.Dispatch.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;
|
}
|
}
|
}
|
|
|
PBS.WinFrmUI.Hydro.Dispatch.Common.DispatchAnaGeneralHelper扬程 calc_pipe_helper =
|
new PBS.WinFrmUI.Hydro.Dispatch.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
|
|
|
|
|
}
|
}
|