using IStation.IEtaCalculation;
using IStation.Model;
namespace IStation.EtaCalculation
{
///
/// 分析计算器(上海城投)
///
public class AnalyCalculatorSMI : AnalyCalculatorBase, IStation.IEtaCalculation.IAnalyCalculator
{
private long _corpID = 0;
///
/// 计算
///
/// 分析上下文
/// EtaMultiRealRecordPure 为基类 EtaLogicRealRecordPure、EtaMultiRealRecordPure、EtaSingleRealRecordPure都集成自此基类
///
///
public override bool Calculate(EtaCorpAnalyContext context,
Action<
List,
List,
List,
string> handler)
{
List all_Single = new List();
List all_Multi = new List();
List all_Logic = null;
this._corpID = context.ID;
var dateTime = context.DataTime;
var duration = context.Duration;
if(this._corpID == 5)
{
}
try
{
#region 泵站分析
//16时 城投泵站数量
InitialStationList(context, 10);
if (_allStationContextList == null || _allStationContextList.Count() == 0)
{
return false;
}
List allStationBundles = new List(_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();
if (result_station.RunningFlag == null)
result_station.RunningFlag = new List();
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();
if (pipe.RunningFlag == null)
pipe.RunningFlag = new List();
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 == 24)
//{
// return new IStation.EtaCalculation.SMI.Station.EtaAnalyCalculator4松花江();
//}
if (StationID == 1574926275540291584)
{
return new IStation.EtaCalculation.SMI.Station.EtaAnalyCalculator4松花江_shys();
}
if (StationID == 25)
{
return new IStation.EtaCalculation.SMI.Station.EtaAnalyCalculator4南大路();
}
if (StationID == 1564533764212789248)
{
return new IStation.EtaCalculation.SMI.Station.EtaAnalyCalculator4南市水厂();
}
return null;
}
}
}