using IStation.IEtaCalculation; using IStation.Model; namespace IStation.EtaCalculation { /// /// 分析计算器(上海原水) /// public class AnalyCalculator4SHYS : 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; try { #region 泵站分析 //16时原水泵站数量 InitialStationList(context, 22); 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 == 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; } } }