tangxu
2024-05-03 95e5af5abc03855693decf4ddc6f4083ec140132
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
79
80
81
82
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;
        }
    }
}