From 64c0604d9a7d2460f6bf1b6cc7df02d769db3a15 Mon Sep 17 00:00:00 2001 From: duheng <2784771470@qq.com> Date: 星期三, 19 六月 2024 09:23:32 +0800 Subject: [PATCH] 优化预测错误日志 --- WaterPredict/IStation.ChEr.WebApi.Predict/任务/CalcWaterPredictJob.cs | 156 +++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 112 insertions(+), 44 deletions(-) diff --git "a/WaterPredict/IStation.ChEr.WebApi.Predict/\344\273\273\345\212\241/CalcWaterPredictJob.cs" "b/WaterPredict/IStation.ChEr.WebApi.Predict/\344\273\273\345\212\241/CalcWaterPredictJob.cs" index cce8e46..11c17fb 100644 --- "a/WaterPredict/IStation.ChEr.WebApi.Predict/\344\273\273\345\212\241/CalcWaterPredictJob.cs" +++ "b/WaterPredict/IStation.ChEr.WebApi.Predict/\344\273\273\345\212\241/CalcWaterPredictJob.cs" @@ -33,17 +33,17 @@ /// <returns></returns> public Task Execute(IJobExecutionContext context) { - LogHelper.Info(DateTime.Now.ToString()); - if (DateTime.Now.Hour == 0 && DateTime.Now.Minute == 5) + if (DateTime.Now.Hour == 0 && DateTime.Now.Minute == 15) { insert2daysPredictData(); } var TodayRealdataList = ConnectHelper.GetByPumpOneDayWaterData(DateTime.Today, DateTime.Today.AddDays(1), "1h").Where(x => x.DateTime.Hour <= DateTime.Now.Hour).ToList(); //鑾峰彇褰撳墠鏃ユ湡鍓嶄粖澶╃殑鎵�鏈夊�� int dayHour = WaterPredictRecord.ConvertIntDay(DateTime.Now); + int lastHour = WaterPredictRecord.ConvertIntDay(DateTime.Now.AddHours(-1)); var TwoDaysList = _bll.GetEnd2Days(300); - LogHelper.Info("2"); var select = TwoDaysList.Where(x => x.DayHour == dayHour).FirstOrDefault(); + var lastDifferenceValue = TwoDaysList.Where(x => x.DayHour == lastHour).FirstOrDefault(); if (TodayRealdataList != null) { LogHelper.Info("宸叉壘鍒板綋鍓嶆椂闂村墠鎵�鏈夋暟鎹�"); @@ -57,16 +57,36 @@ var secondLastElementTotal = TodayRealdataList[TodayRealdataList.Count - 2].Total; select.RealTotalValue = TodayRealdataList.Last().Total; select.RealDifferenceValue = lastElementTotal - secondLastElementTotal; - if (select.RealDifferenceValue == 0 || select.RealDifferenceValue < 0) + if (select.RealDifferenceValue == 0 || select.RealDifferenceValue < 0 || select.RealDifferenceValue > 100000) { if (PredictHelper.IsOpenState()) { - select.Description = "鐪熷疄鏁版嵁鍑虹幇寮傚父"; + select.Description += ",鏃堕棿:" + DateTime.Now.ToString("HH:mm") + "浼楁瘏鎻愪緵鐪熷疄鏁版嵁鍑虹幇寮傚父"; 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); select.States = 0; + if (lastDifferenceValue.RealDifferenceValue > 0) + { + select.RealDifferenceValue = lastDifferenceValue.RealDifferenceValue; + } + else + { + select.RealDifferenceValue = 60000; + } _bll.Update(select); - return null; + } + else + { + if (lastDifferenceValue.RealDifferenceValue > 0) + { + select.RealDifferenceValue = lastDifferenceValue.RealDifferenceValue; + } + else + { + select.RealDifferenceValue = 60000; + } + select.States = 0; + _bll.Update(select); } } else @@ -79,14 +99,35 @@ { select.RealTotalValue = TodayRealdataList.Last().Total; 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 (select.RealDifferenceValue == 0 || select.RealDifferenceValue < 0 || select.RealDifferenceValue > 100000) { if (PredictHelper.IsOpenState()) { - select.Description = "鐪熷疄鏁版嵁鍑虹幇寮傚父"; + select.Description += ",鏃堕棿:" + DateTime.Now.ToString("HH:mm") + "浼楁瘏鎻愪緵鐪熷疄鏁版嵁鍑虹幇寮傚父"; 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); select.States = 0; + if (lastDifferenceValue.RealDifferenceValue > 0) + { + select.RealDifferenceValue = lastDifferenceValue.RealDifferenceValue; + } + else + { + select.RealDifferenceValue = 60000; + } + _bll.Update(select); + } + else + { + if (lastDifferenceValue.RealDifferenceValue > 0) + { + select.RealDifferenceValue = lastDifferenceValue.RealDifferenceValue; + } + else + { + select.RealDifferenceValue = 60000; + } + select.States = 1; _bll.Update(select); } } @@ -99,32 +140,35 @@ } catch (Exception e) { - select.RealTotalValue = 0; + select.RealTotalValue = TodayRealdataList.Last().Total; select.States = 0; - select.Description = "涓虹湡瀹炴暟鎹祴鍊奸敊璇�!" + "鍘熷洜:" + e; + select.RealDifferenceValue = lastDifferenceValue.RealDifferenceValue; ; + select.Description += ",鏃堕棿:" + DateTime.Now.ToString("HH:mm") + "閬囧埌鏈煡閿欒!" + "鍘熷洜:" + e; 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); - // LogHelper.Info("鏈兘浠庝紬姣呭彇鍒扮湡瀹炴暟鎹�,鏃堕棿:" + DateTime.Now.ToString()); + LogHelper.Info("閬囧埌鏈煡閿欒!" + "鍘熷洜:" + e); } } 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); + /* select.RealTotalValue = 0; + select.States = 0; + select.RealDifferenceValue = 60000; + select.Description += ",鏃堕棿:" + DateTime.Now.ToString("HH:mm") + "鍙栧埌鐨勬暟鎹笌褰撳墠鏃堕棿涓嶅尮閰�,鎴栨壘涓嶅埌涓庡綋鍓嶆椂闂村尮閰嶇殑棰勬祴鍊�"; + 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);*/ + LogHelper.Info("鎵句笉鍒板搴斿綋鍓嶆椂闂村搴旀暟鎹� 鏃堕棿:" + DateTime.Now); + return null; } } else { select.RealTotalValue = 0; select.States = 0; - select.Description = "鏈兘浠庝紬姣呭彇鍒扮湡瀹炴暟鎹�"; - select.RealDifferenceValue = 60000; + select.Description += ",鏃堕棿:" + DateTime.Now.ToString("HH:mm") + "鏈兘浠庝紬姣呭彇鍒扮湡瀹炴暟鎹�"; + select.RealDifferenceValue = lastDifferenceValue.RealDifferenceValue; ; 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); @@ -145,22 +189,29 @@ var starthour = int.Parse(string.Format("{0:00}{1:00}{2:00}", DateTime.Now.Month, DateTime.Now.Day, 0)); var endhour = int.Parse(string.Format("{0:00}{1:00}{2:00}", DateTime.Now.Month, DateTime.Now.Day, 23)); var currentdata = TwoDaysList.Where(x => x.DayHour >= starthour && x.DayHour <= endhour).OrderBy(x => x.DayHour).ToList(); - for (int i = 0; i < currentdata.Count; i++) + if (currentdata.Count == 24) { - currentdata[i].LastPredictValue = Math.Round(predictdata[i].Total, 0); - if (currentdata[i].LastPredictValue > 90000 || currentdata[i].LastPredictValue < 20000) + for (int i = 0; i < currentdata.Count; i++) { - currentdata[i].Description = "棰勬祴鏁版嵁鍋忓樊杩囧ぇ"; - var ErrorBakData = ConnectHelper.GetByPumpOneDayWaterData(DateTime.Today, DateTime.Today.AddDays(1), "300s").Where(x => x.DateTime.Hour <= DateTime.Now.Hour).ToList(); //鑾峰彇褰撳墠鏃ユ湡鍓嶄粖澶╃殑鎵�鏈夊�� - currentdata[i].BakData = JsonHelper.Object2Json(ErrorBakData); - currentdata[i].States = 0; + currentdata[i].LastPredictValue = Math.Round(predictdata[i].Total, 0); + if (currentdata[i].LastPredictValue > 90000 || currentdata[i].LastPredictValue < 20000) + { + currentdata[i].Description += ",鏃堕棿:" + DateTime.Now.ToString("HH:mm") + "棰勬祴鏁版嵁鍋忓樊杩囧ぇ"; + var ErrorBakData = ConnectHelper.GetByPumpOneDayWaterData(DateTime.Today, DateTime.Today.AddDays(1), "300s").Where(x => x.DateTime.Hour <= DateTime.Now.Hour).ToList(); //鑾峰彇褰撳墠鏃ユ湡鍓嶄粖澶╃殑鎵�鏈夊�� + 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; } - else - { - currentdata[i].States = 1; - } - currentdata[i].LastPredictTime = DateTime.Now; - currentdata[i].PredictValueList = currentdata[i].LastPredictValue.ToString() + "," + currentdata[i].PredictValueList; + } + else + { + LogHelper.Info("浠婂ぉ涓�澶╃殑鏁版嵁灏忎簬24鏉� ---涓嶅叏"); } _bll.BatSet(currentdata); LogHelper.Info("宸茬粡鏇挎崲鐪熷疄鏁版嵁"); @@ -189,23 +240,40 @@ var predictdata = _SSAPredictHelper.Predict(tupleList, 3600, 10, 2880, (float)0.99, 48); var list = alllist.Where(x => x.DayHour >= lastdaystarthour + 100 && x.DayHour <= lastdayendhour + 100).OrderBy(x => x.DayHour).ToList(); //鎵惧埌浠婂ぉ鎵�鏈夌殑棰勬祴鏁版嵁,骞舵浛鎹� - for (int i = 0; i < predictdata.Count; i++) + if (list.Count == 0 || list.Count < 24) { - if (i < 24) - { - 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 + LogHelper.Info("鏇挎崲褰撴棩瀹屾暣棰勬祴鏁版嵁鏃舵壘涓嶅埌瀵瑰簲鏃堕棿--"); + for (int i = 24; i < predictdata.Count; i++) { 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), States = 1 }); } + _bll.BatSet(list); + LogHelper.Info("鏃堕棿:" + DateTime.Now + "---棰勬祴浠婃槑涓ゅぉ鏁版嵁"); + return; } - _bll.BatSet(list); - LogHelper.Info("鏃堕棿:" + DateTime.Now + "---棰勬祴浠婃槑涓ゅぉ鏁版嵁"); + if (list.Count == 24) + { + for (int i = 0; i < predictdata.Count; i++) + { + if (i < 24) + { + 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), States = 1 }); + } + } + _bll.BatSet(list); + LogHelper.Info("鏃堕棿:" + DateTime.Now + "---棰勬祴浠婃槑涓ゅぉ鏁版嵁"); + } + /* _bll.BatSet(list); + LogHelper.Info("鏃堕棿:" + DateTime.Now + "---棰勬祴浠婃槑涓ゅぉ鏁版嵁");*/ } } } \ No newline at end of file -- Gitblit v1.9.3