tangxu
2024-04-30 26d8996e55c33186800031f7c305688035bb3182
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
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;
        }
    }
}