Ver código fonte

化验室报警逻辑调整

王苗苗 1 mês atrás
pai
commit
61a9364d5f

+ 2 - 2
slibra-admin/src/main/java/com/slibra/web/controller/business/HandleDataController.java

@@ -140,12 +140,12 @@ public class HandleDataController extends BaseController
     /**
      *手动处理化验室报警
      */
-    @GetMapping("/robotWarning")
+    /*@GetMapping("/robotWarning")
     public String robotWarning(){
         log.info("进入了 手动触发化验室报警的 操作");
         asyncTask.handleRobotWarning(this.xinyiRobotMapper.selectNRobot(1));
         return "success";
-    }
+    }*/
 
 
     /**

+ 522 - 119
slibra-quartz/src/main/java/com/slibra/quartz/task/AsyncTask.java

@@ -2403,7 +2403,7 @@ public class AsyncTask {
             }
         }
 
-
+        //下面是最原始的处理 超标准 超管控报警
         BigDecimal multiply = csBzz.multiply(new BigDecimal(MyConstants.SCALE_VALUE));
         TXinyiWarningRecord tXinyiWarningRecord = new TXinyiWarningRecord();
         /*String category = BusinessEnum.WarningCategoryEnum.CS_AD.getCode();*/
@@ -2975,7 +2975,7 @@ public class AsyncTask {
 
     /**
      *
-     * 先判断该指标是否超过最大值,如果超过了,返回对应的超过的值; 如果没有超标,返回null。
+     * 【工业库异常升高】先判断该指标是否超过最大值,如果超过了,返回对应的超过的值; 如果没有超标,返回null。
      * 一个字段返回用作2个地方
      * @param currentVal
      * @param category
@@ -3086,6 +3086,188 @@ public class AsyncTask {
 
 
 
+    /**
+     *
+     * 【化验室异常升高】先判断该指标是否超过最大值,如果超过了,返回对应的超过的值; 如果没有超标,返回null。
+     * 一个字段返回用作2个地方
+     * @param currentVal
+     * @param category
+     * @param tXinyiRobots
+     * @return
+     */
+    private BigDecimal existsRobotYCSG(BigDecimal currentVal, String category, List<TXinyiRobot> tXinyiRobots) {
+        BigDecimal result = null;//默认不超标
+        TXinyiRobot tXinyiRobot1 = tXinyiRobots.get(INDEX_1);
+        TXinyiRobot tXinyiRobot2 = tXinyiRobots.get(INDEX_2);
+        BigDecimal compareVal = BigDecimal.valueOf(YCSG_VAL_CONF);
+        if(BusinessEnum.WarningCategoryEnum.ROBOT_XSY_1.getCode().equals(category)){
+            BigDecimal no3Hlj1Jqr1 = tXinyiRobot1.getNo3Hlj1Jqr();
+            BigDecimal no3Hlj1Jqr2 = tXinyiRobot2.getNo3Hlj1Jqr();
+            if(!Objects.isNull(currentVal) && !Objects.isNull(no3Hlj1Jqr1) && !Objects.isNull(no3Hlj1Jqr2)){
+                BigDecimal divide1 = currentVal.subtract(no3Hlj1Jqr1).divide(no3Hlj1Jqr1, NUMBER_SCALE_4, RoundingMode.HALF_UP);
+                BigDecimal divide2 = no3Hlj1Jqr1.subtract(no3Hlj1Jqr2).divide(no3Hlj1Jqr2, NUMBER_SCALE_4, RoundingMode.HALF_UP);
+                if(divide1.compareTo(compareVal) > 0 && divide2.compareTo(compareVal) > 0)
+                    result = divide1;
+            }
+        }else if(BusinessEnum.WarningCategoryEnum.ROBOT_XSY_2.getCode().equals(category)){
+            BigDecimal no3Hlj2Jqr1 = tXinyiRobot1.getNo3Hlj2Jqr();
+            BigDecimal no3Hlj2Jqr2 = tXinyiRobot2.getNo3Hlj2Jqr();
+            if(!Objects.isNull(currentVal) && !Objects.isNull(no3Hlj2Jqr1) && !Objects.isNull(no3Hlj2Jqr2)){
+                BigDecimal divide1 = currentVal.subtract(no3Hlj2Jqr1).divide(no3Hlj2Jqr1, NUMBER_SCALE_4, RoundingMode.HALF_UP);
+                BigDecimal divide2 = no3Hlj2Jqr1.subtract(no3Hlj2Jqr2).divide(no3Hlj2Jqr2, NUMBER_SCALE_4, RoundingMode.HALF_UP);
+                if(divide1.compareTo(compareVal) > 0 && divide2.compareTo(compareVal) > 0)
+                    result = divide1;
+            }
+        }else if(BusinessEnum.WarningCategoryEnum.ROBOT_ECCZLSY.getCode().equals(category)){
+            BigDecimal tpRccJqr1 = tXinyiRobot1.getTpRccJqr();
+            BigDecimal tpRccJqr2 = tXinyiRobot2.getTpRccJqr();
+            if(!Objects.isNull(currentVal) && !Objects.isNull(tpRccJqr1) && !Objects.isNull(tpRccJqr2)){
+                BigDecimal divide1 = currentVal.subtract(tpRccJqr1).divide(tpRccJqr1, NUMBER_SCALE_4, RoundingMode.HALF_UP);
+                BigDecimal divide2 = tpRccJqr1.subtract(tpRccJqr2).divide(tpRccJqr2, NUMBER_SCALE_4, RoundingMode.HALF_UP);
+                if(divide1.compareTo(compareVal) > 0 && divide2.compareTo(compareVal) > 0)
+                    result = divide1;
+            }
+        }else if(BusinessEnum.WarningCategoryEnum.CS_AD.getCode().equals(category)){//2025年02月25日16:23:08 合并一个指标:出水氨氮 通过计算获得
+            //计算得到对应的值
+            //计算1(1池)
+            BigDecimal no3Qyc1Jqr11 = tXinyiRobot1.getNo3Qyc1Jqr();
+            BigDecimal nh31Jqr11 = tXinyiRobot1.getNh31Jqr();
+            BigDecimal no3Hlj1Jqr11 = tXinyiRobot1.getNo3Hlj1Jqr();
+            if(Objects.isNull(no3Qyc1Jqr11))
+                no3Qyc1Jqr11 = BigDecimal.ZERO;
+            if(Objects.isNull(nh31Jqr11))
+                nh31Jqr11 = BigDecimal.ZERO;
+            if(Objects.isNull(no3Hlj1Jqr11))
+                no3Hlj1Jqr11 = BigDecimal.ZERO;
+            BigDecimal anDan11 = no3Qyc1Jqr11.add(nh31Jqr11).subtract(no3Hlj1Jqr11);
+            //计算1(2池)
+            BigDecimal no3Qyc1Jqr12 = tXinyiRobot1.getNo3Qyc2Jqr();
+            BigDecimal nh31Jqr12 = tXinyiRobot1.getNh32Jqr();
+            BigDecimal no3Hlj1Jqr12 = tXinyiRobot1.getNo3Hlj2Jqr();
+            if(Objects.isNull(no3Qyc1Jqr12))
+                no3Qyc1Jqr12 = BigDecimal.ZERO;
+            if(Objects.isNull(nh31Jqr12))
+                nh31Jqr12 = BigDecimal.ZERO;
+            if(Objects.isNull(no3Hlj1Jqr12))
+                no3Hlj1Jqr12 = BigDecimal.ZERO;
+            BigDecimal anDan12 = no3Qyc1Jqr12.add(nh31Jqr12).subtract(no3Hlj1Jqr12);
+            BigDecimal anDan1 = anDan11.add(anDan12).divide(DECIMAL_2, NUMBER_SCALE_4, RoundingMode.HALF_UP);
+
+            //计算2(1池)
+            BigDecimal no3Qyc1Jqr21 = tXinyiRobot2.getNo3Qyc1Jqr();
+            BigDecimal nh31Jqr21 = tXinyiRobot2.getNh31Jqr();
+            BigDecimal no3Hlj1Jqr21 = tXinyiRobot2.getNo3Hlj1Jqr();
+            if(Objects.isNull(no3Qyc1Jqr21))
+                no3Qyc1Jqr21 = BigDecimal.ZERO;
+            if(Objects.isNull(nh31Jqr21))
+                nh31Jqr21 = BigDecimal.ZERO;
+            if(Objects.isNull(no3Hlj1Jqr21))
+                no3Hlj1Jqr21 = BigDecimal.ZERO;
+            BigDecimal anDan21 = no3Qyc1Jqr21.add(nh31Jqr21).subtract(no3Hlj1Jqr21);
+            //计算2(2池)
+            BigDecimal no3Qyc1Jqr22 = tXinyiRobot2.getNo3Qyc2Jqr();
+            BigDecimal nh31Jqr22 = tXinyiRobot2.getNh32Jqr();
+            BigDecimal no3Hlj1Jqr22 = tXinyiRobot2.getNo3Hlj2Jqr();
+            if(Objects.isNull(no3Qyc1Jqr22))
+                no3Qyc1Jqr22 = BigDecimal.ZERO;
+            if(Objects.isNull(nh31Jqr22))
+                nh31Jqr22 = BigDecimal.ZERO;
+            if(Objects.isNull(no3Hlj1Jqr22))
+                no3Hlj1Jqr22 = BigDecimal.ZERO;
+            BigDecimal anDan22 = no3Qyc1Jqr22.add(nh31Jqr22).subtract(no3Hlj1Jqr22);
+            BigDecimal anDan2 = anDan21.add(anDan22).divide(DECIMAL_2, NUMBER_SCALE_4, RoundingMode.HALF_UP);
+
+            if(!Objects.isNull(currentVal) && !Objects.isNull(anDan1) && !Objects.isNull(anDan2)){
+                BigDecimal divide1 = currentVal.subtract(anDan1).divide(anDan1, NUMBER_SCALE_4, RoundingMode.HALF_UP);
+                BigDecimal divide2 = anDan1.subtract(anDan2).divide(anDan2, NUMBER_SCALE_4, RoundingMode.HALF_UP);
+                if(divide1.compareTo(compareVal) > 0 && divide2.compareTo(compareVal) > 0)
+                    result = divide1;
+            }
+        }else{
+            log.error("化验室暂时还不支持的报警类型~~~~");
+        }
+        return result;
+    }
+
+
+
+    /**
+     *
+     * 【化验室异常偏低】先判断该指标计算值是否大于最低阈值,如果超过了,返回对应的超过的值; 如果没有超标,返回null。
+     * 一个字段返回用作2个地方
+     * @param currentVal
+     * @param category
+     * @param tXinyiRobot1
+     * @param bzz
+     * @return
+     */
+    private BigDecimal existsRobotYCPD(BigDecimal currentVal, String category, TXinyiRobot tXinyiRobot1, BigDecimal bzz) {
+        BigDecimal result = null;//默认不超标
+        BigDecimal compareVal = BigDecimal.valueOf(YCPD_VAL_CONF);
+        if(BusinessEnum.WarningCategoryEnum.ROBOT_XSY_1.getCode().equals(category)){
+            BigDecimal no3Hlj1Jqr1 = tXinyiRobot1.getNo3Hlj1Jqr();
+            if(!Objects.isNull(currentVal) && !Objects.isNull(no3Hlj1Jqr1)){
+                BigDecimal divide1 = bzz.subtract(currentVal).divide(bzz, NUMBER_SCALE_4, RoundingMode.HALF_UP);
+                BigDecimal divide2 = bzz.subtract(no3Hlj1Jqr1).divide(bzz, NUMBER_SCALE_4, RoundingMode.HALF_UP);
+                if(divide1.compareTo(compareVal) > 0 && divide2.compareTo(compareVal) > 0)
+                    result = divide1;
+            }
+        }else if(BusinessEnum.WarningCategoryEnum.ROBOT_XSY_2.getCode().equals(category)){
+            BigDecimal no3Hlj2Jqr1 = tXinyiRobot1.getNo3Hlj2Jqr();
+            if(!Objects.isNull(currentVal) && !Objects.isNull(no3Hlj2Jqr1)){
+                BigDecimal divide1 = bzz.subtract(currentVal).divide(bzz, NUMBER_SCALE_4, RoundingMode.HALF_UP);
+                BigDecimal divide2 = bzz.subtract(no3Hlj2Jqr1).divide(bzz, NUMBER_SCALE_4, RoundingMode.HALF_UP);
+                if(divide1.compareTo(compareVal) > 0 && divide2.compareTo(compareVal) > 0)
+                    result = divide1;
+            }
+        }else if(BusinessEnum.WarningCategoryEnum.ROBOT_ECCZLSY.getCode().equals(category)){
+            BigDecimal tpRccJqr1 = tXinyiRobot1.getTpRccJqr();
+            if(!Objects.isNull(currentVal) && !Objects.isNull(tpRccJqr1)){
+                BigDecimal divide1 = bzz.subtract(currentVal).divide(bzz, NUMBER_SCALE_4, RoundingMode.HALF_UP);
+                BigDecimal divide2 = bzz.subtract(tpRccJqr1).divide(bzz, NUMBER_SCALE_4, RoundingMode.HALF_UP);
+                if(divide1.compareTo(compareVal) > 0 && divide2.compareTo(compareVal) > 0)
+                    result = divide1;
+            }
+        }else if(BusinessEnum.WarningCategoryEnum.CS_AD.getCode().equals(category)){//2025年02月25日16:23:08 合并一个指标:出水氨氮 通过计算获得
+            //计算得到对应的值
+            //计算1(1池)
+            BigDecimal no3Qyc1Jqr11 = tXinyiRobot1.getNo3Qyc1Jqr();
+            BigDecimal nh31Jqr11 = tXinyiRobot1.getNh31Jqr();
+            BigDecimal no3Hlj1Jqr11 = tXinyiRobot1.getNo3Hlj1Jqr();
+            if(Objects.isNull(no3Qyc1Jqr11))
+                no3Qyc1Jqr11 = BigDecimal.ZERO;
+            if(Objects.isNull(nh31Jqr11))
+                nh31Jqr11 = BigDecimal.ZERO;
+            if(Objects.isNull(no3Hlj1Jqr11))
+                no3Hlj1Jqr11 = BigDecimal.ZERO;
+            BigDecimal anDan11 = no3Qyc1Jqr11.add(nh31Jqr11).subtract(no3Hlj1Jqr11);
+            //计算1(2池)
+            BigDecimal no3Qyc1Jqr12 = tXinyiRobot1.getNo3Qyc2Jqr();
+            BigDecimal nh31Jqr12 = tXinyiRobot1.getNh32Jqr();
+            BigDecimal no3Hlj1Jqr12 = tXinyiRobot1.getNo3Hlj2Jqr();
+            if(Objects.isNull(no3Qyc1Jqr12))
+                no3Qyc1Jqr12 = BigDecimal.ZERO;
+            if(Objects.isNull(nh31Jqr12))
+                nh31Jqr12 = BigDecimal.ZERO;
+            if(Objects.isNull(no3Hlj1Jqr12))
+                no3Hlj1Jqr12 = BigDecimal.ZERO;
+            BigDecimal anDan12 = no3Qyc1Jqr12.add(nh31Jqr12).subtract(no3Hlj1Jqr12);
+            BigDecimal anDan1 = anDan11.add(anDan12).divide(DECIMAL_2, NUMBER_SCALE_4, RoundingMode.HALF_UP);
+            if(!Objects.isNull(currentVal) && !Objects.isNull(anDan1)){
+                BigDecimal divide1 = bzz.subtract(currentVal).divide(bzz, NUMBER_SCALE_4, RoundingMode.HALF_UP);
+                BigDecimal divide2 = bzz.subtract(anDan1).divide(bzz, NUMBER_SCALE_4, RoundingMode.HALF_UP);
+                if(divide1.compareTo(compareVal) > 0 && divide2.compareTo(compareVal) > 0)
+                    result = divide1;
+            }
+
+        }else{
+            log.error("化验室暂时还不支持的报警类型~~~~");
+        }
+        return result;
+    }
+
+
+
     /**
      *
      * 判断当前时间和上个时间段的值是否存在连续不变
@@ -3436,10 +3618,137 @@ public class AsyncTask {
 
     /**
      * 处理机器人化验数据报警
-     * @param uniqueList
+     * 2025年02月25日15:54:05  此报警不再使用
      */
-    public void handleRobotWarning(List<TXinyiRobot> uniqueList) {
-        log.info("进入了定时任务判断机器人化验库是否超标及后续逻辑");
+//    public void handleRobotWarning(List<TXinyiRobot> uniqueList) {
+//        log.info("进入了定时任务判断机器人化验库是否超标及后续逻辑");
+//        //查询配置
+//        List<TXinyiNormConfig> tXinyiNormConfigs = this.xinyiNormConfigMapper.selectTXinyiNormConfigList(null);
+//        if(CollectionUtils.isEmpty(tXinyiNormConfigs))
+//            throw new RuntimeException("未查询到配置信息");
+//        TXinyiNormConfig normConfig = tXinyiNormConfigs.get(0);
+//
+//        //查询最新的一条工业库的数据(showvalue展示使用)
+//        List<TXinyiIndustry> tXinyiIndustries = this.xinyiIndustryMapper.selectNIndustry(1);
+//        TXinyiIndustry tXinyiIndustry = CollectionUtils.isEmpty(tXinyiIndustries) ? new TXinyiIndustry() : tXinyiIndustries.get(0);
+//
+//        //处理数据
+//        for (TXinyiRobot tXinyiRobot : uniqueList) {
+//            //2024年7月11日17:27:32 化验室报警项原有总氮和总氮改为 1#好氧硝酸盐、2#好氧硝酸盐、二沉池正磷酸盐
+//            //处理总氮和总磷报警
+//            //总氮
+//            /*BigDecimal no3Hlj1Jqr = tXinyiRobot.getNo3Hlj1Jqr();
+//            BigDecimal no3Hlj2Jqr = tXinyiRobot.getNo3Hlj2Jqr();
+//            if(!Objects.isNull(no3Hlj1Jqr) && !Objects.isNull(no3Hlj2Jqr)){
+//                BigDecimal csTn = (no3Hlj1Jqr.add(no3Hlj2Jqr)).divide((new BigDecimal("2").multiply(ROBOT_HY_DIVIDE)), NUMBER_SCALE_4, RoundingMode.HALF_UP);
+//                BigDecimal cszzBzz = normConfig.getCszzBzz();
+//                BigDecimal cszzGkz = normConfig.getCszzGkz();
+//                if(!Objects.isNull(cszzBzz)){
+//                    handleXinYiWarningsRobot(cszzBzz, csTn, cszzGkz, BusinessEnum.WarningCategoryEnum.CS_ZD.getCode(), tXinyiIndustry, normConfig);
+//                }
+//            }*/
+//            //总氮的标准值和管控值
+//            BigDecimal cszzBzz = normConfig.getCszzBzz();
+//            BigDecimal cszzGkz = normConfig.getCszzGkz();
+//            //氨氮的标准值和管控值
+//            BigDecimal csadBzz = normConfig.getCsadBzz();
+//            BigDecimal csadGkz = normConfig.getCsadGkz();
+//
+//            BigDecimal jsSlq = tXinyiIndustry.getJsSlq();
+//            BigDecimal jsslSjz = normConfig.getJsslSjz();
+//
+//            //#1好氧硝酸盐
+//            BigDecimal no3Hlj1Jqr = tXinyiRobot.getNo3Hlj1Jqr();
+//            if(!Objects.isNull(no3Hlj1Jqr)){
+//                if(!Objects.isNull(cszzBzz)){
+//                    handleXinYiWarningsRobotOrigin(cszzBzz, no3Hlj1Jqr, cszzGkz, ROBOT_XSY_1.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsTn(), jsslSjz, normConfig.getJszdSjz()));
+//                }
+//            }
+//
+//            //#2好氧硝酸盐
+//            BigDecimal no3Hlj2Jqr = tXinyiRobot.getNo3Hlj2Jqr();
+//            if(!Objects.isNull(no3Hlj2Jqr)){
+//                if(!Objects.isNull(cszzBzz)){
+//                    handleXinYiWarningsRobotOrigin(cszzBzz, no3Hlj2Jqr, cszzGkz, ROBOT_XSY_2.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsTn(), jsslSjz, normConfig.getJszdSjz()));
+//                }
+//            }
+//
+//            //总磷
+//            BigDecimal tpRccJqr = tXinyiRobot.getTpRccJqr();
+//            if(!Objects.isNull(tpRccJqr)){
+//                BigDecimal csTp = tpRccJqr.divide(ROBOT_HY_DIVIDE, NUMBER_SCALE_4, RoundingMode.HALF_UP);
+//                BigDecimal cszlBzz = normConfig.getCszlBzz();
+//                BigDecimal cszlGkz = normConfig.getCszlGkz();
+//                if(!Objects.isNull(cszlBzz)){
+//                    handleXinYiWarningsRobotOrigin(cszlBzz, csTp, cszlGkz, ROBOT_ECCZLSY.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsTp(), jsslSjz, normConfig.getJszlSjz()));
+//                }
+//            }
+//
+//            //2024年7月18日10:48:15 新增报警:出水氨氮 - 连续检测报警
+//            //1池
+//            /*BigDecimal no3Qyc1Jqr = tXinyiRobot.getNo3Qyc1Jqr();
+//            BigDecimal nh31Jqr = tXinyiRobot.getNh31Jqr();
+//            //判断 增加容错
+//            if(Objects.isNull(no3Qyc1Jqr))
+//                no3Qyc1Jqr = BigDecimal.ZERO;
+//            if(Objects.isNull(nh31Jqr))
+//                nh31Jqr = BigDecimal.ZERO;
+//            if(Objects.isNull(no3Hlj1Jqr))
+//                no3Hlj1Jqr = BigDecimal.ZERO;
+//            BigDecimal anDan1 = no3Qyc1Jqr.add(nh31Jqr).subtract(no3Hlj1Jqr);
+//            if(!Objects.isNull(csadBzz)){
+//                handleXinYiWarningsRobot(csadBzz, anDan1, csadGkz, ROBOT_ANDAN_1.getCode(), tXinyiIndustry, normConfig);
+//            }
+//
+//            //2池
+//            BigDecimal no3Qyc2Jqr = tXinyiRobot.getNo3Qyc2Jqr();
+//            BigDecimal nh32Jqr = tXinyiRobot.getNh32Jqr();
+//            //判断 增加容错
+//            if(Objects.isNull(no3Qyc2Jqr))
+//                no3Qyc2Jqr = BigDecimal.ZERO;
+//            if(Objects.isNull(nh32Jqr))
+//                nh32Jqr = BigDecimal.ZERO;
+//            if(Objects.isNull(no3Hlj2Jqr))
+//                no3Hlj2Jqr = BigDecimal.ZERO;
+//            BigDecimal anDan2 = no3Qyc2Jqr.add(nh32Jqr).subtract(no3Hlj2Jqr);
+//            if(!Objects.isNull(csadBzz)){
+//                handleXinYiWarningsRobot(csadBzz, anDan2, csadGkz, ROBOT_ANDAN_2.getCode(), tXinyiIndustry, normConfig);
+//            }*/
+//
+//            BigDecimal no3Qyc1Jqr = tXinyiRobot.getNo3Qyc1Jqr();
+//            BigDecimal nh31Jqr = tXinyiRobot.getNh31Jqr();
+//            //判断 增加容错
+//            if(Objects.isNull(no3Qyc1Jqr))
+//                no3Qyc1Jqr = BigDecimal.ZERO;
+//            if(Objects.isNull(nh31Jqr))
+//                nh31Jqr = BigDecimal.ZERO;
+//            if(Objects.isNull(no3Hlj1Jqr))
+//                no3Hlj1Jqr = BigDecimal.ZERO;
+//            BigDecimal anDan1 = no3Qyc1Jqr.add(nh31Jqr).subtract(no3Hlj1Jqr);
+//
+//
+//            //2池
+//            BigDecimal no3Qyc2Jqr = tXinyiRobot.getNo3Qyc2Jqr();
+//            BigDecimal nh32Jqr = tXinyiRobot.getNh32Jqr();
+//            //判断 增加容错
+//            if(Objects.isNull(no3Qyc2Jqr))
+//                no3Qyc2Jqr = BigDecimal.ZERO;
+//            if(Objects.isNull(nh32Jqr))
+//                nh32Jqr = BigDecimal.ZERO;
+//            if(Objects.isNull(no3Hlj2Jqr))
+//                no3Hlj2Jqr = BigDecimal.ZERO;
+//            BigDecimal anDan2 = no3Qyc2Jqr.add(nh32Jqr).subtract(no3Hlj2Jqr);
+//            if(!Objects.isNull(csadBzz)){
+//                BigDecimal divide = anDan1.add(anDan2).divide(DECIMAL_2, INT_2, RoundingMode.HALF_UP);
+//                handleXinYiWarningsRobotOrigin(csadBzz, divide, csadGkz, ROBOT_CS_AD.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsNh3(), jsslSjz, normConfig.getJsadSjz()));
+//            }
+//        }
+//    }
+
+
+    public void handleRobotWarningNew(TXinyiRobot tXinyiRobot) {
+
+        log.info("进入了定时任务判断机器人化验库是否超标及后续逻辑--新的逻辑处理");
         //查询配置
         List<TXinyiNormConfig> tXinyiNormConfigs = this.xinyiNormConfigMapper.selectTXinyiNormConfigList(null);
         if(CollectionUtils.isEmpty(tXinyiNormConfigs))
@@ -3450,120 +3759,129 @@ public class AsyncTask {
         List<TXinyiIndustry> tXinyiIndustries = this.xinyiIndustryMapper.selectNIndustry(1);
         TXinyiIndustry tXinyiIndustry = CollectionUtils.isEmpty(tXinyiIndustries) ? new TXinyiIndustry() : tXinyiIndustries.get(0);
 
-        //处理数据
-        for (TXinyiRobot tXinyiRobot : uniqueList) {
-            //2024年7月11日17:27:32 化验室报警项原有总氮和总氮改为 1#好氧硝酸盐、2#好氧硝酸盐、二沉池正磷酸盐
-            //处理总氮和总磷报警
-            //总氮
-            /*BigDecimal no3Hlj1Jqr = tXinyiRobot.getNo3Hlj1Jqr();
-            BigDecimal no3Hlj2Jqr = tXinyiRobot.getNo3Hlj2Jqr();
-            if(!Objects.isNull(no3Hlj1Jqr) && !Objects.isNull(no3Hlj2Jqr)){
-                BigDecimal csTn = (no3Hlj1Jqr.add(no3Hlj2Jqr)).divide((new BigDecimal("2").multiply(ROBOT_HY_DIVIDE)), NUMBER_SCALE_4, RoundingMode.HALF_UP);
-                BigDecimal cszzBzz = normConfig.getCszzBzz();
-                BigDecimal cszzGkz = normConfig.getCszzGkz();
-                if(!Objects.isNull(cszzBzz)){
-                    handleXinYiWarningsRobot(cszzBzz, csTn, cszzGkz, BusinessEnum.WarningCategoryEnum.CS_ZD.getCode(), tXinyiIndustry, normConfig);
-                }
-            }*/
-            //总氮的标准值和管控值
-            BigDecimal cszzBzz = normConfig.getCszzBzz();
-            BigDecimal cszzGkz = normConfig.getCszzGkz();
-            //氨氮的标准值和管控值
-            BigDecimal csadBzz = normConfig.getCsadBzz();
-            BigDecimal csadGkz = normConfig.getCsadGkz();
-
-            BigDecimal jsSlq = tXinyiIndustry.getJsSlq();
-            BigDecimal jsslSjz = normConfig.getJsslSjz();
-
-            //#1好氧硝酸盐
-            BigDecimal no3Hlj1Jqr = tXinyiRobot.getNo3Hlj1Jqr();
-            if(!Objects.isNull(no3Hlj1Jqr)){
-                if(!Objects.isNull(cszzBzz)){
-                    handleXinYiWarningsRobot(cszzBzz, no3Hlj1Jqr, cszzGkz, ROBOT_XSY_1.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsTn(), jsslSjz, normConfig.getJszdSjz()));
-                }
-            }
-
-            //#2好氧硝酸盐
-            BigDecimal no3Hlj2Jqr = tXinyiRobot.getNo3Hlj2Jqr();
-            if(!Objects.isNull(no3Hlj2Jqr)){
-                if(!Objects.isNull(cszzBzz)){
-                    handleXinYiWarningsRobot(cszzBzz, no3Hlj2Jqr, cszzGkz, ROBOT_XSY_2.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsTn(), jsslSjz, normConfig.getJszdSjz()));
-                }
-            }
-
-            //总磷
-            BigDecimal tpRccJqr = tXinyiRobot.getTpRccJqr();
-            if(!Objects.isNull(tpRccJqr)){
-                BigDecimal csTp = tpRccJqr.divide(ROBOT_HY_DIVIDE, NUMBER_SCALE_4, RoundingMode.HALF_UP);
-                BigDecimal cszlBzz = normConfig.getCszlBzz();
-                BigDecimal cszlGkz = normConfig.getCszlGkz();
-                if(!Objects.isNull(cszlBzz)){
-                    handleXinYiWarningsRobot(cszlBzz, csTp, cszlGkz, ROBOT_ECCZLSY.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsTp(), jsslSjz, normConfig.getJszlSjz()));
-                }
-            }
-
-            //2024年7月18日10:48:15 新增报警:出水氨氮 - 连续检测报警
-            //1池
-            /*BigDecimal no3Qyc1Jqr = tXinyiRobot.getNo3Qyc1Jqr();
-            BigDecimal nh31Jqr = tXinyiRobot.getNh31Jqr();
-            //判断 增加容错
-            if(Objects.isNull(no3Qyc1Jqr))
-                no3Qyc1Jqr = BigDecimal.ZERO;
-            if(Objects.isNull(nh31Jqr))
-                nh31Jqr = BigDecimal.ZERO;
-            if(Objects.isNull(no3Hlj1Jqr))
-                no3Hlj1Jqr = BigDecimal.ZERO;
-            BigDecimal anDan1 = no3Qyc1Jqr.add(nh31Jqr).subtract(no3Hlj1Jqr);
-            if(!Objects.isNull(csadBzz)){
-                handleXinYiWarningsRobot(csadBzz, anDan1, csadGkz, ROBOT_ANDAN_1.getCode(), tXinyiIndustry, normConfig);
-            }
-
-            //2池
-            BigDecimal no3Qyc2Jqr = tXinyiRobot.getNo3Qyc2Jqr();
-            BigDecimal nh32Jqr = tXinyiRobot.getNh32Jqr();
-            //判断 增加容错
-            if(Objects.isNull(no3Qyc2Jqr))
-                no3Qyc2Jqr = BigDecimal.ZERO;
-            if(Objects.isNull(nh32Jqr))
-                nh32Jqr = BigDecimal.ZERO;
-            if(Objects.isNull(no3Hlj2Jqr))
-                no3Hlj2Jqr = BigDecimal.ZERO;
-            BigDecimal anDan2 = no3Qyc2Jqr.add(nh32Jqr).subtract(no3Hlj2Jqr);
-            if(!Objects.isNull(csadBzz)){
-                handleXinYiWarningsRobot(csadBzz, anDan2, csadGkz, ROBOT_ANDAN_2.getCode(), tXinyiIndustry, normConfig);
-            }*/
-
-            BigDecimal no3Qyc1Jqr = tXinyiRobot.getNo3Qyc1Jqr();
-            BigDecimal nh31Jqr = tXinyiRobot.getNh31Jqr();
-            //判断 增加容错
-            if(Objects.isNull(no3Qyc1Jqr))
-                no3Qyc1Jqr = BigDecimal.ZERO;
-            if(Objects.isNull(nh31Jqr))
-                nh31Jqr = BigDecimal.ZERO;
-            if(Objects.isNull(no3Hlj1Jqr))
-                no3Hlj1Jqr = BigDecimal.ZERO;
-            BigDecimal anDan1 = no3Qyc1Jqr.add(nh31Jqr).subtract(no3Hlj1Jqr);
-
-
-            //2池
-            BigDecimal no3Qyc2Jqr = tXinyiRobot.getNo3Qyc2Jqr();
-            BigDecimal nh32Jqr = tXinyiRobot.getNh32Jqr();
-            //判断 增加容错
-            if(Objects.isNull(no3Qyc2Jqr))
-                no3Qyc2Jqr = BigDecimal.ZERO;
-            if(Objects.isNull(nh32Jqr))
-                nh32Jqr = BigDecimal.ZERO;
-            if(Objects.isNull(no3Hlj2Jqr))
-                no3Hlj2Jqr = BigDecimal.ZERO;
-            BigDecimal anDan2 = no3Qyc2Jqr.add(nh32Jqr).subtract(no3Hlj2Jqr);
-            if(!Objects.isNull(csadBzz)){
-                BigDecimal divide = anDan1.add(anDan2).divide(DECIMAL_2, INT_2, RoundingMode.HALF_UP);
-                handleXinYiWarningsRobot(csadBzz, divide, csadGkz, ROBOT_CS_AD.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsNh3(), jsslSjz, normConfig.getJsadSjz()));
+        //新的逻辑:
+        //只要当前获取的工业库数据和当前时间
+        //如果当前时间和工业库传过来的相差不到一个小时,说明正常,工业库没挂掉:需要查询是否有挂掉的记录,有的话,关闭此报警,并触发整体的业务数据报警。
+        //如果超过1小时了,说明工业库同步数据挂掉了,这时候去查询有无此类型的报警,如果有,不做任何处理,程序结束;如果没有,新增该类型报警并结束程序。
+        Date nowDate = DateUtils.getNowDate();
+        Date warningDate = null;
+        try {
+            warningDate = DateUtils.parseDate(tXinyiRobot.getTestHour(), DateUtils.YYYYMMDDHH_TS);
+        } catch (ParseException e) {
+            log.error("将化验室的的化验时间转换date类型异常");
+            throw new RuntimeException(e.getMessage());
+        }
+        //查询工业库同步任务失败的报警正在进行的数据
+        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)){
+                closeWarning(tXinyiWarningRecords.get(0));
             }
+            //正常的业务数据报警
+            robotWarningDetail(tXinyiRobot, normConfig, tXinyiIndustry);
+        }else{
+            //查询是否有正在工业库的同步任务失败的报警,有的话,什么都不做; 没有的话,新增该类型报警
+            if(CollectionUtils.isEmpty(tXinyiWarningRecords)){
+                //插入该类型报警
+                warningRecord.setType(0);
+                String msg = BusinessEnum.WarningSymbolEnum.ROBOT_SYNC_ERROR.getMsg();
+                warningRecord.setCategory(msg);
+                warningRecord.setTime(nowDate);
+                warningRecord.setReason(msg);
+                warningRecord.setSymbol(BusinessEnum.WarningSymbolEnum.ROBOT_SYNC_ERROR.getCode());
+                warningRecord.setCreateBy(WARNING_DEFAULT_CREATE);
+                warningRecord.setCreateTime(nowDate);
+                this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecord);
+            }else{
+                log.info("化验室报警的时候,发现同步化验室同步定时任务挂掉了,并且已经有该类型报警了,不做任何处理");
+            }
+            //将其他类型的报警全部关闭
+            closeOtherWarningsBySymbol(null);
         }
+
+
+    }
+
+    private void robotWarningDetail(TXinyiRobot tXinyiRobot, TXinyiNormConfig normConfig, TXinyiIndustry tXinyiIndustry) {
+
+        //先查看数据是否有断点--单指标  断点--多指标
+
+
+        //最原始的标准值和管控制报警
+        //2025年02月25日15:58:15 需要在最原始的报警里,增加是否出现单点突变 - 异常升高 和 单点突变 - 异常偏低的报警
+        robotOriginWarning(tXinyiRobot, normConfig, tXinyiIndustry);
     }
 
+    private void robotOriginWarning(TXinyiRobot tXinyiRobot, TXinyiNormConfig normConfig, TXinyiIndustry tXinyiIndustry) {
+        //总氮的标准值和管控值
+        BigDecimal cszzBzz = normConfig.getCszzBzz();
+        BigDecimal cszzGkz = normConfig.getCszzGkz();
+        //氨氮的标准值和管控值
+        BigDecimal csadBzz = normConfig.getCsadBzz();
+        BigDecimal csadGkz = normConfig.getCsadGkz();
+
+        BigDecimal jsSlq = tXinyiIndustry.getJsSlq();
+        BigDecimal jsslSjz = normConfig.getJsslSjz();
+
+        //#1好氧硝酸盐
+        BigDecimal no3Hlj1Jqr = tXinyiRobot.getNo3Hlj1Jqr();
+        if(!Objects.isNull(no3Hlj1Jqr)){
+            if(!Objects.isNull(cszzBzz)){
+                handleXinYiWarningsRobotOrigin(cszzBzz, no3Hlj1Jqr, cszzGkz, ROBOT_XSY_1.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsTn(), jsslSjz, normConfig.getJszdSjz()));
+            }
+        }
 
+        //#2好氧硝酸盐
+        BigDecimal no3Hlj2Jqr = tXinyiRobot.getNo3Hlj2Jqr();
+        if(!Objects.isNull(no3Hlj2Jqr)){
+            if(!Objects.isNull(cszzBzz)){
+                handleXinYiWarningsRobotOrigin(cszzBzz, no3Hlj2Jqr, cszzGkz, ROBOT_XSY_2.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsTn(), jsslSjz, normConfig.getJszdSjz()));
+            }
+        }
+
+        //总磷
+        BigDecimal tpRccJqr = tXinyiRobot.getTpRccJqr();
+        if(!Objects.isNull(tpRccJqr)){
+            BigDecimal csTp = tpRccJqr.divide(ROBOT_HY_DIVIDE, NUMBER_SCALE_4, RoundingMode.HALF_UP);
+            BigDecimal cszlBzz = normConfig.getCszlBzz();
+            BigDecimal cszlGkz = normConfig.getCszlGkz();
+            if(!Objects.isNull(cszlBzz)){
+                handleXinYiWarningsRobotOrigin(cszlBzz, csTp, cszlGkz, ROBOT_ECCZLSY.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsTp(), jsslSjz, normConfig.getJszlSjz()));
+            }
+        }
+
+        //1#缺氧出-硝酸盐
+        BigDecimal no3Qyc1Jqr = tXinyiRobot.getNo3Qyc1Jqr();
+        BigDecimal nh31Jqr = tXinyiRobot.getNh31Jqr();
+        //判断 增加容错
+        if(Objects.isNull(no3Qyc1Jqr))
+            no3Qyc1Jqr = BigDecimal.ZERO;
+        if(Objects.isNull(nh31Jqr))
+            nh31Jqr = BigDecimal.ZERO;
+        if(Objects.isNull(no3Hlj1Jqr))
+            no3Hlj1Jqr = BigDecimal.ZERO;
+        BigDecimal anDan1 = no3Qyc1Jqr.add(nh31Jqr).subtract(no3Hlj1Jqr);
+
+
+        //2#缺氧出-硝酸盐
+        BigDecimal no3Qyc2Jqr = tXinyiRobot.getNo3Qyc2Jqr();
+        BigDecimal nh32Jqr = tXinyiRobot.getNh32Jqr();
+        //判断 增加容错
+        if(Objects.isNull(no3Qyc2Jqr))
+            no3Qyc2Jqr = BigDecimal.ZERO;
+        if(Objects.isNull(nh32Jqr))
+            nh32Jqr = BigDecimal.ZERO;
+        if(Objects.isNull(no3Hlj2Jqr))
+            no3Hlj2Jqr = BigDecimal.ZERO;
+        BigDecimal anDan2 = no3Qyc2Jqr.add(nh32Jqr).subtract(no3Hlj2Jqr);
+        if(!Objects.isNull(csadBzz)){
+            BigDecimal divide = anDan1.add(anDan2).divide(DECIMAL_2, INT_2, RoundingMode.HALF_UP);
+            handleXinYiWarningsRobotOrigin(csadBzz, divide, csadGkz, ROBOT_CS_AD.getCode(), tXinyiIndustry, normConfig, getCwrwfhzByDetail(jsSlq, tXinyiIndustry.getJsNh3(), jsslSjz, normConfig.getJsadSjz()));
+        }
+    }
 
 
     /**
@@ -3578,7 +3896,92 @@ public class AsyncTask {
      * @param cwrwfhz
      * @return
      */
-    private void handleXinYiWarningsRobot(BigDecimal csBzz, BigDecimal currentVal, BigDecimal csGkz, String category, TXinyiIndustry tXinyiIndustry, TXinyiNormConfig normConfig, BigDecimal cwrwfhz) {
+    private void handleXinYiWarningsRobotOrigin(BigDecimal csBzz, BigDecimal currentVal, BigDecimal csGkz, String category, TXinyiIndustry tXinyiIndustry, TXinyiNormConfig normConfig, BigDecimal cwrwfhz) {
+
+
+        Date nowDate = DateUtils.getNowDate();
+        List<TXinyiRobot> tXinyiRobots = this.xinyiRobotMapper.selectNRobot(INT_3);
+        if(CollectionUtils.isEmpty(tXinyiRobots) || tXinyiRobots.size() < 3){
+            log.error("处理连续检测报警时,获取最近的3条化验数据失败~~~~~~~");
+            return;
+        }
+        TXinyiRobot tXinyiRobot1 = tXinyiRobots.get(INDEX_1);//前一个小时
+
+        //单点突变-异常升高报警
+        TXinyiWarningRecord warningRecordYCSG = TXinyiWarningRecord.builder().type(0).category(category).symbol(BusinessEnum.WarningSymbolEnum.SJYC_YCSG.getCode()).status(0).build();
+        List<TXinyiWarningRecord> tXinyiNoChangeYCSGRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(warningRecordYCSG);
+        //是否存在异常升高的问题
+        if(!CollectionUtils.isEmpty(tXinyiRobots) && tXinyiRobots.size() == INT_3){
+            //2025年02月21日14:33:37 这里要改成当前值和上个小时比较  上个小时和上上个小时比较
+            BigDecimal exceedVal = existsRobotYCSG(currentVal, category, tXinyiRobots);
+            if(!Objects.isNull(exceedVal)){//这里不能只返回一个布尔类型的结果,因为还要获取百分比的值
+                //关闭同类型的其他报警
+                closeOtherWarningsByCategory(category, BusinessEnum.WarningSymbolEnum.SJYC_YCSG.getCode());
+                //触发报警 并且模拟大模型返回决策问答数据
+                if(CollectionUtils.isEmpty(tXinyiNoChangeYCSGRecords)){
+                    //插入该类型报警
+                    warningRecordYCSG.setType(0);
+                    warningRecordYCSG.setCategory(category);
+                    warningRecordYCSG.setTime(nowDate);
+                    warningRecordYCSG.setReason(BusinessEnum.WarningSymbolEnum.SJYC_YCSG.getMsg());
+                    warningRecordYCSG.setWaterType(BusinessEnum.WaterTypeEnum.CS.getCode());
+                    warningRecordYCSG.setSymbol(BusinessEnum.WarningSymbolEnum.SJYC_YCSG.getCode());
+                    warningRecordYCSG.setCreateBy(WARNING_DEFAULT_CREATE);
+                    warningRecordYCSG.setCreateTime(nowDate);
+                    warningRecordYCSG.setWarningVal(currentVal);
+                    this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(warningRecordYCSG);
+                    //同时处理决策 不用调用大模型,本地处理问答
+                    addChatRecordByYCSG(warningRecordYCSG, tXinyiIndustry, normConfig, category, exceedVal);
+                }else{
+                    log.info("化验室报警的时候,发现存在异常升高的报警,并且已经有该类型报警了,不做任何处理");
+                }
+                log.info("化验室报警的时候,发现存在异常升高的报警,后续同指标报警不再处理");
+                return;
+            }else{//不存在 查看历史是否有报警,有的话关闭
+                if(!CollectionUtils.isEmpty(tXinyiNoChangeYCSGRecords)){
+                    closeWarning(tXinyiNoChangeYCSGRecords.get(0));
+                }
+            }
+        }
+
+        //单点突变-异常偏低报警
+        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(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));
         TXinyiWarningRecord tXinyiWarningRecord = new TXinyiWarningRecord();
         tXinyiWarningRecord.setStatus(0);
@@ -3624,7 +4027,6 @@ public class AsyncTask {
                 log.info( "{}:现在恢复正常,历史报警数据为{}", category,JSON.toJSONString(tXinyiWarningRecords));
                 for (TXinyiWarningRecord xinyiWarningRecord : tXinyiWarningRecords) {
                     xinyiWarningRecord.setStatus(2);
-                    Date nowDate = DateUtils.getNowDate();
                     xinyiWarningRecord.setOffTime(nowDate);
                     xinyiWarningRecord.setUpdateTime(nowDate);
                     xinyiWarningRecord.setUpdateBy(WARNING_DEFAULT_CREATE);
@@ -3632,15 +4034,14 @@ public class AsyncTask {
                 }
             }
         }else{//有告警信息
-            Date nowDate = DateUtils.getNowDate();
             if(CollectionUtils.isEmpty(tXinyiWarningRecords)){//之前没有告警记录
                 //2024年7月18日16:23:11  新增逻辑,查询是否有连续升高的趋势,如果有才需要报警
-                List<TXinyiRobot> tXinyiRobots = this.xinyiRobotMapper.selectNRobot(INT_3);
+                /*List<TXinyiRobot> tXinyiRobots = this.xinyiRobotMapper.selectNRobot(INT_3);
                 if(CollectionUtils.isEmpty(tXinyiRobots) || tXinyiRobots.size() < 3){
                     log.error("处理连续检测报警时,获取最近的3条化验数据失败~~~~~~~");
                     return;
                 }
-                TXinyiRobot tXinyiRobot1 = tXinyiRobots.get(INDEX_1);//前一个小时
+                TXinyiRobot tXinyiRobot1 = tXinyiRobots.get(INDEX_1);//前一个小时*/
                 TXinyiRobot tXinyiRobot2 = tXinyiRobots.get(INDEX_2);//前两个小时
                 if(!this.judgeContinuousRobot(tXinyiRobot1, tXinyiRobot2, category)){
                     log.info("虽然当前超标了,但是没有连续升高趋势,所以不报警,当前没有报警出来的数据为{}\n,前一个小时数据为{}\n前两个小时数据为{}", JSON.toJSONString(tXinyiWarningRecord), JSON.toJSONString(tXinyiRobot1), JSON.toJSONString(tXinyiRobot2));
@@ -3828,4 +4229,6 @@ public class AsyncTask {
         //更新数据库
         this.xinyiBigTableHourMapper.updateTXinyiBigTableHour(tXinyiBigTableHour);
     }
+
+
 }

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

@@ -754,7 +754,7 @@ public class RyTask
             throw new ServiceException("获取最新的工业库的一条数据失败,无法处理工业库报警");//理论上不会
         if(PROD_ENVIRONMENT.equalsIgnoreCase(environment) || DENGBAO_ENVIRONMENT.equalsIgnoreCase(environment)
             || DEV_ENVIRONMENT.equalsIgnoreCase(environment)){
-            asyncTask.handleRobotWarning(robotList);
+            asyncTask.handleRobotWarningNew(robotList.get(0));
         }
     }