Browse Source

化验室报警 和 工业库报警 都单独提出来一个新的定时任务 和原来的获取数据的逻辑区分开

王苗苗 1 month ago
parent
commit
b060eefbe3
1 changed files with 44 additions and 3 deletions
  1. 44 3
      slibra-quartz/src/main/java/com/slibra/quartz/task/RyTask.java

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

@@ -25,6 +25,7 @@ import com.slibra.common.constant.MyConstants;
 import com.slibra.common.core.domain.TXinyiDaily;
 import com.slibra.common.enums.BusinessEnum;
 import com.slibra.common.enums.DataSourceType;
+import com.slibra.common.exception.ServiceException;
 import com.slibra.common.utils.DateUtils;
 import com.slibra.common.utils.LocalDateTimeUtil;
 import com.slibra.common.utils.uuid.IdUtils;
@@ -415,7 +416,8 @@ public class RyTask
             //判断是否触发告警、接触告警、保存决策等等
 //            this.handleWarning(industry);
             //2024年5月30日18:29:20  改为异步处理
-            asyncTask.handleWarning(industry, normConfig, xinyiCalculate);
+            //2025年02月13日15:08:54 同步数据的逻辑,不再保留报警,报警单独整理一个定时任务
+//            asyncTask.handleWarning(industry, normConfig, xinyiCalculate);
         });
 
         //执行完成 测试执行时间
@@ -425,6 +427,31 @@ public class RyTask
     }
 
 
+    /***
+     *
+     * 工业库的报警:
+     * 2025年02月13日15:10:55 不再处理工业库数据的时候报警,单独一个定时任务处理报警
+     *
+     */
+    public void industryWarning(){
+        log.info("进入了新的单独的工业库的报警逻辑处理~~~~&&&");
+        //获取配置表
+        List<TXinyiNormConfig> tXinyiNormConfigs = this.xinyiNormConfigMapper.selectTXinyiNormConfigList(null);
+        if(CollectionUtils.isEmpty(tXinyiNormConfigs))
+            throw new RuntimeException("未查询到配置信息");
+        TXinyiNormConfig normConfig = tXinyiNormConfigs.get(0);
+        //获取最新的一条工业库数据
+        TXinyiIndustry industry = this.xinyiIndustryMapper.selectTXinyiIndustryNewest();
+        if(Objects.isNull(industry))
+            throw new ServiceException("未查询到最新的工业库数据");//理论上不会
+        //获取同时刻的计算数据
+        List<TXinyiCalculate> tXinyiCalculates = this.xinyiCalculateMapper.selectTXinyiCalculateList(TXinyiCalculate.builder().testHour(industry.getTestHour()).build());
+        if(CollectionUtils.isEmpty(tXinyiCalculates))
+            throw new ServiceException("未查询到最新的工业库对应的计算数据");//理论上不会
+        //todo 特殊情况:工业库一直挂掉了,一直是同一条报警。需要增加一个记录,处理报警规则: 普通的不再报警、但是仪表故障相关的需要报出来  后续完善
+        asyncTask.handleWarning(industry, normConfig, tXinyiCalculates.get(0));
+    }
+
 
 
 
@@ -691,15 +718,29 @@ public class RyTask
                         log.info("{}已经吧保存过了,无需重复保存***&&&···", testHour);
                 }
                 //2024年08月09日14:26:29  为了节省费用,测试环境关闭报警并增加手动触发报警操作
-                if(PROD_ENVIRONMENT.equalsIgnoreCase(environment) || DENGBAO_ENVIRONMENT.equalsIgnoreCase(environment)){
+                //2025年02月13日15:29:34 报警单独改成一个定时任务
+                /*if(PROD_ENVIRONMENT.equalsIgnoreCase(environment) || DENGBAO_ENVIRONMENT.equalsIgnoreCase(environment)){
                     asyncTask.handleRobotWarning(uniqueList);
-                }
+                }*/
             }
         }
 
     }
 
 
+    public void robotWarning(){
+        log.info("进入了单独的化验室数据报警处理^^^***");
+        //获取最新的一条化验室数据
+        List<TXinyiRobot> robotList = this.xinyiRobotMapper.selectNRobot(1);
+        if(CollectionUtils.isEmpty(robotList))
+            throw new ServiceException("获取最新的工业库的一条数据失败,无法处理工业库报警");//理论上不会
+        if(PROD_ENVIRONMENT.equalsIgnoreCase(environment) || DENGBAO_ENVIRONMENT.equalsIgnoreCase(environment)
+            || DEV_ENVIRONMENT.equalsIgnoreCase(environment)){
+            asyncTask.handleRobotWarning(robotList);
+        }
+    }
+
+
     /**
      *
      * 定时生成每日简报数据