using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IStation.Calculation.DispatchAna { /// /// /// public class CalculatorBase { /// /// 公司ID /// protected long _corpID = 0; /// /// 泵站ID /// protected long _stationID = 0; /// /// 初始化机泵列表 /// /// /// /// protected bool BuildMachineList( out List allMachineList, out string error_info) { if (_corpID <= 0) { allMachineList = null; error_info = "_corpID未赋值"; return false; } if (_stationID <= 0) { allMachineList = null; error_info = "_stationID未赋值"; return false; } allMachineList = null; Service.Product service_product = new Service.Product(); Service.PumpCurve service_curve = new Service.PumpCurve(); var allEnginePumpList = service_product.GetEnginePumpListByBelongTypeAndBelongID( _corpID, ObjectType.Station, _stationID); //获取机泵列表 if (allEnginePumpList == null || allEnginePumpList.Count() == 0) { error_info = "未配置机泵"; return false; } //var allPumpList = service_product.GetChildPumpByID(this._stationID); allMachineList = new List(); allEnginePumpList = allEnginePumpList.OrderBy(x => x.SortCode).ToList(); foreach (var engine in allEnginePumpList) { IStation.Model.Product pump = service_product.GetChildPumpByEnginePumpID( _corpID, engine.ID); if (pump == null) { error_info = string.Format("机泵ID:{0},未配备泵信息", engine.ID); return false; } var curve_default = service_curve.GetWorkingByPumpID(_corpID, pump.ID); if (curve_default == null) { error_info = string.Format("机泵ID:{0},泵{1},未配备泵曲线信息", engine.ID, pump.ID); return false; } if (curve_default.CurveInfo == null) { error_info = string.Format("机泵ID:{0},泵{1},未配备泵曲线信息", engine.ID, pump.ID); return false; } //var motor = service_product.GetChildMotorProductByID(machine.ID); //if (motor == null) // continue; Model.MachineDetail machine_detail = new Model.MachineDetail(engine, pump, curve_default); allMachineList.Add(machine_detail); } error_info = null; return true; } #region 计算能耗 /// /// 计算千吨能耗 /// /// 功率kW /// 瞬时流量m³/h /// kW·h/km³ public static double CalculateWP(double power, double flow) { if (flow < 0.1) return 0; return power / flow * 1000; } /// /// 计算单位能耗 /// /// 功率kW /// 瞬时流量m³/h /// 扬程m /// kW·h/km³ 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 } }