using System.Collections.Generic;
|
using System.Linq;
|
|
namespace IStation.Dispatch
|
{
|
/// <summary>
|
///
|
/// </summary>
|
public class CalculatorBase
|
{
|
/// <summary>
|
/// 泵站ID
|
/// </summary>
|
protected long _stationId = 0;
|
|
|
/// <summary>
|
/// 初始化机泵列表
|
/// </summary>
|
protected bool BuildMachineList(out List<Model.MachineDetail> machines, out string errInfo)
|
{
|
machines = null;
|
errInfo = null;
|
if (_stationId <= 0)
|
{
|
errInfo = "_stationID未赋值";
|
return false;
|
}
|
|
var bllProduct = new BLL.Equipment();
|
var bllCurve = new BLL.PumpCurve();
|
|
//获取机泵列表
|
var enginePumps = bllProduct.GetEnginePumpListByBelongTypeAndBelongID(IStation.ObjectType.Station, _stationId);
|
|
if (enginePumps == null || enginePumps.Count() == 0)
|
{
|
errInfo = "未配置机泵";
|
return false;
|
}
|
machines = new List<Model.MachineDetail>();
|
foreach (var engine in enginePumps)
|
{
|
var pump = bllProduct.GetChildPumpByEnginePumpID(engine.ID);
|
if (pump == null)
|
{
|
errInfo = string.Format("机泵ID:{0},未配备泵信息", engine.ID);
|
return false;
|
}
|
|
|
var workCurve = bllCurve.GetDefaultWorkingByPumpID(pump.ID);
|
if (workCurve == null)
|
{
|
errInfo = string.Format("机泵ID:{0},泵{1},未配备泵曲线信息", engine.ID, pump.ID);
|
return false;
|
}
|
if (workCurve.CurveInfo == null)
|
{
|
errInfo = string.Format("机泵ID:{0},泵{1},未配备泵曲线信息", engine.ID, pump.ID);
|
return false;
|
}
|
var machineDetail = new Model.MachineDetail(engine, pump, workCurve);
|
machines.Add(machineDetail);
|
}
|
|
return true;
|
}
|
|
|
#region 计算能耗
|
|
/// <summary>
|
/// 计算千吨能耗
|
/// </summary>
|
/// <param name="power">功率kW</param>
|
/// <param name="flow">瞬时流量m³/h</param>
|
/// <returns>kW·h/km³</returns>
|
public static double CalculateWP(double power, double flow)
|
{
|
if (flow < 0.1)
|
return 0;
|
return power / flow * 1000;
|
}
|
|
/// <summary>
|
/// 计算单位能耗
|
/// </summary>
|
/// <param name="p">功率kW</param>
|
/// <param name="q">瞬时流量m³/h</param>
|
/// <param name="h">扬程m</param>
|
/// <returns>kW·h/km³</returns>
|
public static double CalculateUWP(double p, double q, double h)
|
{
|
if (q < 0.1)
|
return default;
|
if (h < 0.1)
|
return default;
|
return p / q / h * 1000;
|
}
|
|
#endregion
|
|
}
|
}
|