using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using static IStation.Service.SSAPredictHelper;
|
|
namespace IStation.ChEr.Application
|
{
|
public class SSAData
|
{
|
public DateTime DateTime { get; set; }
|
public double Total { get; set; }
|
|
//预测两天数据(今天和明天)
|
public static void insert2daysPredictData()
|
{
|
IStation.ChEr.BLL.WaterPredictRecord bll = new IStation.ChEr.BLL.WaterPredictRecord();
|
List<Model.WaterPredictRecord> waterPredictRecords = new List<Model.WaterPredictRecord>();
|
List<SSAInput> ssaInput = new List<SSAInput>();
|
IStation.Service.SSAPredictHelper SSAPredictHelper = new IStation.Service.SSAPredictHelper();
|
var alllist = bll.GetEnd2Days(240);
|
foreach (var item in alllist)
|
{
|
// 提取月份、日期和小时部分
|
int month = item.DayHour / 10000; // 获取整数的万位数表示月份
|
int day = (item.DayHour % 10000) / 100; // 获取整数的百位和十位表示日期
|
int hour = item.DayHour % 100; // 获取整数的个位数表示小时
|
|
// 构造 DateTime 对象
|
DateTime dateTime = new DateTime(DateTime.Now.Year, month, day, hour, 0, 0);
|
ssaInput.Add(new SSAInput { Time = dateTime, Value = (float)item.RealDifferenceValue });
|
}
|
ssaInput = ssaInput.OrderBy(x => x.Time).ToList();
|
List<Tuple<DateTime, double>> tupleList = ssaInput
|
.Select(input => Tuple.Create(input.Time, (double)input.Value))
|
.ToList();
|
var predictdata = SSAPredictHelper.Predict(tupleList, 3600, 10, 3600, (float)0.98, 48);
|
|
foreach (var item in predictdata)
|
{
|
int dayHour = int.Parse(string.Format("{0:00}{1:00}{2:00}", item.DateTime.Month, item.DateTime.Day, item.DateTime.Hour));
|
waterPredictRecords.Add(new Model.WaterPredictRecord { DayHour = dayHour, PredictTime = DateTime.Now, LastPredictValue = Math.Round(item.Total, 0) });
|
}
|
bll.Inserts(waterPredictRecords);
|
}
|
}
|
}
|