using IStation;
using ISupply.DAL;
using Microsoft.Extensions.Configuration.UserSecrets;
using System;
using static Yw.Application.ConnectHelper;
using static Yw.Service.SSAPredictHelper;
namespace Yw.Application
{
///
/// 时间段自定义预测
///
[Route("Predict/user")]
[ApiDescriptionSettings("OutWater", Name = "时间块预测", Order = 9900)]
public class PredictOutWater_Controller : IDynamicApiController
{
///
/// 预测水量(累计) 算法
///
[Route("TimeBolckWater")]
[HttpGet]
public List TimeBolckPredict([Required] DateTime starttime, DateTime endtime, int days)
{
if (endtime < starttime)
{
return null;
}
var reallist = ConnectHelper.ReadPumpAllDayAccOutWater(starttime.AddDays(-days), starttime);
List> tupleList = null;
var totalSumByTimePoint = reallist.SelectMany(otdl => otdl.pumpOutWater);
tupleList = totalSumByTimePoint
.Select(x => Tuple.Create(x.DateTime, x.Total))
.ToList();
Yw.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;
}
///
/// 预测水量(累计) 平均数
///
[Route("TimeBolckWaterAna")]
[HttpGet]
public List TimeBolckPredictAna([Required] DateTime starttime, DateTime endtime, int days)
{
if (endtime < starttime)
{
return null;
}
var reallist = ConnectHelper.ReadPumpAllDayAccOutWater(starttime.AddDays(-days), starttime);
List> 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;
}
///
/// 保存到数据库
///
[Route("SaveDB")]
[HttpGet]
public List SaveDB()
{
var db = new MainDbContext();
db.InitTables();
var bll = new ISupply.BLL.PredictData();
bll.GetAll();
return null;
}
}
}