wangmiaomiao 11 months ago
parent
commit
5094eb2115
1 changed files with 57 additions and 77 deletions
  1. 57 77
      slibra-quartz/src/main/java/com/slibra/quartz/task/RyTask.java

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

@@ -342,13 +342,7 @@ public class RyTask
         BigDecimal cscodBzz = normConfig.getCscodBzz();
         BigDecimal cscodGkz = normConfig.getCscodGkz();
         if(!Objects.isNull(csCod) && !Objects.isNull(cscodBzz)){
-            TXinyiWarningRecord tXinyiWarningRecord = gettXinyiWarningRecordCS(cscodBzz, csCod, cscodGkz, BusinessEnum.WarningCategoryEnum.CS_COD.getCode());
-            if(!Objects.isNull(tXinyiWarningRecord)){
-                //保存到数据库中
-                this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
-                //继续调用决策
-                this.handleDecision(tXinyiWarningRecord, tXinyiIndustry, normConfig);
-            }
+            handleXinYiWarningsCs(cscodBzz, csCod, cscodGkz, BusinessEnum.WarningCategoryEnum.CS_COD.getCode(), tXinyiIndustry, normConfig);
         }
 
         //出水总磷超标报警
@@ -356,13 +350,7 @@ public class RyTask
         BigDecimal cszlBzz = normConfig.getCszlBzz();
         BigDecimal cszlGkz = normConfig.getCszlGkz();
         if(!Objects.isNull(csTp) && !Objects.isNull(cszlBzz)){
-            TXinyiWarningRecord tXinyiWarningRecord = gettXinyiWarningRecordCS(cszlBzz, csTp, cszlGkz, BusinessEnum.WarningCategoryEnum.CS_ZL.getCode());
-            if(!Objects.isNull(tXinyiWarningRecord)){
-                //保存到数据库中
-                this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
-                //继续调用决策
-                this.handleDecision(tXinyiWarningRecord, tXinyiIndustry, normConfig);
-            }
+            handleXinYiWarningsCs(cszlBzz, csTp, cszlGkz, BusinessEnum.WarningCategoryEnum.CS_ZL.getCode(), tXinyiIndustry, normConfig);
         }
 
 
@@ -371,13 +359,7 @@ public class RyTask
         BigDecimal cszzBzz = normConfig.getCszzBzz();
         BigDecimal cszzGkz = normConfig.getCszzGkz();
         if(!Objects.isNull(csTn) && !Objects.isNull(cszzBzz)){
-            TXinyiWarningRecord tXinyiWarningRecord = gettXinyiWarningRecordCS(cszzBzz, csTn, cszzGkz, BusinessEnum.WarningCategoryEnum.CS_ZD.getCode());
-            if(!Objects.isNull(tXinyiWarningRecord)){
-                //保存到数据库中
-                this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
-                //继续调用决策
-                this.handleDecision(tXinyiWarningRecord, tXinyiIndustry, normConfig);
-            }
+            handleXinYiWarningsCs(cszzBzz, csTn, cszzGkz, BusinessEnum.WarningCategoryEnum.CS_ZD.getCode(), tXinyiIndustry, normConfig);
         }
 
         //出水氨氮超标报警
@@ -385,13 +367,7 @@ public class RyTask
         BigDecimal csadBzz = normConfig.getCsadBzz();
         BigDecimal csadGkz = normConfig.getCsadGkz();
         if(!Objects.isNull(csNh3) && !Objects.isNull(csadBzz)){
-            TXinyiWarningRecord tXinyiWarningRecord = gettXinyiWarningRecordCS(csadBzz, csNh3, csadGkz, BusinessEnum.WarningCategoryEnum.CS_AD.getCode());
-            if(!Objects.isNull(tXinyiWarningRecord)){
-                //保存到数据库中
-                this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
-                //继续调用决策
-                this.handleDecision(tXinyiWarningRecord, tXinyiIndustry, normConfig);
-            }
+            handleXinYiWarningsCs(csadBzz, csNh3, csadGkz, BusinessEnum.WarningCategoryEnum.CS_AD.getCode(), tXinyiIndustry, normConfig);
         }
 
         //出水SS超标报警
@@ -399,13 +375,7 @@ public class RyTask
         BigDecimal csSSBzz = normConfig.getCsssBzz();
         BigDecimal csssGkz = normConfig.getCsssGkz();
         if(!Objects.isNull(csSS) && !Objects.isNull(csSSBzz)){
-            TXinyiWarningRecord tXinyiWarningRecord = gettXinyiWarningRecordCS(csSSBzz, csSS, csssGkz, BusinessEnum.WarningCategoryEnum.CS_SS.getCode());
-            if(!Objects.isNull(tXinyiWarningRecord)){
-                //保存到数据库中
-                this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
-                //继续调用决策
-                this.handleDecision(tXinyiWarningRecord, tXinyiIndustry, normConfig);
-            }
+            handleXinYiWarningsCs(csSSBzz, csSS, csssGkz, BusinessEnum.WarningCategoryEnum.CS_SS.getCode(), tXinyiIndustry, normConfig);
         }
 
         //进水相关报警
@@ -413,65 +383,35 @@ public class RyTask
         BigDecimal jsTp = tXinyiIndustry.getJsTp();
         BigDecimal jszlSjz = normConfig.getJszlSjz();
         if(!Objects.isNull(jsTp) && !Objects.isNull(jszlSjz)){
-            TXinyiWarningRecord tXinyiWarningRecord = gettXinyiWarningRecordJS(jszlSjz, jsTp, BusinessEnum.WarningCategoryEnum.JS_ZL.getCode());
-            if(!Objects.isNull(tXinyiWarningRecord)){
-                //保存到数据库中
-                this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
-                //继续调用决策
-                this.handleDecision(tXinyiWarningRecord, tXinyiIndustry, normConfig);
-            }
+            handleXinYiWarningRecordJS(jszlSjz, jsTp, BusinessEnum.WarningCategoryEnum.JS_ZL.getCode(), tXinyiIndustry, normConfig);
         }
 
         //进水COD超标报警
         BigDecimal jsCod = tXinyiIndustry.getJsCod();
         BigDecimal jscodSjz = normConfig.getJscodSjz();
         if(!Objects.isNull(jsCod) && !Objects.isNull(jscodSjz)){
-            TXinyiWarningRecord tXinyiWarningRecord = gettXinyiWarningRecordJS(jscodSjz, jsCod, BusinessEnum.WarningCategoryEnum.JS_COD.getCode());
-            if(!Objects.isNull(tXinyiWarningRecord)){
-                //保存到数据库中
-                this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
-                //继续调用决策
-                this.handleDecision(tXinyiWarningRecord, tXinyiIndustry, normConfig);
-            }
+            handleXinYiWarningRecordJS(jscodSjz, jsCod, BusinessEnum.WarningCategoryEnum.JS_COD.getCode(), tXinyiIndustry, normConfig);
         }
 
         //进水总氮超标报警
         BigDecimal jsTn = tXinyiIndustry.getJsTn();
         BigDecimal jszdSjz = normConfig.getJszdSjz();
         if(!Objects.isNull(jsTn) && !Objects.isNull(jszdSjz)){
-            TXinyiWarningRecord tXinyiWarningRecord = gettXinyiWarningRecordJS(jszdSjz, jsTn, BusinessEnum.WarningCategoryEnum.JS_ZD.getCode());
-            if(!Objects.isNull(tXinyiWarningRecord)){
-                //保存到数据库中
-                this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
-                //继续调用决策
-                this.handleDecision(tXinyiWarningRecord, tXinyiIndustry, normConfig);
-            }
+            handleXinYiWarningRecordJS(jszdSjz, jsTn, BusinessEnum.WarningCategoryEnum.JS_ZD.getCode(), tXinyiIndustry, normConfig);
         }
 
         //进水氨氮超标报警
         BigDecimal jsNh3 = tXinyiIndustry.getJsNh3();
         BigDecimal jsadSjz = normConfig.getJsadSjz();
         if(!Objects.isNull(jsNh3) && !Objects.isNull(jsadSjz)){
-            TXinyiWarningRecord tXinyiWarningRecord = gettXinyiWarningRecordJS(jsadSjz, jsNh3, BusinessEnum.WarningCategoryEnum.JS_AD.getCode());
-            if(!Objects.isNull(tXinyiWarningRecord)){
-                //保存到数据库中
-                this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
-                //继续调用决策
-                this.handleDecision(tXinyiWarningRecord, tXinyiIndustry, normConfig);
-            }
+            handleXinYiWarningRecordJS(jsadSjz, jsNh3, BusinessEnum.WarningCategoryEnum.JS_AD.getCode(), tXinyiIndustry, normConfig);
         }
 
         //进水SS超标报警
         BigDecimal jsSS = tXinyiIndustry.getJsSs();
         BigDecimal jsSSSjz = normConfig.getJsssSjz();
         if(!Objects.isNull(jsSS) && !Objects.isNull(jsSSSjz)){
-            TXinyiWarningRecord tXinyiWarningRecord = gettXinyiWarningRecordJS(jsSSSjz, jsSS, BusinessEnum.WarningCategoryEnum.JS_SS.getCode());
-            if(!Objects.isNull(tXinyiWarningRecord)){
-                //保存到数据库中
-                this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
-                //继续调用决策
-                this.handleDecision(tXinyiWarningRecord, tXinyiIndustry, normConfig);
-            }
+            handleXinYiWarningRecordJS(jsSSSjz, jsSS, BusinessEnum.WarningCategoryEnum.JS_SS.getCode(), tXinyiIndustry, normConfig);
         }
         
     }
@@ -550,7 +490,7 @@ public class RyTask
     private String buildShowValue(TXinyiWarningRecord tXinyiWarningRecord, TXinyiIndustry tXinyiIndustry, TXinyiNormConfig normConfig) {
         JSONObject result = new JSONObject();
         JSONObject basic = new JSONObject();
-        Long status = tXinyiWarningRecord.getStatus();
+        Integer status = tXinyiWarningRecord.getStatus();
         Date warningTime = tXinyiWarningRecord.getTime();
         int count = DateUtils.differentHoursByMillisecond(warningTime, DateUtils.getNowDate()) + 1;
         basic.put(tXinyiWarningRecord.getReason(), tXinyiWarningRecord.getReason());
@@ -644,13 +584,16 @@ public class RyTask
 
     /**
      * 通过输入的值 生成对应类型的报警对象(出水)
+     *
      * @param csBzz
      * @param currentVal
      * @param csGkz
      * @param category
+     * @param tXinyiIndustry
+     * @param normConfig
      * @return
      */
-    private TXinyiWarningRecord gettXinyiWarningRecordCS(BigDecimal csBzz, BigDecimal currentVal, BigDecimal csGkz, String category) {
+    private void handleXinYiWarningsCs(BigDecimal csBzz, BigDecimal currentVal, BigDecimal csGkz, String category, TXinyiIndustry tXinyiIndustry, TXinyiNormConfig normConfig) {
         BigDecimal multiply = csBzz.multiply(new BigDecimal(MyConstants.SCALE_VALUE));
         TXinyiWarningRecord tXinyiWarningRecord = new TXinyiWarningRecord();
         /*String category = BusinessEnum.WarningCategoryEnum.CS_AD.getCode();*/
@@ -674,8 +617,10 @@ public class RyTask
             tXinyiWarningRecord.setLevel(WARNING_LEVEL_THREE);
         }else{
             tXinyiWarningRecord = null;//这种的无需处理
-            //当前状态正常 需要查询历史有无正在报警的数据,如果有,将报警状态改完2(系统自动关闭)
-            List<TXinyiWarningRecord> tXinyiWarningRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(TXinyiWarningRecord.builder().delFlag(0).type(0).category(category).status(0).build());
+        }
+        //当前状态正常 需要查询历史有无正在报警的数据,如果有,将报警状态改完2(系统自动关闭)
+        List<TXinyiWarningRecord> tXinyiWarningRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(TXinyiWarningRecord.builder().delFlag(0).type(0).category(category).status(0).build());
+        if(Objects.isNull(tXinyiWarningRecord)){//数据正常,无告警信息
             if(!CollectionUtils.isEmpty(tXinyiWarningRecords)){
                 log.info( "{}:现在恢复正常,历史报警数据为{}", category,JSON.toJSONString(tXinyiWarningRecords));
                 for (TXinyiWarningRecord xinyiWarningRecord : tXinyiWarningRecords) {
@@ -687,19 +632,31 @@ public class RyTask
                     this.xinyiWarningRecordMapper.updateTXinyiWarningRecord(xinyiWarningRecord);
                 }
             }
+        }else{//有告警信息
+            if(CollectionUtils.isEmpty(tXinyiWarningRecords)){//之前没有告警记录
+                //保存到数据库中
+                this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
+                //继续调用决策
+                this.handleDecision(tXinyiWarningRecord, tXinyiIndustry, normConfig);
+            }else{
+                log.info("{}:之前已经有过告警记录了,且还是继续报警,无需重复处理", category);
+            }
         }
-        return tXinyiWarningRecord;
+
     }
 
 
     /**
      * 通过输入的值 生成对应类型的报警对象(进水)
+     *
      * @param jsBzz
      * @param currentVal
      * @param category
+     * @param tXinyiIndustry
+     * @param normConfig
      * @return
      */
-    private TXinyiWarningRecord gettXinyiWarningRecordJS(BigDecimal jsBzz, BigDecimal currentVal, String category) {
+    private void handleXinYiWarningRecordJS(BigDecimal jsBzz, BigDecimal currentVal, String category, TXinyiIndustry tXinyiIndustry, TXinyiNormConfig normConfig) {
         BigDecimal multiply = jsBzz.multiply(new BigDecimal(MyConstants.SCALE_VALUE));
         TXinyiWarningRecord tXinyiWarningRecord = new TXinyiWarningRecord();
         /*String category = BusinessEnum.WarningCategoryEnum.CS_AD.getCode();*/
@@ -725,7 +682,30 @@ public class RyTask
             tXinyiWarningRecord.setReason(category + CHAOGUANKONG_WARNING);
             tXinyiWarningRecord.setLevel(WARNING_LEVEL_THREE);
         }*/
-        return tXinyiWarningRecord;
+        //当前状态正常 需要查询历史有无正在报警的数据,如果有,将报警状态改完2(系统自动关闭)
+        List<TXinyiWarningRecord> tXinyiWarningRecords = this.xinyiWarningRecordMapper.selectTXinyiWarningRecordList(TXinyiWarningRecord.builder().delFlag(0).type(0).category(category).status(0).build());
+        if(Objects.isNull(tXinyiWarningRecord)){//数据正常,无告警信息
+            if(!CollectionUtils.isEmpty(tXinyiWarningRecords)){
+                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);
+                    this.xinyiWarningRecordMapper.updateTXinyiWarningRecord(xinyiWarningRecord);
+                }
+            }
+        }else{//有告警信息
+            if(CollectionUtils.isEmpty(tXinyiWarningRecords)){//之前没有告警记录
+                //保存到数据库中
+                this.xinyiWarningRecordMapper.insertTXinyiWarningRecord(tXinyiWarningRecord);
+                //继续调用决策
+                this.handleDecision(tXinyiWarningRecord, tXinyiIndustry, normConfig);
+            }else{
+                log.info("{}:之前已经有过告警记录了,且还是继续报警,无需重复处理", category);
+            }
+        }
     }