using IStation;
|
using Microsoft.Extensions.Configuration.UserSecrets;
|
using static IStation.Application.ConnectHelper;
|
using static IStation.Service.SSAPredictHelper;
|
|
namespace IStation.Application
|
{
|
/// <summary>
|
/// SSA算法预测
|
/// </summary>
|
[Route("Predict")]
|
[ApiDescriptionSettings("OutWater", Name = "预测水位(作废)", Order = 10000)]
|
public class PredictWater_Controller : IDynamicApiController
|
{
|
/// <summary>
|
/// 预测水位(瞬时)
|
/// </summary>
|
[Route("PredictOutWater")]
|
[HttpGet]
|
public List<TotalOneDay> Predict([Required] DateTime dateTime, int days,int DataNumber)
|
{
|
var reallist = ConnectHelper.ReadPumpAllDayOutWater(dateTime.AddDays(days), dateTime);
|
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 predictdata = sSAPredictHelper.Predict(tupleList, 300, 288, 300, (float)0.99, DataNumber);
|
return predictdata;
|
}
|
|
|
/// <summary>
|
/// 保存预测数据
|
/// </summary>
|
/// <param name="PredictData"></param>
|
/// <returns></returns>
|
[Route("SavePredictResult")]
|
[HttpPost]
|
public string SaveData([Required] List<TotalOneDay> PredictData)
|
{
|
if (PredictData == null)
|
return "DataNull";
|
var json= Yw.JsonHelper.Object2Json(PredictData);
|
string savepath = Path.Combine(DataFolderHelper.GetRootPath(), "供水参数");
|
if (!System.IO.Directory.Exists(savepath))
|
{
|
return null;
|
}
|
var filepath_folder = System.IO.Path.Combine(savepath, "预测水位");
|
if (!System.IO.Directory.Exists(filepath_folder))
|
{
|
return null;
|
}
|
var filepath = Path.Combine(filepath_folder, $"{PredictData.First().DateTime.ToString("yyyy-MM-dd")}.json");
|
File.WriteAllText(filepath, json);
|
return "Success!";
|
}
|
|
|
/// <summary>
|
/// 预测水位(累计)
|
/// </summary>
|
[Route("PredictOutAccWater")]
|
[HttpGet]
|
public List<TotalOneDay> PredictAcc([Required] DateTime dateTime, int days,int DataNumber)
|
{
|
var reallist = ConnectHelper.ReadPumpAllDayAccOutWater(dateTime.AddDays(days), dateTime);
|
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 predictdata = sSAPredictHelper.Predict(tupleList, 3600, 24, 2880, (float)0.99, DataNumber);
|
return predictdata;
|
}
|
}
|
}
|