duheng
2024-05-29 b4189107397fb4e2da2bd9343d0eb85d44918932
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static IStation.Service.SSAPredictHelper;
 
namespace IStation.ChEr.Application
{
    public class SSAData
    {
        public DateTime DateTime { get; set; }
        public double Total { get; set; }
 
        //预测两天数据(今天和明天)
        public static void insert2daysPredictData()
        {
            IStation.ChEr.BLL.WaterPredictRecord bll = new IStation.ChEr.BLL.WaterPredictRecord();
            List<Model.WaterPredictRecord> waterPredictRecords = new List<Model.WaterPredictRecord>();
            List<SSAInput> ssaInput = new List<SSAInput>();
            IStation.Service.SSAPredictHelper SSAPredictHelper = new IStation.Service.SSAPredictHelper();
            var alllist = bll.GetEnd2Days(240);
            foreach (var item in alllist)
            {
                // 提取月份、日期和小时部分
                int month = item.DayHour / 10000; // 获取整数的万位数表示月份
                int day = (item.DayHour % 10000) / 100; // 获取整数的百位和十位表示日期
                int hour = item.DayHour % 100; // 获取整数的个位数表示小时
 
                // 构造 DateTime 对象
                DateTime dateTime = new DateTime(DateTime.Now.Year, month, day, hour, 0, 0);
                ssaInput.Add(new SSAInput { Time = dateTime, Value = (float)item.RealDifferenceValue });
            }
            ssaInput = ssaInput.OrderBy(x => x.Time).ToList();
            List<Tuple<DateTime, double>> tupleList = ssaInput
      .Select(input => Tuple.Create(input.Time, (double)input.Value))
      .ToList();
            var predictdata = SSAPredictHelper.Predict(tupleList, 3600, 10, 3600, (float)0.98, 48);
 
            foreach (var item in predictdata)
            {
                int dayHour = int.Parse(string.Format("{0:00}{1:00}{2:00}", item.DateTime.Month, item.DateTime.Day, item.DateTime.Hour));
                waterPredictRecords.Add(new Model.WaterPredictRecord { DayHour = dayHour, PredictTime = DateTime.Now, LastPredictValue = Math.Round(item.Total, 0) });
            }
            bll.Inserts(waterPredictRecords);
        }
    }
}