Ver código fonte

多指标断点和连续不变 历史报警如果继续报警处理

王苗苗 3 semanas atrás
pai
commit
faa9d415d6

+ 105 - 2
slibra-quartz/src/main/java/com/slibra/quartz/task/AsyncTask.java

@@ -1599,7 +1599,7 @@ public class AsyncTask {
                 addChatRecordByBreakPointsSingle(warningRecordBreakPointOne, tXinyiIndustry, normConfig, category);
             }else{
                 log.info("工业库报警的时候,发现存在仪表故障(断点不变单个指标)的报警,并且已经有该类型报警了,不做任何处理");
-                //2025年03月05日17:49:14 逻辑调整:更新一直报警的那条记录的显示值
+                //2025年03月06日10:52:57 逻辑调整:更新一直报警的那条记录的显示值
                 TXinyiWarningRecord xinyiWarningRecord = tXinyiBreakPointSingleWarningRecords.get(0);
                 xinyiWarningRecord.setWarningVal(warningRecordBreakPointOne.getWarningVal());
                 xinyiWarningRecord.setTime(warningRecordBreakPointOne.getTime());
@@ -1759,6 +1759,32 @@ public class AsyncTask {
                         closeWarning(tXinyiWarningRecord);
                     }
                 }
+                //2025年03月06日10:56:41 需要额外记录哪些是历史报警,现在仍然报警的,这种的更新部分信息,更新决策内容
+                List<TXinyiWarningRecord> breakPointListContinue = new ArrayList<>(tXinyiWarningRecords);
+                breakPointListContinue.removeAll(breakPointListNew);
+                if(!CollectionUtils.isEmpty(breakPointListContinue)){
+                    for (TXinyiWarningRecord tXinyiWarningRecord : breakPointListContinue) {
+                        //2025年03月06日10:52:57 逻辑调整:更新一直报警的那条记录的显示值
+                        //需要匹配新的报警中的最新的值
+                        String category = tXinyiWarningRecord.getCategory();
+                        TXinyiWarningRecord tXinyiWarningRecordContinue = tXinyiWarningRecord;//兜底处理
+                        Optional<TXinyiWarningRecord> optional = breakPointListNew.stream().filter(r -> category.equals(r.getCategory())).findAny();
+                        if(optional.isPresent()){
+                            tXinyiWarningRecordContinue = optional.get();
+                            log.info("存在之前多指标断点,现在仍然断点的数据{}", JSON.toJSONString(tXinyiWarningRecordContinue));
+                        }
+                        tXinyiWarningRecord.setWarningVal(tXinyiWarningRecordContinue.getWarningVal());
+                        tXinyiWarningRecord.setTime(tXinyiWarningRecordContinue.getTime());
+                        tXinyiWarningRecord.setUpdateTime(nowDate);
+                        tXinyiWarningRecord.setUpdateBy(WARNING_DEFAULT_CREATE);
+                        //从单指标变成多指标 这个不可以修改
+//                        tXinyiWarningRecord.setReason(tXinyiWarningRecordContinue.getReason());
+                        //更新数据库
+                        this.xinyiWarningRecordMapper.updateTXinyiWarningRecord(tXinyiWarningRecord);
+                        //继续调用决策【本地模拟的决策】
+                        addChatRecordByBreakPointsMore(tXinyiWarningRecord, tXinyiIndustry, normConfig);
+                    }
+                }
             }
             //如果出现多指标问题,后续的报警不再处理
 //            return;
@@ -1790,6 +1816,18 @@ public class AsyncTask {
                 addChatRecordByNoChangeSingle(noChangeWarningRecord, tXinyiIndustry, normConfig, category);
             }else{
                 log.info("工业库报警的时候,发现存在仪表故障(连续不变单个指标)的报警,并且已经有该类型报警了,不做任何处理");
+                //2025年03月06日10:52:57 逻辑调整:更新一直报警的那条记录的显示值
+                TXinyiWarningRecord xinyiWarningRecord = tXinyiNoChangeSingleWarningRecords.get(0);
+                xinyiWarningRecord.setWarningVal(noChangeWarningRecord.getWarningVal());
+                xinyiWarningRecord.setTime(noChangeWarningRecord.getTime());
+                xinyiWarningRecord.setUpdateTime(nowDate);
+                xinyiWarningRecord.setUpdateBy(WARNING_DEFAULT_CREATE);
+                //2024年7月31日09:20:47 报警的原因(超标还是超管控也需要更新)
+                xinyiWarningRecord.setReason(noChangeWarningRecord.getReason());
+                //更新数据库
+                this.xinyiWarningRecordMapper.updateTXinyiWarningRecord(xinyiWarningRecord);
+                //继续调用决策【本地模拟的决策】
+                addChatRecordByNoChangeSingle(xinyiWarningRecord, tXinyiIndustry, normConfig, category);
             }
             //额外判断当前的异常是哪个指标,并处理标识
             if(BusinessEnum.WarningCategoryEnum.CS_COD.getCode().equals(category)){
@@ -1938,6 +1976,33 @@ public class AsyncTask {
                         closeWarning(tXinyiWarningRecord);
                     }
                 }
+
+                //2025年03月06日10:56:41 需要额外记录哪些是历史报警,现在仍然报警的,这种的更新部分信息,更新决策内容
+                List<TXinyiWarningRecord> noChangeListContinue = new ArrayList<>(tXinyiWarningRecords);
+                noChangeListContinue.removeAll(noChangeListNew);
+                if(!CollectionUtils.isEmpty(noChangeListContinue)){
+                    for (TXinyiWarningRecord tXinyiWarningRecord : noChangeListContinue) {
+                        //2025年03月06日10:52:57 逻辑调整:更新一直报警的那条记录的显示值
+                        //需要匹配新的报警中的最新的值
+                        String category = tXinyiWarningRecord.getCategory();
+                        TXinyiWarningRecord tXinyiWarningRecordContinue = tXinyiWarningRecord;//兜底处理
+                        Optional<TXinyiWarningRecord> optional = noChangeListNew.stream().filter(r -> category.equals(r.getCategory())).findAny();
+                        if(optional.isPresent()){
+                            tXinyiWarningRecordContinue = optional.get();
+                            log.info("存在之前多指标连续不变的数据,现在仍然连续不变的数据{}", JSON.toJSONString(tXinyiWarningRecordContinue));
+                        }
+                        tXinyiWarningRecord.setWarningVal(tXinyiWarningRecordContinue.getWarningVal());
+                        tXinyiWarningRecord.setTime(tXinyiWarningRecordContinue.getTime());
+                        tXinyiWarningRecord.setUpdateTime(nowDate);
+                        tXinyiWarningRecord.setUpdateBy(WARNING_DEFAULT_CREATE);
+                        //从单指标变成多指标 这个不可以修改
+//                        tXinyiWarningRecord.setReason(tXinyiWarningRecordContinue.getReason());
+                        //更新数据库
+                        this.xinyiWarningRecordMapper.updateTXinyiWarningRecord(tXinyiWarningRecord);
+                        //继续调用决策【本地模拟的决策】
+                        addChatRecordByBreakPointsMore(tXinyiWarningRecord, tXinyiIndustry, normConfig);
+                    }
+                }
             }
             //如果出现多指标问题,后续的报警不再处理
 //            return;
@@ -4524,7 +4589,7 @@ public class AsyncTask {
             breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
         }
 
-
+        Date nowDate = DateUtils.getNowDate();
         //下面是处理多个指标的 【断点】报警
         //断点
         TXinyiWarningRecord warningRecord = TXinyiWarningRecord.builder().symbol(BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_HYS.getCode()).status(0).build();
@@ -4551,6 +4616,18 @@ public class AsyncTask {
                 addChatRecordByBreakPointsSingle(warningRecordBreakPointOne, tXinyiIndustry, normConfig, category);
             }else{
                 log.info("化验室报警的时候,发现存在仪表故障(断点不变单个指标)的报警,并且已经有该类型报警了,不做任何处理");
+                //2025年03月06日10:52:57 逻辑调整:更新一直报警的那条记录的显示值
+                TXinyiWarningRecord xinyiWarningRecord = tXinyiBreakPointSingleWarningRecords.get(0);
+                xinyiWarningRecord.setWarningVal(warningRecordBreakPointOne.getWarningVal());
+                xinyiWarningRecord.setTime(warningRecordBreakPointOne.getTime());
+                xinyiWarningRecord.setUpdateTime(nowDate);
+                xinyiWarningRecord.setUpdateBy(WARNING_DEFAULT_CREATE);
+                //2024年7月31日09:20:47 报警的原因(超标还是超管控也需要更新)
+//                xinyiWarningRecord.setReason(warningRecordBreakPointOne.getReason());
+                //更新数据库
+                this.xinyiWarningRecordMapper.updateTXinyiWarningRecord(xinyiWarningRecord);
+                //继续调用决策【本地模拟的决策】
+                addChatRecordByBreakPointsSingle(xinyiWarningRecord, tXinyiIndustry, normConfig, category);
             }
             //如果出现单指标报警  标识后续同指标是否可以继续报警
             if(ROBOT_XSY_1.getCode().equals(category))
@@ -4651,6 +4728,32 @@ public class AsyncTask {
                         closeWarning(tXinyiWarningRecord);
                     }
                 }
+                //2025年03月06日10:56:41 需要额外记录哪些是历史报警,现在仍然报警的,这种的更新部分信息,更新决策内容
+                List<TXinyiWarningRecord> breakPointListContinue = new ArrayList<>(tXinyiWarningRecords);
+                breakPointListContinue.removeAll(breakPointListNew);
+                if(!CollectionUtils.isEmpty(breakPointListContinue)){
+                    for (TXinyiWarningRecord tXinyiWarningRecord : breakPointListContinue) {
+                        //2025年03月06日10:52:57 逻辑调整:更新一直报警的那条记录的显示值
+                        //需要匹配新的报警中的最新的值
+                        String category = tXinyiWarningRecord.getCategory();
+                        TXinyiWarningRecord tXinyiWarningRecordContinue = tXinyiWarningRecord;//兜底处理
+                        Optional<TXinyiWarningRecord> optional = breakPointListNew.stream().filter(r -> category.equals(r.getCategory())).findAny();
+                        if(optional.isPresent()){
+                            tXinyiWarningRecordContinue = optional.get();
+                            log.info("存在之前多指标断点,现在仍然断点的数据{}", JSON.toJSONString(tXinyiWarningRecordContinue));
+                        }
+                        tXinyiWarningRecord.setWarningVal(tXinyiWarningRecordContinue.getWarningVal());
+                        tXinyiWarningRecord.setTime(tXinyiWarningRecordContinue.getTime());
+                        tXinyiWarningRecord.setUpdateTime(nowDate);
+                        tXinyiWarningRecord.setUpdateBy(WARNING_DEFAULT_CREATE);
+                        //从单指标变成多指标 这个不可以修改
+//                        tXinyiWarningRecord.setReason(tXinyiWarningRecordContinue.getReason());
+                        //更新数据库
+                        this.xinyiWarningRecordMapper.updateTXinyiWarningRecord(tXinyiWarningRecord);
+                        //继续调用决策【本地模拟的决策】
+                        addChatRecordByBreakPointsMore(tXinyiWarningRecord, tXinyiIndustry, normConfig);
+                    }
+                }
             }
             //如果出现多指标问题,后续的报警不再处理
             //2025年03月03日17:31:53 只有上述指标出现异常的,才不可以报警,不会让所有的都不报警