Răsfoiți Sursa

预测报警 和 其他不一样,每次如果继续报警,需要把历史的数据更新一下 因为不显示次数的原因

wangmiaomiao 9 luni în urmă
părinte
comite
cdbbd0ece5

+ 20 - 4
slibra-quartz/src/main/java/com/slibra/quartz/task/RyTask.java

@@ -36,6 +36,7 @@ import org.springframework.util.CollectionUtils;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.ParseException;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -421,8 +422,8 @@ public class RyTask
         //2024年6月23日17:01:30 预警时间改成当前时间
         showValueChartBasic.setB(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM ,DateUtils.getNowDate()));
         showValueChartBasic.setC(date + " " + yjHour);//预计超标时间
-        showValueChartBasic.setD(tXinyiWarningRecord.getWarningVal());
-        showValueChartBasic.setE(tXinyiWarningRecord.getForecastVal());
+        showValueChartBasic.setD(tXinyiWarningRecord.getWarningVal());//改成现在值  不是报警时候的值(在发现存在告警记录的时候更新)
+        showValueChartBasic.setE(tXinyiWarningRecord.getForecastVal());//改成预测值  不是报警时候的值(在发现存在告警记录的时候更新)
         showValueChartBasic.setF(tXinyiWarningRecord.getControlVal());
         showValueChartBasic.setG(tXinyiWarningRecord.getDesignVal());
 //        showValueChartBasic.setH(Math.min(count, MAX_COUNT));
@@ -1111,7 +1112,6 @@ public class RyTask
             tXinyiWarningRecord.setStatus(0);
             tXinyiWarningRecord.setType(2);
             tXinyiWarningRecord.setCategory(category);
-            tXinyiWarningRecord.setTime(DateUtils.getNowDate());
             tXinyiWarningRecord.setWarningVal(currentVal);//当前值
             tXinyiWarningRecord.setForecastVal(forecastVal);
             tXinyiWarningRecord.setDesignVal(csBzz);
@@ -1140,6 +1140,12 @@ public class RyTask
                 log.info("预测报警中出现了超标的情况,循环可以退出了");
                 yjHour = hour.split(",")[i];
                 date = date.split(",")[i];//2024年6月23日18:34:49  日期也是多个了
+                //预计超标时间 不是当前值,是预测超标的时间。
+                try {
+                    tXinyiWarningRecord.setTime(DateUtils.parseDate(date + " " + yjHour, DateUtils.YYYY_MM_DD_HH));
+                } catch (ParseException e) {
+                    log.error("处理语句的预计超标时间是,异常,异常信息为{}", e.getMessage());
+                }
                 break;
             }
         }
@@ -1175,6 +1181,14 @@ public class RyTask
                         //只保存一个普通的问答记录 不需要调用决策信息,但是实时数据还是要记录的
                         this.addChatRecordByWarning(tXinyiWarningRecord, tXinyiIndustry, normConfig);
                     }else {
+                        //2024年6月25日11:32:13 预测的相对特殊:因为前端不展示次数,所以这里把 超标时间+现在值+预测值更新一下
+                        xinyiWarningRecord.setForecastVal(tXinyiWarningRecord.getForecastVal());
+                        xinyiWarningRecord.setWarningVal(currentVal);
+                        xinyiWarningRecord.setTime(tXinyiWarningRecord.getTime());
+                        xinyiWarningRecord.setUpdateTime(DateUtils.getNowDate());
+                        xinyiWarningRecord.setUpdateBy(WARNING_DEFAULT_CREATE);
+                        //更新数据库
+                        this.xinyiWarningRecordMapper.updateTXinyiWarningRecord(xinyiWarningRecord);
                         //继续调用决策
                         this.askBigModelForYC(xinyiWarningRecord, tXinyiIndustry, normConfig, chartsDataList, date, yjHour);
                     }
@@ -1493,7 +1507,7 @@ public class RyTask
         return sb;
     }
 
-    public static void main(String[] args) {
+    public static void main(String[] args) throws ParseException {
         /*LocalDateTime endTime = LocalDateTime.now();
         System.out.println("endTime = " + endTime);
         endTime = endTime.plusMinutes(60);
@@ -1549,6 +1563,8 @@ public class RyTask
         splitNew[1] = "1";
         splitNew[2] = "2";
         System.out.println(Arrays.toString(splitNew));
+
+        System.out.println(DateUtils.parseDate("2024-06-25 10", DateUtils.YYYY_MM_DD_HH));
     }