Browse Source

工业库报警逻辑调整

王苗苗 3 weeks ago
parent
commit
2d15fafa7f

+ 4 - 0
slibra-admin/src/main/java/com/slibra/web/controller/business/FrontController.java

@@ -117,6 +117,8 @@ public class FrontController extends BaseController {
                 resultList.add(industrySimpleBean);
             }
         }
+        //新增ID 按照ID升序排列
+        resultList.sort((u1, u2) -> Math.toIntExact(u1.getID() - u2.getID()));
         return AjaxResult.success(resultList);
     }
 
@@ -139,6 +141,8 @@ public class FrontController extends BaseController {
                 resultList.add(robotSimpleBean);
             }
         }
+        //新增ID 按照ID升序排列
+        resultList.sort((u1, u2) -> Math.toIntExact(u1.getID() - u2.getID()));
         return AjaxResult.success(resultList);
     }
 

+ 301 - 153
slibra-quartz/src/main/java/com/slibra/quartz/task/AsyncTask.java

@@ -118,14 +118,14 @@ public class AsyncTask {
                 return;
             }
             //查询工业库同步任务失败的报警正在进行的数据
-            TXinyiWarningRecord warningRecord = TXinyiWarningRecord.builder().symbol(BusinessEnum.WarningSymbolEnum.INDUSTRY_SYNC_ERROR.getCode()).status(0).build();
-            List<TXinyiWarningRecord> tXinyiWarningRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecord);
+            /*TXinyiWarningRecord warningRecord = TXinyiWarningRecord.builder().symbol(BusinessEnum.WarningSymbolEnum.INDUSTRY_SYNC_ERROR.getCode()).status(0).build();
+            List<TXinyiWarningRecord> tXinyiWarningRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecord);*/
             int hours = DateUtils.differentHoursByMillisecond(nowDate, warningDate);
             if(hours == 0){
                 //查看是否有正在进行的同步任务失败的报警
-                if(!CollectionUtils.isEmpty(tXinyiWarningRecords)){
+                /*if(!CollectionUtils.isEmpty(tXinyiWarningRecords)){
                     closeWarning(tXinyiWarningRecords.get(0));
-                }
+                }*/
                 //正常的业务数据报警
                 //水质报警
                 //2025年02月20日10:52:31 在具体的报警类型中增加新的判断 仪表故障 数据异常等
@@ -133,8 +133,11 @@ public class AsyncTask {
                 //2024年5月28日14:14:26  下面是新增的 生化报警处理
 //                this.handleSHWarning(tXinyiIndustry, normConfig, xinyiCalculate);
             }else{
+                log.info("同步工业库任务获取最新的数据失败,无法处理报警信息。");
+                log.error("同步工业库任务获取最新的数据失败,无法处理报警信息。");
+                //todo 发送短信
                 //查询是否有正在工业库的同步任务失败的报警,有的话,什么都不做; 没有的话,新增该类型报警
-                if(CollectionUtils.isEmpty(tXinyiWarningRecords)){
+                /*if(CollectionUtils.isEmpty(tXinyiWarningRecords)){
                     //插入该类型报警
                     warningRecord.setType(0);
                     String msg = BusinessEnum.WarningSymbolEnum.INDUSTRY_SYNC_ERROR.getMsg();
@@ -147,7 +150,7 @@ public class AsyncTask {
                     this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecord);
                 }else{
                     log.info("工业库报警的时候,发现同步工业库任务挂掉了,并且已经有该类型报警了,不做任何处理");
-                }
+                }*/
                 //将其他类型的报警全部关闭
                 //2025年02月27日17:09:56 此场景不关闭其他报警
 //                closeOtherWarningsBySymbol(null);
@@ -1447,7 +1450,7 @@ public class AsyncTask {
         boolean jsSSExecute = true;
 
         //出水cod超标报警
-        WarningMoreExceed warningMoreExceed = handleXinYiWarningsCsMore(csCod, CS_COD.getCode());
+        WarningMoreExceed warningMoreExceed = handleXinYiWarningsCsMore(cscodBzz, csCod, cscodGkz, CS_COD.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsCod(), jsslSjz, normConfig.getJscodSjz()));
         if(warningMoreExceed.isBreakpoint()){
             breakpointCount++;
             breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
@@ -1459,7 +1462,7 @@ public class AsyncTask {
 
         //出水总磷超标报警
         BigDecimal csTp = tXinyiIndustry.getCsTp();
-        warningMoreExceed = handleXinYiWarningsCsMore(csTp, BusinessEnum.WarningCategoryEnum.CS_ZL.getCode());
+        warningMoreExceed = handleXinYiWarningsCsMore(cszlBzz, csTp, cszlGkz, BusinessEnum.WarningCategoryEnum.CS_ZL.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsTp(), jsslSjz, normConfig.getJszlSjz()));
         if(warningMoreExceed.isBreakpoint()){
             breakpointCount++;
             breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
@@ -1472,7 +1475,7 @@ public class AsyncTask {
 
         //出水总氮超标报警
         BigDecimal csTn = tXinyiIndustry.getCsTn();
-        warningMoreExceed = handleXinYiWarningsCsMore(csTn, BusinessEnum.WarningCategoryEnum.CS_ZD.getCode());
+        warningMoreExceed = handleXinYiWarningsCsMore(cszzBzz, csTn, cszzGkz, BusinessEnum.WarningCategoryEnum.CS_ZD.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsTn(), jsslSjz, normConfig.getJszdSjz()));
         if(warningMoreExceed.isBreakpoint()){
             breakpointCount++;
             breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
@@ -1484,7 +1487,7 @@ public class AsyncTask {
 
         //出水氨氮超标报警
         BigDecimal csNh3 = tXinyiIndustry.getCsNh3();
-        warningMoreExceed = handleXinYiWarningsCsMore(csNh3, BusinessEnum.WarningCategoryEnum.CS_AD.getCode());
+        warningMoreExceed = handleXinYiWarningsCsMore(csadBzz, csNh3, csadGkz, BusinessEnum.WarningCategoryEnum.CS_AD.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsNh3(), jsslSjz, normConfig.getJsadSjz()));
         if(warningMoreExceed.isBreakpoint()){
             breakpointCount++;
             breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
@@ -1496,7 +1499,7 @@ public class AsyncTask {
 
         //出水SS超标报警
         BigDecimal csSS = tXinyiIndustry.getCsSs();
-        warningMoreExceed = handleXinYiWarningsCsMore(csSS, BusinessEnum.WarningCategoryEnum.CS_SS.getCode());
+        warningMoreExceed = handleXinYiWarningsCsMore(csSSBzz, csSS, csssGkz, BusinessEnum.WarningCategoryEnum.CS_SS.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsSs(), jsslSjz, normConfig.getJsssSjz()));
         if(warningMoreExceed.isBreakpoint()){
             breakpointCount++;
             breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
@@ -1510,7 +1513,7 @@ public class AsyncTask {
         //进水相关报警
         //进水总磷超标报警
         BigDecimal jsTp = tXinyiIndustry.getJsTp();
-        warningMoreExceed = handleXinYiWarningRecordJSMore(jsTp, BusinessEnum.WarningCategoryEnum.JS_ZL.getCode());
+        warningMoreExceed = handleXinYiWarningRecordJSMore(jszlSjz, jsTp, BusinessEnum.WarningCategoryEnum.JS_ZL.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsTp(), jsslSjz, normConfig.getJszlSjz()));
         if(warningMoreExceed.isBreakpoint()){
             breakpointCount++;
             breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
@@ -1522,7 +1525,7 @@ public class AsyncTask {
 
         //进水COD超标报警
         BigDecimal jsCod = tXinyiIndustry.getJsCod();
-        warningMoreExceed = handleXinYiWarningRecordJSMore(jsCod, BusinessEnum.WarningCategoryEnum.JS_COD.getCode());
+        warningMoreExceed = handleXinYiWarningRecordJSMore(jscodSjz, jsCod, BusinessEnum.WarningCategoryEnum.JS_COD.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsCod(), jsslSjz, normConfig.getJscodSjz()));
         if(warningMoreExceed.isBreakpoint()){
             breakpointCount++;
             breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
@@ -1534,7 +1537,7 @@ public class AsyncTask {
 
         //进水总氮超标报警
         BigDecimal jsTn = tXinyiIndustry.getJsTn();
-        warningMoreExceed = handleXinYiWarningRecordJSMore(jsTn, BusinessEnum.WarningCategoryEnum.JS_ZD.getCode());
+        warningMoreExceed = handleXinYiWarningRecordJSMore(jszdSjz, jsTn, BusinessEnum.WarningCategoryEnum.JS_ZD.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsTn(), jsslSjz, normConfig.getJszdSjz()));
         if(warningMoreExceed.isBreakpoint()){
             breakpointCount++;
             breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
@@ -1546,7 +1549,7 @@ public class AsyncTask {
 
         //进水氨氮超标报警
         BigDecimal jsNh3 = tXinyiIndustry.getJsNh3();
-        warningMoreExceed = handleXinYiWarningRecordJSMore(jsNh3, BusinessEnum.WarningCategoryEnum.JS_AD.getCode());
+        warningMoreExceed = handleXinYiWarningRecordJSMore(jsadSjz, jsNh3, BusinessEnum.WarningCategoryEnum.JS_AD.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsNh3(), jsslSjz, normConfig.getJsadSjz()));
         if(warningMoreExceed.isBreakpoint()){
             breakpointCount++;
             breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
@@ -1558,7 +1561,7 @@ public class AsyncTask {
 
         //进水SS超标报警
         BigDecimal jsSS = tXinyiIndustry.getJsSs();
-        warningMoreExceed = handleXinYiWarningRecordJSMore(jsSS, BusinessEnum.WarningCategoryEnum.JS_SS.getCode());
+        warningMoreExceed = handleXinYiWarningRecordJSMore(jsSSSjz, jsSS, BusinessEnum.WarningCategoryEnum.JS_SS.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsSs(), jsslSjz, normConfig.getJsssSjz()));
         if(warningMoreExceed.isBreakpoint()){
             breakpointCount++;
             breakPointList.add(warningMoreExceed.getBreakPointWarningRecord());
@@ -1655,10 +1658,37 @@ public class AsyncTask {
             if(CollectionUtils.isEmpty(tXinyiWarningRecords)){
                 //新增的断点的数据全部都报警
                 for (TXinyiWarningRecord tXinyiWarningRecord : breakPointList) {
+                    String category = tXinyiWarningRecord.getCategory();
+                    //判断那些指标不能再次执行
+                    //额外判断当前的异常是哪个指标,并处理标识
+                    if(BusinessEnum.WarningCategoryEnum.CS_COD.getCode().equals(category)){
+                        csCodExecute = false;
+                    }else if(BusinessEnum.WarningCategoryEnum.CS_ZL.getCode().equals(category)){
+                        csZLExecute = false;
+                    }else if(BusinessEnum.WarningCategoryEnum.CS_ZD.getCode().equals(category)){
+                        csZDExecute = false;
+                    }else if(BusinessEnum.WarningCategoryEnum.CS_AD.getCode().equals(category)){
+                        csADExecute = false;
+                    }else if(BusinessEnum.WarningCategoryEnum.CS_SS.getCode().equals(category)){
+                        csSSExecute = false;
+                    }else if(BusinessEnum.WarningCategoryEnum.JS_ZL.getCode().equals(category)){
+                        jsZLExecute = false;
+                    }else if(BusinessEnum.WarningCategoryEnum.JS_COD.getCode().equals(category)){
+                        jsCodExecute = false;
+                    }else if(BusinessEnum.WarningCategoryEnum.JS_ZD.getCode().equals(category)){
+                        jsZDExecute = false;
+                    }else if(BusinessEnum.WarningCategoryEnum.JS_AD.getCode().equals(category)){
+                        jsADExecute = false;
+                    }else if(BusinessEnum.WarningCategoryEnum.JS_SS.getCode().equals(category)){
+                        jsSSExecute = false;
+                    }else{
+                        log.error("处理是否后续报警的报警类型是不支持的类型");
+                        throw new ServiceException("处理是否后续报警的报警类型是不支持的类型");
+                    }
                     //关闭该指标的其他类型的报警
-                    closeOtherWarningsByCategory(tXinyiWarningRecord.getCategory(), BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_GYK.getCode());
+                    closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_GYK.getCode());
                     //原来集合里存放的都是单指标异常 下面2个值需要重新赋值
-                    tXinyiWarningRecord.setReason(tXinyiWarningRecord.getCategory() + BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_GYK.getMsg());
+                    tXinyiWarningRecord.setReason(category + BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_GYK.getMsg());
                     tXinyiWarningRecord.setSymbol(BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_GYK.getCode());
                     this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
                     //同时处理决策 不用调用大模型,本地处理问答
@@ -1672,11 +1702,38 @@ public class AsyncTask {
                 //插入新的报警
                 if(!CollectionUtils.isEmpty(breakPointListNew)){
                     for (TXinyiWarningRecord tXinyiWarningRecord : breakPointListNew) {
+                        String category = tXinyiWarningRecord.getCategory();
+                        //判断那些指标不能再次执行
+                        //额外判断当前的异常是哪个指标,并处理标识
+                        if(BusinessEnum.WarningCategoryEnum.CS_COD.getCode().equals(category)){
+                            csCodExecute = false;
+                        }else if(BusinessEnum.WarningCategoryEnum.CS_ZL.getCode().equals(category)){
+                            csZLExecute = false;
+                        }else if(BusinessEnum.WarningCategoryEnum.CS_ZD.getCode().equals(category)){
+                            csZDExecute = false;
+                        }else if(BusinessEnum.WarningCategoryEnum.CS_AD.getCode().equals(category)){
+                            csADExecute = false;
+                        }else if(BusinessEnum.WarningCategoryEnum.CS_SS.getCode().equals(category)){
+                            csSSExecute = false;
+                        }else if(BusinessEnum.WarningCategoryEnum.JS_ZL.getCode().equals(category)){
+                            jsZLExecute = false;
+                        }else if(BusinessEnum.WarningCategoryEnum.JS_COD.getCode().equals(category)){
+                            jsCodExecute = false;
+                        }else if(BusinessEnum.WarningCategoryEnum.JS_ZD.getCode().equals(category)){
+                            jsZDExecute = false;
+                        }else if(BusinessEnum.WarningCategoryEnum.JS_AD.getCode().equals(category)){
+                            jsADExecute = false;
+                        }else if(BusinessEnum.WarningCategoryEnum.JS_SS.getCode().equals(category)){
+                            jsSSExecute = false;
+                        }else{
+                            log.error("处理是否后续报警的报警类型是不支持的类型");
+                            throw new ServiceException("处理是否后续报警的报警类型是不支持的类型");
+                        }
                         //关闭该指标的其他类型的报警
-                        closeOtherWarningsByCategory(tXinyiWarningRecord.getCategory(), BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_GYK.getCode());
+                        closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_GYK.getCode());
                         //新插入
                         //原来集合里存放的都是单指标异常 下面2个值需要重新赋值
-                        tXinyiWarningRecord.setReason(tXinyiWarningRecord.getCategory() + BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_GYK.getMsg());
+                        tXinyiWarningRecord.setReason(category + BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_GYK.getMsg());
                         tXinyiWarningRecord.setSymbol(BusinessEnum.WarningSymbolEnum.YBGZ_DD_MORE_GYK.getCode());
                         this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
                         //同时处理决策 不用调用大模型,本地处理问答
@@ -1692,7 +1749,8 @@ public class AsyncTask {
                 }
             }
             //如果出现多指标问题,后续的报警不再处理
-            return;
+//            return;
+            //2025年03月03日16:07:09 不是其他报警都不执行,只是出现异常的问题不再进行报警,其他的还需要再次报警
         }
 
         //连续不变
@@ -1779,10 +1837,37 @@ public class AsyncTask {
             if(CollectionUtils.isEmpty(tXinyiWarningNoChangeMoreRecords)){
                 //新增的断点的数据全部都报警
                 for (TXinyiWarningRecord tXinyiWarningRecord : noChangeList) {
+                    String category = tXinyiWarningRecord.getCategory();
+                    //判断那些指标不能再次执行
+                    //额外判断当前的异常是哪个指标,并处理标识
+                    if(BusinessEnum.WarningCategoryEnum.CS_COD.getCode().equals(category)){
+                        csCodExecute = false;
+                    }else if(BusinessEnum.WarningCategoryEnum.CS_ZL.getCode().equals(category)){
+                        csZLExecute = false;
+                    }else if(BusinessEnum.WarningCategoryEnum.CS_ZD.getCode().equals(category)){
+                        csZDExecute = false;
+                    }else if(BusinessEnum.WarningCategoryEnum.CS_AD.getCode().equals(category)){
+                        csADExecute = false;
+                    }else if(BusinessEnum.WarningCategoryEnum.CS_SS.getCode().equals(category)){
+                        csSSExecute = false;
+                    }else if(BusinessEnum.WarningCategoryEnum.JS_ZL.getCode().equals(category)){
+                        jsZLExecute = false;
+                    }else if(BusinessEnum.WarningCategoryEnum.JS_COD.getCode().equals(category)){
+                        jsCodExecute = false;
+                    }else if(BusinessEnum.WarningCategoryEnum.JS_ZD.getCode().equals(category)){
+                        jsZDExecute = false;
+                    }else if(BusinessEnum.WarningCategoryEnum.JS_AD.getCode().equals(category)){
+                        jsADExecute = false;
+                    }else if(BusinessEnum.WarningCategoryEnum.JS_SS.getCode().equals(category)){
+                        jsSSExecute = false;
+                    }else{
+                        log.error("处理是否后续报警的报警类型是不支持的类型");
+                        throw new ServiceException("处理是否后续报警的报警类型是不支持的类型");
+                    }
                     //关闭该指标的其他类型的报警
-                    closeOtherWarningsByCategory(tXinyiWarningRecord.getCategory(), BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getCode());
+                    closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getCode());
                     //原来集合里存放的都是单指标异常 下面2个值需要重新赋值
-                    tXinyiWarningRecord.setReason(tXinyiWarningRecord.getCategory() + BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getMsg());
+                    tXinyiWarningRecord.setReason(category + BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getMsg());
                     tXinyiWarningRecord.setSymbol(BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getCode());
                     this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
                     //同时处理决策 不用调用大模型,本地处理问答
@@ -1796,11 +1881,38 @@ public class AsyncTask {
                 //插入新的报警
                 if(!CollectionUtils.isEmpty(noChangeListNew)){
                     for (TXinyiWarningRecord tXinyiWarningRecord : noChangeListNew) {
+                        String category = tXinyiWarningRecord.getCategory();
+                        //判断那些指标不能再次执行
+                        //额外判断当前的异常是哪个指标,并处理标识
+                        if(BusinessEnum.WarningCategoryEnum.CS_COD.getCode().equals(category)){
+                            csCodExecute = false;
+                        }else if(BusinessEnum.WarningCategoryEnum.CS_ZL.getCode().equals(category)){
+                            csZLExecute = false;
+                        }else if(BusinessEnum.WarningCategoryEnum.CS_ZD.getCode().equals(category)){
+                            csZDExecute = false;
+                        }else if(BusinessEnum.WarningCategoryEnum.CS_AD.getCode().equals(category)){
+                            csADExecute = false;
+                        }else if(BusinessEnum.WarningCategoryEnum.CS_SS.getCode().equals(category)){
+                            csSSExecute = false;
+                        }else if(BusinessEnum.WarningCategoryEnum.JS_ZL.getCode().equals(category)){
+                            jsZLExecute = false;
+                        }else if(BusinessEnum.WarningCategoryEnum.JS_COD.getCode().equals(category)){
+                            jsCodExecute = false;
+                        }else if(BusinessEnum.WarningCategoryEnum.JS_ZD.getCode().equals(category)){
+                            jsZDExecute = false;
+                        }else if(BusinessEnum.WarningCategoryEnum.JS_AD.getCode().equals(category)){
+                            jsADExecute = false;
+                        }else if(BusinessEnum.WarningCategoryEnum.JS_SS.getCode().equals(category)){
+                            jsSSExecute = false;
+                        }else{
+                            log.error("处理是否后续报警的报警类型是不支持的类型");
+                            throw new ServiceException("处理是否后续报警的报警类型是不支持的类型");
+                        }
                         //关闭该指标的其他类型的报警
-                        closeOtherWarningsByCategory(tXinyiWarningRecord.getCategory(), BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getCode());
+                        closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getCode());
                         //新插入
                         //原来集合里存放的都是单指标异常 下面2个值需要重新赋值
-                        tXinyiWarningRecord.setReason(tXinyiWarningRecord.getCategory() + BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getMsg());
+                        tXinyiWarningRecord.setReason(category + BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getMsg());
                         tXinyiWarningRecord.setSymbol(BusinessEnum.WarningSymbolEnum.YBGZ_LX_MORE.getCode());
                         this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
                         //同时处理决策 不用调用大模型,本地处理问答
@@ -1816,7 +1928,9 @@ public class AsyncTask {
                 }
             }
             //如果出现多指标问题,后续的报警不再处理
-            return;
+//            return;
+            //2025年03月03日16:07:09 不是其他报警都不执行,只是出现异常的问题不再进行报警,其他的还需要再次报警
+
         }
 
         //开始走正常的水质报警 + 突变
@@ -2410,7 +2524,7 @@ public class AsyncTask {
      * 2025年02月20日11:15:05 返回map 分别是是否断点 是否连续不变
      * @return
      */
-    private WarningMoreExceed handleXinYiWarningsCsMore(BigDecimal currentVal, String category) {
+    private WarningMoreExceed handleXinYiWarningsCsMore(BigDecimal csBzz, BigDecimal currentVal, BigDecimal csGkz, String category, TXinyiIndustry tXinyiIndustry, TXinyiNormConfig normConfig, BigDecimal cwrwfhz) {
         WarningMoreExceed warningMoreExceed = new WarningMoreExceed();
         boolean breakpoint = false;
         boolean noChange = false;
@@ -2434,8 +2548,7 @@ public class AsyncTask {
                 breakpoint = true;
                 //插入该类型报警
                 TXinyiWarningRecord warningRecord = TXinyiWarningRecord.builder().type(0).category(category).symbol(BusinessEnum.WarningSymbolEnum.YBGZ_DD_SINGLE.getCode()).status(0).build();
-                warningRecord.setType(0);
-                warningRecord.setCategory(category);
+
                 warningRecord.setTime(nowDate);
                 warningRecord.setReason(category + BusinessEnum.WarningSymbolEnum.YBGZ_DD_SINGLE.getMsg());
                 warningRecord.setWaterType(BusinessEnum.WaterTypeEnum.CS.getCode());
@@ -2443,6 +2556,12 @@ public class AsyncTask {
                 warningRecord.setCreateBy(WARNING_DEFAULT_CREATE);
                 warningRecord.setCreateTime(nowDate);
                 warningRecord.setWarningVal(currentVal);
+                warningRecord.setDesignVal(csBzz);
+                warningRecord.setControlVal(csGkz);
+                warningRecord.setCwrwfhz(cwrwfhz);
+                warningRecord.setRemark(ZERO_SZ_WARNING.getCode());
+                warningRecord.setCwrwxz(getCwrwxzByDetail(currentVal, normConfig, category, false));//根据当前值和类型以及是否超标处理
+                //存放起来
                 warningMoreExceed.setBreakPointWarningRecord(warningRecord);
                 //这里不报警 需要根据优先级报警
 //                    this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecord);
@@ -2464,8 +2583,6 @@ public class AsyncTask {
                 //插入该类型报警
                 //该类型的连续不变报警
                 TXinyiWarningRecord warningRecordNoChangeSingle = TXinyiWarningRecord.builder().type(0).category(category).symbol(BusinessEnum.WarningSymbolEnum.YBGZ_LX_SINGLE.getCode()).status(0).build();
-                warningRecordNoChangeSingle.setType(0);
-                warningRecordNoChangeSingle.setCategory(category);
                 warningRecordNoChangeSingle.setTime(nowDate);
                 warningRecordNoChangeSingle.setReason(category +  BusinessEnum.WarningSymbolEnum.YBGZ_LX_SINGLE.getMsg());
                 warningRecordNoChangeSingle.setWaterType(BusinessEnum.WaterTypeEnum.CS.getCode());
@@ -2473,6 +2590,12 @@ public class AsyncTask {
                 warningRecordNoChangeSingle.setCreateBy(WARNING_DEFAULT_CREATE);
                 warningRecordNoChangeSingle.setCreateTime(nowDate);
                 warningRecordNoChangeSingle.setWarningVal(currentVal);
+                warningRecordNoChangeSingle.setDesignVal(csBzz);
+                warningRecordNoChangeSingle.setControlVal(csGkz);
+                warningRecordNoChangeSingle.setCwrwfhz(cwrwfhz);
+                warningRecordNoChangeSingle.setRemark(ZERO_SZ_WARNING.getCode());
+                warningRecordNoChangeSingle.setCwrwxz(getCwrwxzByDetail(currentVal, normConfig, category, false));//根据当前值和类型以及是否超标处理
+                //存放起来
                 warningMoreExceed.setNoChangeWarningRecord(warningRecordNoChangeSingle);
                 //
 //                    this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordNoChangeSingle);
@@ -2529,8 +2652,6 @@ public class AsyncTask {
                 //触发报警 并且模拟大模型返回决策问答数据
                 if(CollectionUtils.isEmpty(tXinyiNoChangeYCSGRecords)){
                     //插入该类型报警
-                    warningRecordYCSG.setType(0);
-                    warningRecordYCSG.setCategory(category);
                     warningRecordYCSG.setTime(nowDate);
                     warningRecordYCSG.setReason(category + BusinessEnum.WarningSymbolEnum.SJYC_YCSG.getMsg());
                     warningRecordYCSG.setWaterType(BusinessEnum.WaterTypeEnum.CS.getCode());
@@ -2538,13 +2659,18 @@ public class AsyncTask {
                     warningRecordYCSG.setCreateBy(WARNING_DEFAULT_CREATE);
                     warningRecordYCSG.setCreateTime(nowDate);
                     warningRecordYCSG.setWarningVal(currentVal);
+                    warningRecordYCSG.setDesignVal(csBzz);
+                    warningRecordYCSG.setControlVal(csGkz);
+                    warningRecordYCSG.setRemark(ZERO_SZ_WARNING.getCode());
+                    warningRecordYCSG.setCwrwfhz(cwrwfhz);
+                    warningRecordYCSG.setCwrwxz(getCwrwxzByDetail(currentVal, normConfig, category, true));//根据当前值和类型以及是否超标处理
                     this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordYCSG);
                     //同时处理决策 不用调用大模型,本地处理问答
                     addChatRecordByYCSG(warningRecordYCSG, tXinyiIndustry, normConfig, category, exceedVal);
                 }else{
                     log.info("工业库报警的时候,发现存在异常升高的报警,并且已经有该类型报警了,不做任何处理");
                 }
-                log.info("工业库报警的时候,发现存在异常升高的报警,后续同指标报警不再处理");
+                log.info("工业库报警的时候,发现存在{}异常升高的报警,后续同指标报警不再处理", category);
                 return;
             }else{//不存在 查看历史是否有报警,有的话关闭
                 if(!CollectionUtils.isEmpty(tXinyiNoChangeYCSGRecords)){
@@ -2554,41 +2680,42 @@ public class AsyncTask {
         }
 
         //单点突变-异常偏低报警
-        TXinyiWarningRecord warningRecordYCPD = TXinyiWarningRecord.builder().type(0).category(category).symbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode()).status(0).build();
-        List<TXinyiWarningRecord> tXinyiNoChangeYCPDRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecordYCPD);
-        //是否存在异常偏低的问题
-        if(!Objects.isNull(tXinyiIndustry1)){
-            //2025年02月21日15:05:41 这里只需要比较当前值和标准值的差 以及上个小时的值和标准值的差 所以不用取最近3个小时的
-            BigDecimal exceedVal = existsYCPD(currentVal, category, tXinyiIndustry1, csBzz);
-            if(!Objects.isNull(exceedVal)){//这里不能只返回一个布尔类型的结果,因为还要获取百分比的值
-                //关闭同类型的其他报警
-                closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
-                //触发报警 并且模拟大模型返回决策问答数据
-                if(CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
-                    //插入该类型报警
-                    warningRecordYCPD.setType(0);
-                    warningRecordYCPD.setCategory(category);
-                    warningRecordYCPD.setTime(nowDate);
-                    warningRecordYCPD.setReason(category + BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getMsg());
-                    warningRecordYCPD.setWaterType(BusinessEnum.WaterTypeEnum.CS.getCode());
-                    warningRecordYCPD.setSymbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
-                    warningRecordYCPD.setCreateBy(WARNING_DEFAULT_CREATE);
-                    warningRecordYCPD.setCreateTime(nowDate);
-                    warningRecordYCPD.setWarningVal(currentVal);
-                    this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordYCPD);
-                    //同时处理决策 不用调用大模型,本地处理问答
-                    addChatRecordByYCPD(warningRecordYCPD, tXinyiIndustry, normConfig, category, exceedVal);
-                }else{
-                    log.info("工业库报警的时候,发现存在异常偏低的报警,并且已经有该类型报警了,不做任何处理");
-                }
-                log.info("工业库报警的时候,发现存在异常偏低的报警,后续同指标报警不再处理");
-                return;
-            }else{//不存在 查看历史是否有报警,有的话关闭
-                if(!CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
-                    closeWarning(tXinyiNoChangeYCPDRecords.get(0));
-                }
-            }
-        }
+        //2025年03月03日15:00:55 异常偏低的报警暂时不需要了
+//        TXinyiWarningRecord warningRecordYCPD = TXinyiWarningRecord.builder().type(0).category(category).symbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode()).status(0).build();
+//        List<TXinyiWarningRecord> tXinyiNoChangeYCPDRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecordYCPD);
+//        //是否存在异常偏低的问题
+//        if(!Objects.isNull(tXinyiIndustry1)){
+//            //2025年02月21日15:05:41 这里只需要比较当前值和标准值的差 以及上个小时的值和标准值的差 所以不用取最近3个小时的
+//            BigDecimal exceedVal = existsYCPD(currentVal, category, tXinyiIndustry1, csBzz);
+//            if(!Objects.isNull(exceedVal)){//这里不能只返回一个布尔类型的结果,因为还要获取百分比的值
+//                //关闭同类型的其他报警
+//                closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
+//                //触发报警 并且模拟大模型返回决策问答数据
+//                if(CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
+//                    //插入该类型报警
+//                    warningRecordYCPD.setType(0);
+//                    warningRecordYCPD.setCategory(category);
+//                    warningRecordYCPD.setTime(nowDate);
+//                    warningRecordYCPD.setReason(category + BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getMsg());
+//                    warningRecordYCPD.setWaterType(BusinessEnum.WaterTypeEnum.CS.getCode());
+//                    warningRecordYCPD.setSymbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
+//                    warningRecordYCPD.setCreateBy(WARNING_DEFAULT_CREATE);
+//                    warningRecordYCPD.setCreateTime(nowDate);
+//                    warningRecordYCPD.setWarningVal(currentVal);
+//                    this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordYCPD);
+//                    //同时处理决策 不用调用大模型,本地处理问答
+//                    addChatRecordByYCPD(warningRecordYCPD, tXinyiIndustry, normConfig, category, exceedVal);
+//                }else{
+//                    log.info("工业库报警的时候,发现存在异常偏低的报警,并且已经有该类型报警了,不做任何处理");
+//                }
+//                log.info("工业库报警的时候,发现存在{}异常偏低的报警,后续同指标报警不再处理", category);
+//                return;
+//            }else{//不存在 查看历史是否有报警,有的话关闭
+//                if(!CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
+//                    closeWarning(tXinyiNoChangeYCPDRecords.get(0));
+//                }
+//            }
+//        }
 
         //下面是最原始的处理 超标准 超管控报警
         BigDecimal multiply = csBzz.multiply(new BigDecimal(MyConstants.SCALE_VALUE));
@@ -2772,7 +2899,7 @@ public class AsyncTask {
      * @param category
      * @return
      */
-    private WarningMoreExceed handleXinYiWarningRecordJSMore(BigDecimal currentVal, String category) {
+    private WarningMoreExceed handleXinYiWarningRecordJSMore(BigDecimal jsBzz, BigDecimal currentVal, String category, TXinyiIndustry tXinyiIndustry, TXinyiNormConfig normConfig, BigDecimal cwrwfhz) {
         WarningMoreExceed warningMoreExceed = new WarningMoreExceed();
         boolean breakpoint = false;
         boolean noChange = false;
@@ -2797,8 +2924,6 @@ public class AsyncTask {
                 breakpoint = true;
                 //触发报警 并且模拟大模型返回决策问答数据
                 //插入该类型报警
-                warningRecord.setType(0);
-                warningRecord.setCategory(category);
                 warningRecord.setTime(nowDate);
                 warningRecord.setReason(category + BusinessEnum.WarningSymbolEnum.YBGZ_DD_SINGLE.getMsg());
                 warningRecord.setWaterType(BusinessEnum.WaterTypeEnum.JS.getCode());
@@ -2806,6 +2931,11 @@ public class AsyncTask {
                 warningRecord.setCreateBy(WARNING_DEFAULT_CREATE);
                 warningRecord.setCreateTime(nowDate);
                 warningRecord.setWarningVal(currentVal);
+                warningRecord.setDesignVal(jsBzz);
+                warningRecord.setRemark(ZERO_SZ_WARNING.getCode());
+                warningRecord.setCwrwfhz(cwrwfhz);
+                warningRecord.setCwrwxz(getCwrwxzByDetail(currentVal, normConfig, category, true));//根据当前值和类型以及是否超标处理
+                //存起来
                 warningMoreExceed.setBreakPointWarningRecord(warningRecord);
 //                this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecord);
                 //同时处理决策 不用调用大模型,本地处理问答
@@ -2834,6 +2964,11 @@ public class AsyncTask {
                 warningRecordNoChangeSingle.setCreateBy(WARNING_DEFAULT_CREATE);
                 warningRecordNoChangeSingle.setCreateTime(nowDate);
                 warningRecordNoChangeSingle.setWarningVal(currentVal);
+                warningRecord.setDesignVal(jsBzz);
+                warningRecord.setRemark(ZERO_SZ_WARNING.getCode());
+                warningRecord.setCwrwfhz(cwrwfhz);
+                warningRecord.setCwrwxz(getCwrwxzByDetail(currentVal, normConfig, category, true));//根据当前值和类型以及是否超标处理
+                //存起来
                 warningMoreExceed.setNoChangeWarningRecord(warningRecordNoChangeSingle);
 //                this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordNoChangeSingle);
                 //同时处理决策 不用调用大模型,本地处理问答
@@ -2936,8 +3071,6 @@ public class AsyncTask {
                 //触发报警 并且模拟大模型返回决策问答数据
                 if(CollectionUtils.isEmpty(tXinyiNoChangeYCSGRecords)){
                     //插入该类型报警
-                    warningRecordYCSG.setType(0);
-                    warningRecordYCSG.setCategory(category);
                     warningRecordYCSG.setTime(nowDate);
                     warningRecordYCSG.setReason(category + BusinessEnum.WarningSymbolEnum.SJYC_YCSG.getMsg());
                     warningRecordYCSG.setWaterType(BusinessEnum.WaterTypeEnum.JS.getCode());
@@ -2945,12 +3078,19 @@ public class AsyncTask {
                     warningRecordYCSG.setCreateBy(WARNING_DEFAULT_CREATE);
                     warningRecordYCSG.setCreateTime(nowDate);
                     warningRecordYCSG.setWarningVal(currentVal);
+                    warningRecordYCSG.setDesignVal(jsBzz);
+                    warningRecordYCSG.setRemark(ZERO_SZ_WARNING.getCode());
+                    warningRecordYCSG.setCwrwfhz(cwrwfhz);
+                    warningRecordYCSG.setCwrwxz(getCwrwxzByDetail(currentVal, normConfig, category, true));//根据当前值和类型以及是否超标处理
                     this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordYCSG);
                     //同时处理决策 不用调用大模型,本地处理问答
                     addChatRecordByYCSG(warningRecordYCSG, tXinyiIndustry, normConfig, category, exceedVal);
                 }else{
                     log.info("工业库报警的时候,发现存在异常升高的报警,并且已经有该类型报警了,不做任何处理");
                 }
+                //后续的报警不再进行
+                log.info("工业库报警的时候,发现存在{}异常升高的报警,后续报警不再处理", category);
+                return;
             }else{//不存在 查看历史是否有报警,有的话关闭
                 if(!CollectionUtils.isEmpty(tXinyiNoChangeYCSGRecords)){
                     TXinyiWarningRecord warningRecordExists = tXinyiNoChangeYCSGRecords.get(0);
@@ -2964,44 +3104,47 @@ public class AsyncTask {
         }
 
         //单点突变-异常偏低报警
-        TXinyiWarningRecord warningRecordYCPD = TXinyiWarningRecord.builder().type(0).category(category).symbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode()).status(0).build();
-        List<TXinyiWarningRecord> tXinyiNoChangeYCPDRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecordYCPD);
-        //是否存在异常偏低的问题
-        if(!Objects.isNull(tXinyiIndustry1)){
-            //2025年02月21日15:05:41 这里只需要比较当前值和标准值的差 以及上个小时的值和标准值的差 所以不用取最近3个小时的
-            BigDecimal exceedVal = existsYCPD(currentVal, category, tXinyiIndustry1, jsBzz);
-            if(!Objects.isNull(exceedVal)){//这里不能只返回一个布尔类型的结果,因为还要获取百分比的值
-                //关闭同类型的其他报警
-                closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
-                //触发报警 并且模拟大模型返回决策问答数据
-                if(CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
-                    //插入该类型报警
-                    warningRecordYCPD.setType(0);
-                    warningRecordYCPD.setCategory(category);
-                    warningRecordYCPD.setTime(nowDate);
-                    warningRecordYCPD.setReason(category + BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getMsg());
-                    warningRecordYCPD.setWaterType(BusinessEnum.WaterTypeEnum.JS.getCode());
-                    warningRecordYCPD.setSymbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
-                    warningRecordYCPD.setCreateBy(WARNING_DEFAULT_CREATE);
-                    warningRecordYCPD.setCreateTime(nowDate);
-                    warningRecordYCPD.setWarningVal(currentVal);
-                    this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordYCPD);
-                    //同时处理决策 不用调用大模型,本地处理问答
-                    addChatRecordByYCPD(warningRecordYCPD, tXinyiIndustry, normConfig, category, exceedVal);
-                }else{
-                    log.info("工业库报警的时候,发现存在异常偏低的报警,并且已经有该类型报警了,不做任何处理");
-                }
-            }else{//不存在 查看历史是否有报警,有的话关闭
-                if(!CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
-                    TXinyiWarningRecord warningRecordExists = tXinyiNoChangeYCPDRecords.get(0);
-                    warningRecordExists.setStatus(2);
-                    warningRecordExists.setOffTime(nowDate);
-                    warningRecordExists.setUpdateTime(nowDate);
-                    warningRecordExists.setUpdateBy(WARNING_DEFAULT_CREATE);
-                    this.xinyiWarningRecordMapper.updateTXinyiWarningRecord(warningRecordExists);
-                }
-            }
-        }
+        //2025年03月03日15:00:55 异常偏低的报警暂时不需要了
+//        TXinyiWarningRecord warningRecordYCPD = TXinyiWarningRecord.builder().type(0).category(category).symbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode()).status(0).build();
+//        List<TXinyiWarningRecord> tXinyiNoChangeYCPDRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecordYCPD);
+//        //是否存在异常偏低的问题
+//        if(!Objects.isNull(tXinyiIndustry1)){
+//            //2025年02月21日15:05:41 这里只需要比较当前值和标准值的差 以及上个小时的值和标准值的差 所以不用取最近3个小时的
+//            BigDecimal exceedVal = existsYCPD(currentVal, category, tXinyiIndustry1, jsBzz);
+//            if(!Objects.isNull(exceedVal)){//这里不能只返回一个布尔类型的结果,因为还要获取百分比的值
+//                //关闭同类型的其他报警
+//                closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
+//                //触发报警 并且模拟大模型返回决策问答数据
+//                if(CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
+//                    //插入该类型报警
+//                    warningRecordYCPD.setType(0);
+//                    warningRecordYCPD.setCategory(category);
+//                    warningRecordYCPD.setTime(nowDate);
+//                    warningRecordYCPD.setReason(category + BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getMsg());
+//                    warningRecordYCPD.setWaterType(BusinessEnum.WaterTypeEnum.JS.getCode());
+//                    warningRecordYCPD.setSymbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
+//                    warningRecordYCPD.setCreateBy(WARNING_DEFAULT_CREATE);
+//                    warningRecordYCPD.setCreateTime(nowDate);
+//                    warningRecordYCPD.setWarningVal(currentVal);
+//                    this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordYCPD);
+//                    //同时处理决策 不用调用大模型,本地处理问答
+//                    addChatRecordByYCPD(warningRecordYCPD, tXinyiIndustry, normConfig, category, exceedVal);
+//                }else{
+//                    log.info("工业库报警的时候,发现存在异常偏低的报警,并且已经有该类型报警了,不做任何处理");
+//                }
+//                    //后续的报警不再进行
+//                    return;
+//            }else{//不存在 查看历史是否有报警,有的话关闭
+//                if(!CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
+//                    TXinyiWarningRecord warningRecordExists = tXinyiNoChangeYCPDRecords.get(0);
+//                    warningRecordExists.setStatus(2);
+//                    warningRecordExists.setOffTime(nowDate);
+//                    warningRecordExists.setUpdateTime(nowDate);
+//                    warningRecordExists.setUpdateBy(WARNING_DEFAULT_CREATE);
+//                    this.xinyiWarningRecordMapper.updateTXinyiWarningRecord(warningRecordExists);
+//                }
+//            }
+//        }
 
 
         BigDecimal multiply = jsBzz.multiply(new BigDecimal(MyConstants.SCALE_VALUE));
@@ -4088,19 +4231,23 @@ public class AsyncTask {
             return;
         }
         //查询工业库同步任务失败的报警正在进行的数据
-        TXinyiWarningRecord warningRecord = TXinyiWarningRecord.builder().symbol(BusinessEnum.WarningSymbolEnum.ROBOT_SYNC_ERROR.getCode()).status(0).build();
-        List<TXinyiWarningRecord> tXinyiWarningRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecord);
+        //2025年03月03日15:05:21 同步任务的报警不需要展示  后期考虑短信或者其他方式报警
+        /*TXinyiWarningRecord warningRecord = TXinyiWarningRecord.builder().symbol(BusinessEnum.WarningSymbolEnum.ROBOT_SYNC_ERROR.getCode()).status(0).build();
+        List<TXinyiWarningRecord> tXinyiWarningRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecord);*/
         int hours = DateUtils.differentHoursByMillisecond(nowDate, warningDate);
         if(hours == 0){
             //查看是否有正在进行的同步任务失败的报警
-            if(!CollectionUtils.isEmpty(tXinyiWarningRecords)){
+            /*if(!CollectionUtils.isEmpty(tXinyiWarningRecords)){
                 closeWarning(tXinyiWarningRecords.get(0));
-            }
+            }*/
             //正常的业务数据报警
             robotWarningDetail(tXinyiRobot, normConfig, tXinyiIndustry);
         }else{
+            log.info("同步化验室任务获取最新的数据失败,无法处理报警信息。");
+            log.error("同步化验室任务获取最新的数据失败,无法处理报警信息。");
+            //todo 发送短信
             //查询是否有正在工业库的同步任务失败的报警,有的话,什么都不做; 没有的话,新增该类型报警
-            if(CollectionUtils.isEmpty(tXinyiWarningRecords)){
+            /*if(CollectionUtils.isEmpty(tXinyiWarningRecords)){
                 //插入该类型报警
                 warningRecord.setType(0);
                 String msg = BusinessEnum.WarningSymbolEnum.ROBOT_SYNC_ERROR.getMsg();
@@ -4113,7 +4260,7 @@ public class AsyncTask {
                 this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecord);
             }else{
                 log.info("化验室报警的时候,发现同步化验室同步定时任务挂掉了,并且已经有该类型报警了,不做任何处理");
-            }
+            }*/
             //将其他类型的报警全部关闭
             //2025年02月27日17:35:37 此场景不关闭其他报警
 //            closeOtherWarningsBySymbol(null);
@@ -4489,41 +4636,42 @@ public class AsyncTask {
         }
 
         //单点突变-异常偏低报警
-        TXinyiWarningRecord warningRecordYCPD = TXinyiWarningRecord.builder().type(0).category(category).symbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode()).status(0).build();
-        List<TXinyiWarningRecord> tXinyiNoChangeYCPDRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecordYCPD);
-        //是否存在异常偏低的问题
-        if(!Objects.isNull(tXinyiRobot1)){
-            //2025年02月21日15:05:41 这里只需要比较当前值和标准值的差 以及上个小时的值和标准值的差 所以不用取最近3个小时的
-            BigDecimal exceedVal = existsRobotYCPD(currentVal, category, tXinyiRobot1, csBzz);
-            if(!Objects.isNull(exceedVal)){//这里不能只返回一个布尔类型的结果,因为还要获取百分比的值
-                //关闭同类型的其他报警
-                closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
-                //触发报警 并且模拟大模型返回决策问答数据
-                if(CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
-                    //插入该类型报警
-                    warningRecordYCPD.setType(0);
-                    warningRecordYCPD.setCategory(category);
-                    warningRecordYCPD.setTime(nowDate);
-                    warningRecordYCPD.setReason(category + BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getMsg());
-                    warningRecordYCPD.setWaterType(BusinessEnum.WaterTypeEnum.CS.getCode());
-                    warningRecordYCPD.setSymbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
-                    warningRecordYCPD.setCreateBy(WARNING_DEFAULT_CREATE);
-                    warningRecordYCPD.setCreateTime(nowDate);
-                    warningRecordYCPD.setWarningVal(currentVal);
-                    this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordYCPD);
-                    //同时处理决策 不用调用大模型,本地处理问答
-                    addChatRecordByYCPD(warningRecordYCPD, tXinyiIndustry, normConfig, category, exceedVal);
-                }else{
-                    log.info("化验室报警的时候,发现存在异常偏低的报警,并且已经有该类型报警了,不做任何处理");
-                }
-                log.info("化验室报警的时候,发现存在异常偏低的报警,后续同指标报警不再处理");
-                return;
-            }else{//不存在 查看历史是否有报警,有的话关闭
-                if(!CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
-                    closeWarning(tXinyiNoChangeYCPDRecords.get(0));
-                }
-            }
-        }
+        //2025年03月03日15:00:55 异常偏低的报警暂时不需要了
+//        TXinyiWarningRecord warningRecordYCPD = TXinyiWarningRecord.builder().type(0).category(category).symbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode()).status(0).build();
+//        List<TXinyiWarningRecord> tXinyiNoChangeYCPDRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecordYCPD);
+//        //是否存在异常偏低的问题
+//        if(!Objects.isNull(tXinyiRobot1)){
+//            //2025年02月21日15:05:41 这里只需要比较当前值和标准值的差 以及上个小时的值和标准值的差 所以不用取最近3个小时的
+//            BigDecimal exceedVal = existsRobotYCPD(currentVal, category, tXinyiRobot1, csBzz);
+//            if(!Objects.isNull(exceedVal)){//这里不能只返回一个布尔类型的结果,因为还要获取百分比的值
+//                //关闭同类型的其他报警
+//                closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
+//                //触发报警 并且模拟大模型返回决策问答数据
+//                if(CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
+//                    //插入该类型报警
+//                    warningRecordYCPD.setType(0);
+//                    warningRecordYCPD.setCategory(category);
+//                    warningRecordYCPD.setTime(nowDate);
+//                    warningRecordYCPD.setReason(category + BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getMsg());
+//                    warningRecordYCPD.setWaterType(BusinessEnum.WaterTypeEnum.CS.getCode());
+//                    warningRecordYCPD.setSymbol(BusinessEnum.WarningSymbolEnum.SJYC_YCPD.getCode());
+//                    warningRecordYCPD.setCreateBy(WARNING_DEFAULT_CREATE);
+//                    warningRecordYCPD.setCreateTime(nowDate);
+//                    warningRecordYCPD.setWarningVal(currentVal);
+//                    this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordYCPD);
+//                    //同时处理决策 不用调用大模型,本地处理问答
+//                    addChatRecordByYCPD(warningRecordYCPD, tXinyiIndustry, normConfig, category, exceedVal);
+//                }else{
+//                    log.info("化验室报警的时候,发现存在异常偏低的报警,并且已经有该类型报警了,不做任何处理");
+//                }
+//                log.info("化验室报警的时候,发现存在异常偏低的报警,后续同指标报警不再处理");
+//                return;
+//            }else{//不存在 查看历史是否有报警,有的话关闭
+//                if(!CollectionUtils.isEmpty(tXinyiNoChangeYCPDRecords)){
+//                    closeWarning(tXinyiNoChangeYCPDRecords.get(0));
+//                }
+//            }
+//        }
 
         //下面是最原始的处理 超标准 超管控报警
         BigDecimal multiply = csBzz.multiply(new BigDecimal(MyConstants.SCALE_VALUE));

+ 3 - 0
slibra-system/src/main/java/com/slibra/business/res/IndustrySimpleBean.java

@@ -14,6 +14,9 @@ import java.math.BigDecimal;
 @NoArgsConstructor
 public class IndustrySimpleBean {
 
+    /** 主键 */
+    private Long ID;
+
     /** 化验时间 精确到小时 */
     @Excel(name = "化验时间 精确到小时")
     private String testHour;

+ 3 - 0
slibra-system/src/main/java/com/slibra/business/res/RobotSimpleBean.java

@@ -14,6 +14,9 @@ import java.math.BigDecimal;
 @NoArgsConstructor
 public class RobotSimpleBean {
 
+    /** 主键 */
+    private Long ID;
+
     /** 化验时间 精确到小时 */
     @Excel(name = "化验时间 精确到小时")
     private String testHour;