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; } } }