using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using IStation.Application; using IStation.Dto; namespace IStation.Calculation { /// /// 计划分析计算器接口 /// public class PlanAnaBaseCalculator { /// /// /// protected IStation.Calculation.DispatchAna.IOptAnaCalc _dispatchAnaCalc = null; /// /// /// protected long _corpID = 0; /// /// /// protected long _stationID = 0; /// /// /// /// /// public void SetStationID(long corpID,long stationID) { this._corpID = corpID; this._stationID = stationID; } /// /// /// /// /// public virtual bool Is液位Monitor(string tagname) { return false; } /// /// /// /// /// public virtual bool IsIgnoreAble(string tagname) { return false; } /// /// /// public virtual List Calc ( Model.Station station,int factoryId, List allMonthSumRecord, out string error_info) { if(_dispatchAnaCalc == null) { //由继承类设置调度辅助类 error_info = "未构建DispatchAna.IOptAnaCalc"; return null; } int year = DateTime.Now.Year; List monthRecordList = new List(); foreach (var monthRecord in allMonthSumRecord) { //构建每小时的参数 List allHourRequests = BuildHourRequest(monthRecord.HourRecords,out error_info); if(allHourRequests == null || allHourRequests.Count() == 0) { error_info = "构建 HourRequests 失败,原因:" + error_info; return null; } if (!string.IsNullOrEmpty(error_info)) { error_info = "构建 HourRequests 失败,原因:" + error_info; return null; } //一个月的天数 var dayNumber = DateTime.DaysInMonth(year, monthRecord.Month); //每天的汇总 var daySum = this._dispatchAnaCalc.CalcSumData(allHourRequests,true, out error_info); if (daySum == null || daySum.Qt <= 0) { error_info = "青草沙,调度分析失败,原因:" + error_info; return null; } //计算每月的汇总 Dto.MonthCalcuResult monthSum = new Dto.MonthCalcuResult(); monthSum.Month = monthRecord.Month; monthSum.Qt = Math.Round(daySum.Qt * dayNumber, 1); monthSum.Dt = Math.Round(daySum.Dt * dayNumber, 2); monthSum.WP = Math.Round(daySum.WP, 3); monthRecordList.Add(monthSum); } error_info = null; return monthRecordList; } /// /// 构建每小时的参数 /// /// /// /// protected virtual List BuildHourRequest( List HourSumRecords, out string error_info) { List allHourRequests = new List(); for (int i = 0; i <= 23; i++) { var hourSumRecord = new IStation.Calculation.DispatchAna.Model.HourRequest(); hourSumRecord.Hour = i; var allRecords_hour = HourSumRecords[i].Records; hourSumRecord.Request = BuildDispatchAnaRequest(allRecords_hour,out error_info); if(hourSumRecord.Request == null) { return allHourRequests; } allHourRequests.Add(hourSumRecord); } error_info = null; return allHourRequests; } /// /// 根据三高提供的参数,构建调度分析所需的参数, 每个泵站, 这个地方都不一样 /// /// /// /// protected virtual DispatchAna.Model.RequestParasComplex BuildDispatchAnaRequest( List allRecords_hour, out string error_info) { error_info = "未实例化BuildDispatchAnaRequest"; return null; } } }