using DevExpress.XtraCharts;
|
using IStation.BLL;
|
using IStation.Model;
|
using System;
|
using System.Collections.Generic;
|
using System.Data;
|
using System.Drawing;
|
using System.Linq;
|
|
namespace IStation.WinFrmUI.Monitor
|
{
|
public partial class PumpOutWaterAnaDlg : DocumentPage
|
{
|
public PumpOutWaterAnaDlg()
|
{
|
InitializeComponent();
|
this.PageTitle.Caption = "供水分析";
|
this.SurfaceGuid = new SurfaceGuid()
|
{
|
Modular = eModular.Basic,
|
Function = this.PageTitle.Caption
|
};
|
}
|
|
private PumpRunHelper _pumpRunHelper = new PumpRunHelper();
|
|
public class CurrentModel
|
{
|
/// <summary>
|
/// 时间
|
/// </summary>
|
public string Datetime { get; set; }
|
|
/// <summary>
|
/// 真实数据
|
/// </summary>
|
public double RealData { get; set; }
|
|
/// <summary>
|
/// 预测数据
|
/// </summary>
|
public double PredictData { get; set; }
|
|
/// <summary>
|
/// 差值百分比
|
/// </summary>
|
public string PercentValue { get; set; }
|
}
|
|
private void SimpleBtnRefresh_Click(object sender, EventArgs e)
|
{
|
RefreshByMonth();
|
}
|
|
//日期刷新
|
private void simpBtnRefreshDay_Click(object sender, EventArgs e)
|
{
|
RefreshByday();
|
}
|
|
private void RefreshByday()
|
{
|
var Out2400 = this.chartControl2.Series[0];
|
var Out2700 = this.chartControl2.Series[1];
|
var line1 = this.chartControl2.Series[2];
|
var line2 = this.chartControl2.Series[3];
|
var line3 = this.chartControl2.Series[4];
|
var total = this.chartControl2.Series[5];
|
Out2400.Points.Clear();
|
Out2700.Points.Clear();
|
line1.Points.Clear();
|
line2.Points.Clear();
|
line3.Points.Clear();
|
total.Points.Clear();
|
XYDiagram main_diagram = chartControl2.Diagram as XYDiagram;
|
var axisTime = main_diagram.AxisX;
|
axisTime.VisualRange.Auto = true;
|
axisTime.WholeRange.Auto = true;
|
axisTime.WholeRange.SideMarginsValue = 0;
|
axisTime.VisualRange.SideMarginsValue = 0;
|
axisTime.WholeRange.SetMinMaxValues(this.textEditStartTime.DateTime, this.textEditEndTime.DateTime);
|
axisTime.VisualRange.SetMinMaxValues(this.textEditStartTime.DateTime, this.textEditStartTime.DateTime.AddDays(2));
|
var totaldate = _pumpRunHelper.GetPumpOutTotalDayWaterData(this.textEditStartTime.DateTime, this.textEditEndTime.DateTime, out string error);
|
if (totaldate != null)
|
{
|
foreach (var item in totaldate)
|
{
|
foreach (var value in item.pumpOutWater)
|
{
|
total.Points.Add(new SeriesPoint(value.DateTime, value.Total));
|
}
|
}
|
}
|
for (DateTime currentDate = textEditStartTime.DateTime; currentDate <= textEditEndTime.DateTime; currentDate = currentDate.AddDays(1))
|
{
|
ConstantLine constantLine = new ConstantLine("ConstantLine_" + currentDate.ToString("yyyyMMdd"))
|
{
|
AxisValue = currentDate.AddDays(1),
|
Title = { Text = $"{currentDate.AddDays(1).ToString("dd号")}",
|
Alignment = ConstantLineTitleAlignment.Far,
|
DXFont = new System.Drawing.Font("宋体", 10)},
|
Color = Color.DeepSkyBlue,
|
LineStyle = { Thickness = 2 },
|
Visible = true,
|
LegendText = string.Empty,
|
ShowInLegend = false,
|
};
|
((XYDiagram)chartControl2.Diagram).AxisX.ConstantLines.Add(constantLine);
|
}
|
if (this.textEditStartTime.DateTime != null && this.textEditEndTime.DateTime != null)
|
{
|
var daydate = _pumpRunHelper.GetPumpOutWaterData(this.textEditStartTime.DateTime, this.textEditEndTime.DateTime, 0, out string err);
|
if (daydate != null)
|
{
|
foreach (var item in daydate)
|
{
|
foreach (var value in item.pumpOutWater)
|
{
|
Out2400.Points.Add(new SeriesPoint(value.DateTime, value.Out2400));
|
Out2700.Points.Add(new SeriesPoint(value.DateTime, value.Out2700));
|
line1.Points.Add(new SeriesPoint(value.DateTime, value.OutLine1));
|
line2.Points.Add(new SeriesPoint(value.DateTime, value.OutLine2));
|
line3.Points.Add(new SeriesPoint(value.DateTime, value.OutLine3));
|
}
|
}
|
}
|
}
|
if (Out2400.Points.Count == 0)
|
{
|
Out2400.ShowInLegend = false;
|
}
|
else Out2400.ShowInLegend = true;
|
if (Out2700.Points.Count == 0)
|
{
|
Out2700.ShowInLegend = false;
|
}
|
else Out2700.ShowInLegend = true;
|
if (line1.Points.Count == 0)
|
{
|
line1.ShowInLegend = false;
|
}
|
else line1.ShowInLegend = true;
|
if (line2.Points.Count == 0)
|
{
|
line2.ShowInLegend = false;
|
}
|
else line2.ShowInLegend = true;
|
if (line3.Points.Count == 0)
|
{
|
line3.ShowInLegend = false;
|
}
|
else line3.ShowInLegend = true;
|
if (total.Points.Count == 0)
|
{
|
total.ShowInLegend = false;
|
}
|
else total.ShowInLegend = true;
|
}
|
|
private void RefreshByMonth()
|
{
|
var Out2400 = this.chartControl1.Series[0];
|
var Out2700 = this.chartControl1.Series[1];
|
var line1 = this.chartControl1.Series[2];
|
var line2 = this.chartControl1.Series[3];
|
var line3 = this.chartControl1.Series[4];
|
var total = this.chartControl1.Series[5];
|
Out2400.Points.Clear();
|
Out2700.Points.Clear();
|
line1.Points.Clear();
|
line2.Points.Clear();
|
line3.Points.Clear();
|
var monthdata = _pumpRunHelper.GetPumpOutMonthWaterData(out string error);
|
if (monthdata != null)
|
{
|
foreach (var item in monthdata)
|
{
|
var allData = item.OutLine1 + item.OutLine2 + item.OutLine3 + item.Out2400 + item.Out2700;
|
total.Points.Add(new SeriesPoint(item.DateTime, allData));
|
}
|
}
|
int startMonth = Convert.ToInt32(this.textEditStartMonth.EditValue);
|
int endMonth = Convert.ToInt32(this.textEditEndMonth.EditValue);
|
if (this.textEditStartMonth.EditValue != null && this.textEditEndMonth.EditValue != null)
|
{
|
var filteredData = monthdata.Where(x => x.DateTime.Month >= startMonth && x.DateTime.Month <= endMonth).ToList();
|
if (filteredData != null)
|
{
|
foreach (var item in filteredData)
|
{
|
Out2400.Points.Add(new SeriesPoint(item.DateTime, item.Out2400));
|
Out2700.Points.Add(new SeriesPoint(item.DateTime, item.Out2700));
|
line1.Points.Add(new SeriesPoint(item.DateTime, item.OutLine1));
|
line2.Points.Add(new SeriesPoint(item.DateTime, item.OutLine2));
|
line3.Points.Add(new SeriesPoint(item.DateTime, item.OutLine3));
|
}
|
}
|
}
|
if (Out2400.Points.Count == 0)
|
{
|
Out2400.ShowInLegend = false;
|
}
|
else Out2400.ShowInLegend = true;
|
if (Out2700.Points.Count == 0)
|
{
|
Out2700.ShowInLegend = false;
|
}
|
else Out2700.ShowInLegend = true;
|
if (line1.Points.Count == 0)
|
{
|
line1.ShowInLegend = false;
|
}
|
else line1.ShowInLegend = true;
|
if (line2.Points.Count == 0)
|
{
|
line2.ShowInLegend = false;
|
}
|
else line2.ShowInLegend = true;
|
if (line3.Points.Count == 0)
|
{
|
line3.ShowInLegend = false;
|
}
|
else line3.ShowInLegend = true;
|
if (total.Points.Count == 0)
|
{
|
total.ShowInLegend = false;
|
}
|
else total.ShowInLegend = true;
|
}
|
|
private void PumpOutWaterAnaDlg_Load(object sender, EventArgs e)
|
{
|
this.textEditStartTime.DateTime = new DateTime(2023, 3, 1);
|
this.textEditEndTime.DateTime = new DateTime(2023, 3, 4);
|
this.textEditStartMonth.EditValue = 2;
|
this.textEditEndMonth.EditValue = 5;
|
// RefreshByday();
|
// RefreshByMonth();
|
}
|
|
//List<Model.TotalOneDay> predictvalue = new List<Model.TotalOneDay>(); //预测数据 (瞬时)
|
private List<Model.SSAData> predictvalueAcc = new List<Model.SSAData>();//预测数据 (累计)
|
|
//预测数据刷新 (瞬时)
|
private void simpleBtnPredict_Click(object sender, EventArgs e)
|
{
|
WaitFrmHelper.ShowWaitForm();
|
List<CurrentModel> Prj1 = new List<CurrentModel>();
|
List<CurrentModel> Prj2 = new List<CurrentModel>();
|
var seriesreal = this.chartControlPredict.Series[0];
|
var seriesanareal = this.chartControlAna.Series[0];
|
var seriesperdict = this.chartControlPredict.Series[1];
|
var seriesanaperdict = this.chartControlAna.Series[1];
|
|
//方案2图表设置
|
XYDiagram main_diagram = chartControlAna.Diagram as XYDiagram;
|
var axisTime = main_diagram.AxisX;
|
axisTime.VisualRange.Auto = true;
|
axisTime.WholeRange.Auto = true;
|
axisTime.WholeRange.SideMarginsValue = 0;
|
axisTime.VisualRange.SideMarginsValue = 0;
|
axisTime.WholeRange.SetMinMaxValues(this.textEditPredict.DateTime, this.textEditPredict.DateTime.AddDays(15));
|
axisTime.VisualRange.SetMinMaxValues(this.textEditPredict.DateTime, this.textEditPredict.DateTime.AddDays(1));
|
//方案1图表设置
|
XYDiagram main_diagramPre = chartControlPredict.Diagram as XYDiagram;
|
var axisTimePre = main_diagramPre.AxisX;
|
axisTimePre.VisualRange.Auto = true;
|
axisTimePre.WholeRange.Auto = true;
|
axisTimePre.WholeRange.SideMarginsValue = 0;
|
axisTimePre.VisualRange.SideMarginsValue = 0;
|
axisTimePre.WholeRange.SetMinMaxValues(this.textEditPredict.DateTime, this.textEditPredict.DateTime.AddDays(15));
|
axisTimePre.VisualRange.SetMinMaxValues(this.textEditPredict.DateTime, this.textEditPredict.DateTime.AddDays(1));
|
|
for (DateTime currentDate = textEditPredict.DateTime; currentDate <= textEditPredict.DateTime.AddDays(15); currentDate = currentDate.AddDays(1))
|
{
|
ConstantLine constantLine = new ConstantLine("ConstantLine_" + currentDate.ToString("yyyyMMdd"))
|
{
|
AxisValue = currentDate.AddDays(1),
|
Title = { Text = $"{currentDate.AddDays(1).ToString("dd号")}",
|
Alignment = ConstantLineTitleAlignment.Far,
|
DXFont = new System.Drawing.Font("宋体", 10)},
|
Color = Color.DeepSkyBlue,
|
LineStyle = { Thickness = 2 },
|
Visible = true,
|
LegendText = string.Empty,
|
ShowInLegend = false,
|
};
|
((XYDiagram)chartControlAna.Diagram).AxisX.ConstantLines.Add(constantLine);
|
}
|
|
for (DateTime currentDate = textEditPredict.DateTime; currentDate <= textEditPredict.DateTime.AddDays(15); currentDate = currentDate.AddDays(1))
|
{
|
ConstantLine constantLine = new ConstantLine("ConstantLine_" + currentDate.ToString("yyyyMMdd"))
|
{
|
AxisValue = currentDate.AddDays(1),
|
Title = { Text = $"{currentDate.AddDays(1).ToString("dd号")}",
|
Alignment = ConstantLineTitleAlignment.Far,
|
DXFont = new System.Drawing.Font("宋体", 10)},
|
Color = Color.DeepSkyBlue,
|
LineStyle = { Thickness = 2 },
|
Visible = true,
|
LegendText = string.Empty,
|
ShowInLegend = false,
|
};
|
((XYDiagram)chartControlPredict.Diagram).AxisX.ConstantLines.Add(constantLine);
|
}
|
|
seriesanareal.Points.Clear();
|
seriesanaperdict.Points.Clear();
|
seriesreal.Points.Clear();
|
seriesperdict.Points.Clear();
|
//真实数据
|
var realvalue = _pumpRunHelper.GetPumpOutTotalDayWaterData(this.textEditPredict.DateTime, this.textEditPredict.DateTime.AddDays(15), out string error); //真实数据
|
//预测所需的前几天数据
|
var realHistoryData = _pumpRunHelper.GetPumpOutTotalDayWaterData(this.textEditPredict.DateTime.AddDays(-Convert.ToInt32(this.textEditDay.EditValue)), this.textEditPredict.DateTime, out string err);
|
OutWaterHelper outWaterHelper = new OutWaterHelper();
|
var listoutwater = outWaterHelper.GetMeanValue(realHistoryData);
|
List<SSAData> realdata2 = listoutwater //去掉分秒 只保留分 --真实数据
|
.Where(pumpOut => pumpOut.DateTime.Minute == 0)
|
.ToList();
|
|
//算法预测数据
|
var anaPerdict = _pumpRunHelper.GetPredictOutTotalDayWaterData(this.textEditPredict.DateTime, Convert.ToInt32(textEditDay.EditValue), 288 * 15, out string err1);
|
|
#region 方案一平均数
|
|
Prj1.Clear();
|
List<SSAData> realdata = realvalue //去掉分秒 只保留分 --真实数据
|
.SelectMany(item => item.pumpOutWater)
|
.Where(pumpOut => pumpOut.DateTime.Minute == 0)
|
.ToList();
|
|
List<SSAData> anaperdict = anaPerdict //算法list(去掉分秒只保留小时)
|
.Where(pumpOut => pumpOut.DateTime.Minute == 0)
|
.ToList();
|
double AddPerdict = 0;
|
double AddReal = 0;
|
for (int i = 0; i < realdata2.Count - 1; i++)
|
{
|
if (realdata2[i].DateTime.Day == realdata2[i + 1].DateTime.Day)
|
{
|
AddPerdict += realdata2[i].Total;
|
AddReal += realdata[i].Total;
|
}
|
else
|
{
|
Prj1.Add(new CurrentModel() { Datetime = realdata2[i].DateTime.ToString("MM-dd日"), RealData = Math.Round(AddReal, 0), PredictData = Math.Round(AddPerdict, 0), PercentValue = Convert.ToDecimal(((AddReal - AddPerdict) / AddPerdict) * 100).ToString("0.00") + "%" });
|
AddPerdict = 0;
|
AddReal = 0;
|
}
|
if (i == realdata2.Count - 2)
|
{
|
Prj1.Add(new CurrentModel() { Datetime = realdata2[i].DateTime.ToString("MM-dd日"), RealData = Math.Round(AddReal, 0), PredictData = Math.Round(AddPerdict, 0), PercentValue = Convert.ToDecimal(((AddReal - AddPerdict) / AddPerdict) * 100).ToString("0.00") + "%" });
|
}
|
}
|
|
if (realdata != null)
|
{
|
foreach (var item in realdata)
|
{
|
seriesreal.Points.Add(new SeriesPoint(item.DateTime, Math.Round(item.Total), 0));
|
seriesanareal.Points.Add(new SeriesPoint(item.DateTime, Math.Round(item.Total), 0));
|
}
|
}
|
if (anaperdict != null)
|
{
|
foreach (var item in anaperdict)
|
{
|
seriesperdict.Points.Add(new SeriesPoint(item.DateTime, Math.Round(item.Total), 2));
|
}
|
}
|
if (seriesreal.Points.Count == 0)
|
{
|
seriesreal.ShowInLegend = false;
|
}
|
else seriesreal.ShowInLegend = true;
|
if (seriesperdict.Points.Count == 0)
|
{
|
seriesperdict.ShowInLegend = false;
|
}
|
else seriesperdict.ShowInLegend = true;
|
this.bindingSourceAcc1.DataSource = Prj1;
|
|
#endregion 方案一平均数
|
|
#region 方案二SSA算法
|
|
Prj2.Clear();
|
|
AddPerdict = 0;
|
AddReal = 0;
|
|
for (int i = 0; i < anaperdict.Count - 1; i++)
|
{
|
if (anaperdict[i].DateTime.Day == anaperdict[i + 1].DateTime.Day)
|
{
|
AddPerdict += anaperdict[i].Total;
|
AddReal += realdata[i].Total;
|
}
|
else
|
{
|
Prj2.Add(new CurrentModel() { Datetime = realdata[i].DateTime.ToString("MM-dd日"), RealData = AddReal, PredictData = Math.Round(AddPerdict, 0), PercentValue = Convert.ToDecimal(((AddReal - AddPerdict) / AddPerdict) * 100).ToString("0.00") + "%" });
|
}
|
if (i == anaperdict.Count - 2)
|
{
|
Prj2.Add(new CurrentModel() { Datetime = realdata[i].DateTime.ToString("MM-dd日"), RealData = AddReal, PredictData = Math.Round(AddPerdict, 0), PercentValue = Convert.ToDecimal(((AddReal - AddPerdict) / AddPerdict) * 100).ToString("0.00") + "%" });
|
}
|
}
|
|
if (anaperdict != null)
|
{
|
foreach (var item in anaperdict)
|
{
|
seriesanaperdict.Points.Add(new SeriesPoint(item.DateTime, Math.Round(item.Total), 2));
|
}
|
}
|
if (seriesanaperdict.Points.Count == 0)
|
{
|
seriesanaperdict.ShowInLegend = false;
|
}
|
else seriesanaperdict.ShowInLegend = true;
|
((LineSeriesView)seriesanaperdict.View).LineStyle.DashStyle = DashStyle.Dash;
|
((LineSeriesView)seriesperdict.View).LineStyle.DashStyle = DashStyle.Dash;
|
this.bindingSourceAna2.DataSource = Prj2;
|
|
#endregion 方案二SSA算法
|
|
WaitFrmHelper.HideWaitForm();
|
}
|
|
//保存到服务器
|
private void simpleBtnSave_Click(object sender, EventArgs e)
|
{
|
/* if (predictvalue.Count == 0)
|
return;
|
var issave= _pumpRunHelper.SavePredictData(predictvalue);
|
if (issave)
|
{
|
XtraMessageBox.Show("保存成功!");
|
}
|
else
|
{
|
XtraMessageBox.Show("保存失败!");
|
}*/
|
}
|
|
//累计方案刷新
|
private void simpleLabeRefresh_Click(object sender, EventArgs e)
|
{
|
WaitFrmHelper.ShowWaitForm();
|
List<CurrentModel> Prj1 = new List<CurrentModel>();
|
List<CurrentModel> Prj2 = new List<CurrentModel>();
|
var seriesreal = this.chartControlPredict1.Series[0];
|
var seriesanareal = this.chartControlAna1.Series[0];
|
var seriesperdict = this.chartControlPredict1.Series[1];
|
var seriesanaperdict = this.chartControlAna1.Series[1];
|
//方案2图表设置
|
XYDiagram main_diagram = chartControlAna1.Diagram as XYDiagram;
|
var axisTime = main_diagram.AxisX;
|
axisTime.VisualRange.Auto = true;
|
axisTime.WholeRange.Auto = true;
|
axisTime.WholeRange.SideMarginsValue = 0;
|
axisTime.VisualRange.SideMarginsValue = 0;
|
axisTime.WholeRange.SetMinMaxValues(this.textEditPredictAcc.DateTime, this.textEditPredictAcc.DateTime.AddDays(15));
|
axisTime.VisualRange.SetMinMaxValues(this.textEditPredictAcc.DateTime, this.textEditPredictAcc.DateTime.AddDays(1));
|
//方案1图表设置
|
XYDiagram main_diagramPre = chartControlPredict1.Diagram as XYDiagram;
|
var axisTimePre = main_diagramPre.AxisX;
|
axisTimePre.VisualRange.Auto = true;
|
axisTimePre.WholeRange.Auto = true;
|
axisTimePre.WholeRange.SideMarginsValue = 0;
|
axisTimePre.VisualRange.SideMarginsValue = 0;
|
axisTimePre.WholeRange.SetMinMaxValues(this.textEditPredictAcc.DateTime, this.textEditPredictAcc.DateTime.AddDays(15));
|
axisTimePre.VisualRange.SetMinMaxValues(this.textEditPredictAcc.DateTime, this.textEditPredictAcc.DateTime.AddDays(1));
|
|
seriesanareal.Points.Clear();
|
seriesanaperdict.Points.Clear();
|
seriesreal.Points.Clear();
|
seriesperdict.Points.Clear();
|
predictvalueAcc.Clear();
|
|
for (DateTime currentDate = textEditPredictAcc.DateTime; currentDate <= textEditPredictAcc.DateTime.AddDays(15); currentDate = currentDate.AddDays(1))
|
{
|
ConstantLine constantLine = new ConstantLine("ConstantLine_" + currentDate.ToString("yyyyMMdd"))
|
{
|
AxisValue = currentDate.AddDays(1),
|
Title = { Text = $"{currentDate.AddDays(1).ToString("dd号")}",
|
Alignment = ConstantLineTitleAlignment.Far,
|
DXFont = new System.Drawing.Font("宋体", 10)},
|
Color = Color.DeepSkyBlue,
|
LineStyle = { Thickness = 2 },
|
Visible = true,
|
LegendText = string.Empty,
|
ShowInLegend = false,
|
};
|
((XYDiagram)chartControlAna1.Diagram).AxisX.ConstantLines.Add(constantLine);
|
}
|
|
for (DateTime currentDate = textEditPredictAcc.DateTime; currentDate <= textEditPredictAcc.DateTime.AddDays(15); currentDate = currentDate.AddDays(1))
|
{
|
ConstantLine constantLine = new ConstantLine("ConstantLine_" + currentDate.ToString("yyyyMMdd"))
|
{
|
AxisValue = currentDate.AddDays(1),
|
Title = { Text = $"{currentDate.AddDays(1).ToString("dd号")}",
|
Alignment = ConstantLineTitleAlignment.Far,
|
DXFont = new System.Drawing.Font("宋体", 10)},
|
Color = Color.DeepSkyBlue,
|
LineStyle = { Thickness = 2 },
|
Visible = true,
|
LegendText = string.Empty,
|
ShowInLegend = false,
|
};
|
((XYDiagram)chartControlPredict1.Diagram).AxisX.ConstantLines.Add(constantLine);
|
}
|
|
//真实数据
|
var realvalue = _pumpRunHelper.GetPumpOutTotalDayAccWaterData(this.textEditPredictAcc.DateTime, this.textEditPredictAcc.DateTime.AddDays(15), out string error); //真实数据
|
//平均数所需历史数据
|
var realHistoryData = _pumpRunHelper.GetPumpOutTotalDayAccWaterData(this.textEditPredictAcc.DateTime.AddDays(-Convert.ToInt32(this.textEditDay1.EditValue)), this.textEditPredictAcc.DateTime, out string err);
|
OutWaterHelper outWaterHelper = new OutWaterHelper();
|
var listoutwater = outWaterHelper.GetMeanValue(realHistoryData);
|
foreach (var item in listoutwater)
|
{
|
predictvalueAcc.Add(new SSAData() { DateTime = item.DateTime, Total = item.Total });
|
}
|
//算法预测数据
|
|
#region 方案一平均数
|
|
Prj1.Clear();
|
List<SSAData> realdata = realvalue
|
.SelectMany(item => item.pumpOutWater)
|
.ToList();
|
if (realdata != null)
|
{
|
foreach (var item in realdata)
|
{
|
seriesreal.Points.Add(new SeriesPoint(item.DateTime, Math.Round(item.Total), 2));
|
seriesanareal.Points.Add(new SeriesPoint(item.DateTime, Math.Round(item.Total), 2));
|
}
|
}
|
if (predictvalueAcc != null)
|
{
|
foreach (var item in predictvalueAcc)
|
{
|
seriesperdict.Points.Add(new SeriesPoint(item.DateTime, Math.Round(item.Total), 2));
|
}
|
}
|
double AddPerdict = 0;
|
double AddReal = 0;
|
for (int i = 0; i < listoutwater.Count - 1; i++)
|
{
|
if (listoutwater[i].DateTime.Day == listoutwater[i + 1].DateTime.Day)
|
{
|
AddPerdict += listoutwater[i].Total;
|
AddReal += realdata[i].Total;
|
}
|
else
|
{
|
Prj1.Add(new CurrentModel() { Datetime = listoutwater[i].DateTime.ToString("MM-dd日"), RealData = AddReal, PredictData = Math.Round(AddPerdict, 0), PercentValue = Convert.ToDecimal(((AddReal - AddPerdict) / AddPerdict) * 100).ToString("0.00") + "%" });
|
AddPerdict = 0;
|
AddReal = 0;
|
}
|
if (i == listoutwater.Count - 2)
|
{
|
Prj1.Add(new CurrentModel() { Datetime = listoutwater[i].DateTime.ToString("MM-dd日"), RealData = AddReal, PredictData = Math.Round(AddPerdict, 0), PercentValue = Convert.ToDecimal(((AddReal - AddPerdict) / AddPerdict) * 100).ToString("0.00") + "%" });
|
}
|
}
|
if (seriesreal.Points.Count == 0)
|
{
|
seriesreal.ShowInLegend = false;
|
}
|
else seriesreal.ShowInLegend = true;
|
if (seriesperdict.Points.Count == 0)
|
{
|
seriesperdict.ShowInLegend = false;
|
}
|
else seriesperdict.ShowInLegend = true;
|
this.bindingSourceAna1.DataSource = Prj1;
|
|
#endregion 方案一平均数
|
|
#region 方案二SSA算法
|
|
var anaPerdict = _pumpRunHelper.GetPredictOutTotalAccDayWaterData(this.textEditPredictAcc.DateTime, Convert.ToInt32(textEditDay1.EditValue), 15 * 24, out string err1);
|
Prj2.Clear();
|
if (anaPerdict != null)
|
{
|
foreach (var item in anaPerdict)
|
{
|
seriesanaperdict.Points.Add(new SeriesPoint(item.DateTime, Math.Round(item.Total), 2));
|
}
|
}
|
AddPerdict = 0;
|
AddReal = 0;
|
for (int i = 0; i < anaPerdict.Count - 1; i++)
|
{
|
if (anaPerdict[i].DateTime.Day == anaPerdict[i + 1].DateTime.Day)
|
{
|
AddPerdict += anaPerdict[i].Total;
|
AddReal += realdata[i].Total;
|
}
|
else
|
{
|
Prj2.Add(new CurrentModel() { Datetime = anaPerdict[i].DateTime.ToString("MM-dd日"), RealData = Math.Round(AddReal, 0), PredictData = Math.Round(AddPerdict, 0), PercentValue = Convert.ToDecimal(((AddReal - AddPerdict) / AddPerdict) * 100).ToString("0.00") + "%" });
|
AddPerdict = 0;
|
AddReal = 0;
|
}
|
if (i == anaPerdict.Count - 2)
|
{
|
Prj2.Add(new CurrentModel() { Datetime = anaPerdict[i].DateTime.ToString("MM-dd日"), RealData = Math.Round(AddReal, 0), PredictData = Math.Round(AddPerdict, 0), PercentValue = Convert.ToDecimal(((AddReal - AddPerdict) / AddPerdict) * 100).ToString("0.00") + "%" });
|
}
|
}
|
if (seriesanaperdict.Points.Count == 0)
|
{
|
seriesanaperdict.ShowInLegend = false;
|
}
|
else seriesanaperdict.ShowInLegend = true;
|
((LineSeriesView)seriesanaperdict.View).LineStyle.DashStyle = DashStyle.Dash;
|
((LineSeriesView)seriesperdict.View).LineStyle.DashStyle = DashStyle.Dash;
|
this.bindingSourceAcc2.DataSource = Prj2;
|
|
#endregion 方案二SSA算法
|
|
WaitFrmHelper.HideWaitForm();
|
}
|
}
|
}
|