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
|
{
|
/// <summary>
|
/// 计划分析计算器接口
|
/// </summary>
|
public class PlanAnaCalculator
|
{
|
/// <summary>
|
///
|
/// </summary>
|
protected IStation.Calculation.DispatchAna.IOptAnaCalc _dispatchAnaCalc = null;
|
/// <summary>
|
///
|
/// </summary>
|
public virtual List<Dto.MonthCalcuResult> Calc (
|
Model.Station station,int factoryId,
|
List<Dto.MonthSumRecord> sumRecordList,
|
out string error_info)
|
{
|
if(_dispatchAnaCalc == null)
|
{
|
error_info = "未构建DispatchAna.IOptAnaCalc";
|
return null;
|
}
|
int year = DateTime.Now.Year;
|
|
List<Dto.MonthCalcuResult> monthRecordList = new List<Dto.MonthCalcuResult>();
|
|
|
foreach (var monthRecord in sumRecordList)
|
{
|
//
|
List<IStation.Calculation.DispatchAna.Model.HourRequest> HourRequests =
|
BuildHourRequest(monthRecord.HourRecords,out error_info);
|
if(HourRequests == null || HourRequests.Count() == 0)
|
{
|
error_info = "青草沙 构建DHourRequests 失败,原因:" + error_info;
|
return null;
|
}
|
|
var dayNumber = DateTime.DaysInMonth(year, monthRecord.Month);
|
|
var daySum = this._dispatchAnaCalc.CalcSumData(HourRequests, 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 = daySum.Qt * dayNumber;
|
monthSum.Dt = daySum.Dt * dayNumber;
|
monthSum.WP = daySum.WP;
|
monthRecordList.Add(monthSum);
|
}
|
error_info = null;
|
return monthRecordList;
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="HourSumRecords"></param>
|
/// <param name="error_info"></param>
|
/// <returns></returns>
|
protected virtual List<IStation.Calculation.DispatchAna.Model.HourRequest> BuildHourRequest(
|
List<IStation.Dto.HourSumRecord> HourSumRecords,
|
out string error_info)
|
{
|
error_info = "未实例化";
|
return null;
|
}
|
|
|
}
|
}
|