tangxu
2024-06-07 18a1a6faf82b1ad00d27f6fc7f5734c34aea32df
WaterPredict/IStation.ChEr.WebApi.Predict/ÈÎÎñ/CalcWaterPredictJob.cs
@@ -33,19 +33,20 @@
        /// <returns></returns>
        public Task Execute(IJobExecutionContext context)
        {
            LogHelper.Info(DateTime.Now.ToString());
            if (DateTime.Now.Hour == 0 && DateTime.Now.Minute == 5)
            {
                insert2daysPredictData();
            }
            var TodayRealdataList = ConnectHelper.GetByPumpOneDayWaterData(DateTime.Today, DateTime.Today.AddDays(1), "1h").Where(x => x.DateTime.Hour <= DateTime.Now.Hour).ToList();
            //获取当前日期前今天的所有值
            LogHelper.Info("已找到当前时间前所有数据");
            //     int dayHour = int.Parse(string.Format("{0:00}{1:00}{2:00}", DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour));
            int dayHour = WaterPredictRecord.ConvertIntDay(DateTime.Today);
            int dayHour = WaterPredictRecord.ConvertIntDay(DateTime.Now);
            var TwoDaysList = _bll.GetEnd2Days(300);
            LogHelper.Info("2");
            var select = TwoDaysList.Where(x => x.DayHour == dayHour).FirstOrDefault();
            if (TodayRealdataList != null)
            {
                LogHelper.Info("已找到当前时间前所有数据");
                if (TodayRealdataList.Last().DateTime.Hour == DateTime.Now.Hour && select != null)
                {
                    try
@@ -77,7 +78,7 @@
                        else
                        {
                            select.RealTotalValue = TodayRealdataList.Last().Total;
                            select.RealDifferenceValue = TodayRealdataList.Last().Total - _bll.GetEnd2Days(24).Last().RealTotalValue;
                            select.RealDifferenceValue = TodayRealdataList.Last().Total - _bll.GetEnd2Days(240).Where(x => x.DayHour == WaterPredictRecord.ConvertIntDay(DateTime.Now.AddHours(-1))).Last().RealTotalValue;
                            if (select.RealDifferenceValue == 0 || select.RealDifferenceValue < 0)
                            {
                                if (PredictHelper.IsOpenState())
@@ -107,6 +108,16 @@
                        // LogHelper.Info("未能从众毅取到真实数据,时间:" + DateTime.Now.ToString());
                    }
                }
                else
                {
                    select.RealTotalValue = 0;
                    select.States = 0;
                    select.RealDifferenceValue = 60000;
                    select.Description = "取到的数据与当前时间不匹配,或找不到与当前时间匹配的预测值";
                    var ErrorBakData = ConnectHelper.GetByPumpOneDayWaterData(DateTime.Today, DateTime.Today.AddDays(1), "300s").Where(x => x.DateTime.Hour <= DateTime.Now.Hour).ToList();  //获取当前日期前今天的所有值
                    select.BakData = JsonHelper.Object2Json(ErrorBakData);
                    _bll.Update(select);
                }
            }
            else
            {
@@ -122,7 +133,6 @@
            var beforeTwoDays = _bll.GetEnd2Days(350);
            var beforedata = beforeTwoDays.Where(x => x.DayHour <= dayHour).Take(240).ToList();
            List<Tuple<DateTime, double>> tupleList = beforedata
    .Select(input =>
    {
@@ -142,7 +152,12 @@
                {
                    currentdata[i].Description = "预测数据偏差过大";
                    var ErrorBakData = ConnectHelper.GetByPumpOneDayWaterData(DateTime.Today, DateTime.Today.AddDays(1), "300s").Where(x => x.DateTime.Hour <= DateTime.Now.Hour).ToList();  //获取当前日期前今天的所有值
                    select.BakData = JsonHelper.Object2Json(ErrorBakData);
                    currentdata[i].BakData = JsonHelper.Object2Json(ErrorBakData);
                    currentdata[i].States = 0;
                }
                else
                {
                    currentdata[i].States = 1;
                }
                currentdata[i].LastPredictTime = DateTime.Now;
                currentdata[i].PredictValueList = currentdata[i].LastPredictValue.ToString() + "," + currentdata[i].PredictValueList;
@@ -181,11 +196,12 @@
                    list[i].LastPredictTime = DateTime.Now;
                    list[i].LastPredictValue = Math.Round(predictdata[i].Total, 0);
                    list[i].PredictValueList = list[i].LastPredictValue.ToString() + "," + list[i].PredictValueList;
                    list[i].States = 1;
                }
                else
                {
                    int dayHour = int.Parse(string.Format("{0:00}{1:00}{2:00}", predictdata[i].DateTime.Month, predictdata[i].DateTime.Day, predictdata[i].DateTime.Hour));
                    list.Add(new WaterPredictRecord { DayHour = dayHour, PredictTime = DateTime.Now, LastPredictValue = Math.Round(predictdata[i].Total, 0) });
                    list.Add(new WaterPredictRecord { DayHour = dayHour, PredictTime = DateTime.Now, LastPredictValue = Math.Round(predictdata[i].Total, 0), States = 1 });
                }
            }
            _bll.BatSet(list);