using IStation.IEtaCalculation;
|
using IStation.Model;
|
|
namespace IStation.EtaCalculation
|
{
|
/// <summary>
|
/// 分析计算器(上海原水)
|
/// </summary>
|
public class AnalyCalculator4SHYS : AnalyCalculatorBase, IStation.IEtaCalculation.IAnalyCalculator
|
{
|
private long _corpID = 0;
|
/// <summary>
|
/// 计算
|
/// </summary>
|
/// <param name="context">分析上下文</param>
|
/// <param name="handler">EtaMultiRealRecordPure 为基类 EtaLogicRealRecordPure、EtaMultiRealRecordPure、EtaSingleRealRecordPure都集成自此基类</param>
|
/// <returns></returns>
|
/// <exception cref="NotImplementedException"></exception>
|
public override bool Calculate(EtaCorpAnalyContext context,
|
Action<
|
List<Model.EtaSingleRealRecordPure>,
|
List<Model.EtaMultiRealRecordPure>,
|
List<Model.EtaLogicRealRecordPure>,
|
string> handler)
|
{
|
List<Model.EtaSingleRealRecordPure> all_Single = new List<EtaSingleRealRecordPure>();
|
List<Model.EtaMultiRealRecordPure> all_Multi = new List<EtaMultiRealRecordPure>();
|
List<Model.EtaLogicRealRecordPure> all_Logic = null;
|
this._corpID = context.ID;
|
var dateTime = context.DataTime;
|
var duration = context.Duration;
|
|
if(this._corpID == 4)
|
{
|
|
}
|
|
try
|
{
|
#region 泵站分析
|
//16时原水泵站数量
|
InitialStationList(context, 22);
|
|
if (_allStationContextList == null || _allStationContextList.Count() == 0)
|
{
|
return false;
|
}
|
|
List<IStation.Calculation.Eta.Model.StationAnaInfoBundle> allStationBundles = new List<Calculation.Eta.Model.StationAnaInfoBundle>(_allStationContextList.Count());
|
foreach (var station_context in _allStationContextList)
|
{
|
var calalcor = CreateCalculater4Station(station_context.ID);
|
if (calalcor == null)
|
continue;
|
|
string error_info = null;
|
if (!calalcor.Calculate(station_context, out error_info))
|
{
|
LogHelper.Info($"能效分析任务中,客户标识:(上海原水), 泵站信息:{station_context.ID}({station_context.Name},错误信息:{error_info}");
|
continue;
|
}
|
|
|
|
var results_machines = calalcor.GetAllSingleAnaRecord();
|
if (results_machines != null)
|
{
|
foreach (var machine in results_machines)
|
{
|
machine.CorpID = _corpID;
|
machine.DataTime = dateTime;
|
machine.Duration = duration;
|
if (machine.AnalyStatus == Model.Eta.eAnalyStatus.Unkonw)
|
{
|
LogHelper.Info($"能效分析任务中,AnalyStatus(machine) 值为 Model.Eta.eAnalyStatus.Unkonw,客户标识:(上海原水), 泵站信息:{station_context.ID}({station_context.Name} ");
|
}
|
|
all_Single.Add(machine);
|
}
|
}
|
|
var result_station = calalcor.GetStationAnaRecord();
|
if (result_station != null)
|
{
|
result_station.CorpID = _corpID;
|
result_station.DataTime = dateTime;
|
result_station.Duration = duration;
|
if (result_station.AnalyStatus == Model.Eta.eAnalyStatus.Unkonw)
|
{
|
LogHelper.Info($"能效分析任务中,AnalyStatus( station) 值为 Model.Eta.eAnalyStatus.Unkonw,客户标识:(上海原水), 泵站信息:{station_context.ID}({station_context.Name} ");
|
}
|
if (result_station.HZa == null)
|
result_station.HZa = new List<double>();
|
if (result_station.RunningFlag == null)
|
result_station.RunningFlag = new List<int>();
|
|
all_Multi.Add(result_station);
|
}
|
|
var results_pipes = calalcor.GetAllPipeAnaRecord();
|
if (results_pipes != null)
|
{
|
foreach (var pipe in results_pipes)
|
{
|
pipe.CorpID = _corpID;
|
pipe.DataTime = dateTime;
|
pipe.Duration = duration;
|
if (pipe.AnalyStatus == Model.Eta.eAnalyStatus.Unkonw)
|
{
|
LogHelper.Info($"能效分析任务中,AnalyStatus( pipe) 值为 Model.Eta.eAnalyStatus.Unkonw,客户标识:(上海原水), 泵站信息:{station_context.ID}({station_context.Name} ");
|
}
|
if (pipe.HZa == null)
|
pipe.HZa = new List<double>();
|
if (pipe.RunningFlag == null)
|
pipe.RunningFlag = new List<int>();
|
all_Multi.Add(pipe);
|
}
|
}
|
|
|
var station_bundle = calalcor.GetAnaBundle();
|
if(station_bundle != null)
|
allStationBundles.Add(station_bundle);
|
|
}
|
|
if (all_Single.Count() == 0 || all_Multi.Count() == 0)
|
return false;
|
|
|
|
#endregion
|
|
|
//业务区域分析
|
var logicCalc = new IStation.EtaCalculation.SHYS.EtaAnalyCalculator4Logic();
|
logicCalc.AnaContext(context, allStationBundles);
|
all_Logic = logicCalc.GetAllLogicAnaRecord();
|
if (all_Logic != null)
|
{
|
foreach (var logic in all_Logic)
|
{
|
logic.CorpID = _corpID;
|
logic.DataTime = dateTime;
|
logic.Duration = duration;
|
if (logic.AnalyStatus == Model.Eta.eAnalyStatus.Unkonw)
|
{
|
LogHelper.Info($"能效分析任务中,AnalyStatus(logic) 值为 Model.Eta.eAnalyStatus.Unkonw,客户标识:(上海原水), logic id信息:{logic.ObjectID} ");
|
}
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
IStation.LogHelper.Error(String.Format("corpID:{0},能效分析出错,原因是:{1}", this. _corpID, ex.Message ));
|
return false;
|
}
|
if (handler != null)
|
{
|
handler.Invoke(all_Single, all_Multi, all_Logic, null);
|
}
|
return true;
|
}
|
|
|
|
private IEtaStationAnalyCalculator CreateCalculater4Station(long StationID)
|
{
|
if (StationID == 1)
|
{
|
return new IStation.EtaCalculation.SHYS.Station.EtaAnalyCalculator4青草沙取水泵房();
|
}
|
|
if (StationID == 2)
|
{
|
return new IStation.EtaCalculation.SHYS.Station.EtaAnalyCalculator4长兴岛输水泵房();
|
}
|
|
if (StationID == 3)
|
{
|
return new IStation.EtaCalculation.SHYS.Station.EtaAnalyCalculator4五号沟严桥方向1号泵房();
|
}
|
if (StationID == 4)
|
{
|
return new IStation.EtaCalculation.SHYS.Station.EtaAnalyCalculator4严桥泵站();
|
}
|
if (StationID == 5)
|
{
|
return new IStation.EtaCalculation.SHYS.Station.EtaAnalyCalculator4五号沟严桥方向2号泵房();
|
}
|
if (StationID == 6)
|
{
|
return new IStation.EtaCalculation.SHYS.Station.EtaAnalyCalculator4临江一号泵房_老();
|
}
|
if (StationID == 7)
|
{
|
return new IStation.EtaCalculation.SHYS.Station.EtaAnalyCalculator4临江二号泵房_新();
|
}
|
if (StationID == 8)
|
{
|
return new IStation.EtaCalculation.SHYS.Station.EtaAnalyCalculator4徐泾泵站();
|
}
|
if (StationID == 9)
|
{
|
return new IStation.EtaCalculation.SHYS.Station.EtaAnalyCalculator4五号沟金海方向();
|
}
|
if (StationID == 10)
|
{
|
return new IStation.EtaCalculation.SHYS.Station.EtaAnalyCalculator4金海泵站();
|
}
|
if (StationID == 11)
|
{
|
return new IStation.EtaCalculation.SHYS.Station.EtaAnalyCalculator4南汇北泵站();
|
}
|
if (StationID == 12)
|
{
|
return new IStation.EtaCalculation.SHYS.Station.EtaAnalyCalculator4五号沟凌桥方向();
|
}
|
if (StationID == 13)
|
{
|
return new IStation.EtaCalculation.SHYS.Station.EtaAnalyCalculator4成行一取();
|
}
|
|
|
if (StationID == 14)
|
{
|
return new IStation.EtaCalculation.SHYS.Station.EtaAnalyCalculator4成行二取();
|
}
|
if (StationID == 15)
|
{
|
return new IStation.EtaCalculation.SHYS.Station.EtaAnalyCalculator4陈行一输();
|
}
|
////if (StationID == 16)
|
////{//运行状态 不是数据格式
|
//// return new IStation.EtaCalculation.SHYS.Station.EtaAnalyCalculator4陈行二输();
|
////}
|
////if (StationID == 17)
|
////{ //数据还不全
|
//// return new IStation.EtaCalculation.SHYS.Station.EtaAnalyCalculator4泰和泵站();
|
////}
|
|
if (StationID == 18)
|
{//金泽取水
|
return null;
|
}
|
|
if (StationID == 19)
|
{
|
return new IStation.EtaCalculation.SHYS.Station.EtaAnalyCalculator4金泽泵站();
|
}
|
if (StationID == 20)
|
{
|
return new IStation.EtaCalculation.SHYS.Station.EtaAnalyCalculator4松江泵站();
|
}
|
////if (StationID == 21)
|
////{// 由于没有出口压力, 暂时不能分析
|
//// return new IStation.EtaCalculation.SHYS.Station.EtaAnalyCalculator4松浦大桥泵站();
|
////}
|
|
return null;
|
}
|
|
}
|
}
|