using IStation;
|
using IStation.ChEr.DAL;
|
using Microsoft.Extensions.Configuration.UserSecrets;
|
using System;
|
using static IStation.Application.ConnectHelper;
|
using static IStation.Service.SSAPredictHelper;
|
|
namespace IStation.Application
|
{
|
/// <summary>
|
/// 时间段自定义预测
|
/// </summary>
|
[Route("Predict/user")]
|
[ApiDescriptionSettings("OutWater", Name = "时间块预测(作废)", Order = 9900)]
|
public class PredictOutWater_Controller : IDynamicApiController
|
{
|
/// <summary>
|
/// 预测水量(累计) 算法
|
/// </summary>
|
[Route("TimeBolckWater")]
|
[HttpGet]
|
public List<TotalOneDay> TimeBolckPredict([Required] DateTime starttime, DateTime endtime, int days)
|
{
|
if (endtime < starttime)
|
{
|
return null;
|
}
|
var reallist = ConnectHelper.ReadPumpAllDayAccOutWater(starttime.AddDays(-days), starttime);
|
List<Tuple<DateTime, double>> tupleList = null;
|
var totalSumByTimePoint = reallist.SelectMany(otdl => otdl.pumpOutWater);
|
tupleList = totalSumByTimePoint
|
.Select(x => Tuple.Create(x.DateTime, x.Total))
|
.ToList();
|
IStation.Service.SSAPredictHelper sSAPredictHelper = new Service.SSAPredictHelper();
|
var a = tupleList.Where(x => x.Item1.Hour == 1).ToList();
|
var predictdata = sSAPredictHelper.Predict(tupleList, 3600, 24, 2880, (float)0.99, 48);
|
var predictdataday = sSAPredictHelper.Predict(a, 86400, 2, 86400, (float)0.99, 2);
|
var splitdata = predictdata.Where(x => x.DateTime >= starttime && x.DateTime <= endtime).ToList();
|
/* foreach (var item in splitdata)
|
{
|
}*/
|
return splitdata;
|
}
|
|
/// <summary>
|
/// 预测水量(累计) 平均数
|
/// </summary>
|
[Route("TimeBolckWaterAna")]
|
[HttpGet]
|
public List<TotalOneDay> TimeBolckPredictAna([Required] DateTime starttime, DateTime endtime, int days)
|
{
|
if (endtime < starttime)
|
{
|
return null;
|
}
|
var reallist = ConnectHelper.ReadPumpAllDayAccOutWater(starttime.AddDays(-days), starttime);
|
List<Tuple<DateTime, double>> tupleList = null;
|
ConnectHelper connectHelper = new ConnectHelper();
|
var realdata = connectHelper.GetMeanValue(reallist);
|
var splitdata = realdata.Where(x => x.DateTime >= starttime && x.DateTime <= endtime).ToList();
|
return splitdata;
|
}
|
|
/// <summary>
|
/// 保存到数据库
|
/// </summary>
|
[Route("SaveDB")]
|
[HttpGet]
|
public List<TotalOneDay> SaveDB()
|
{
|
//var db = new MainDbContext();
|
//db.InitTables();
|
//var bll = new IStation.BLL.PredictData();
|
//bll.GetAll();
|
return null;
|
}
|
}
|
}
|