Przeglądaj źródła

分区的日/月分析支持事件最大上限数

andyliu 1 tydzień temu
rodzic
commit
5f81cecb20

+ 29 - 0
src/main/java/com/shkpr/service/warncore/bizhandler/ZoneDataWarnHandler.java

@@ -104,6 +104,18 @@ public class ZoneDataWarnHandler {
             thisStepTempRes.setQueryBeginUTC(queryBeginUTC);
             thisStepTempRes.setQueryEndUTC(queryEndUTC);
             thisStepTempRes.setConditionMinUTC(conditionMinUTC);
+            if (thisStepTempRes.getLastEventTime() > 0L){//月分析时,比较每年的事件数上限数
+                int lastEventTmInYear = TimeTool.getYearIndex(thisStepTempRes.getLastEventTime());
+                if (lastEventTmInYear == preMonthInYear){
+                    if (planDetail.getCycleTriggerUpperTimes() > 0
+                            && thisStepTempRes.getCycleTriggerTimes() >= planDetail.getCycleTriggerUpperTimes()){//触发事件达到最大个数
+                        step = "Event arrive at max limit,stop analysis for today.";
+                        code = ResponseCode.RESULT_BAD;
+                        break;
+                    }
+                }else
+                    thisStepTempRes.setCycleTriggerTimes(0);
+            }
 
             if (!StringUtils.isEmpty(planDetail.getLastEventId())){
                 int action = CommToolHandler.checkOrdWarnEventAction(planDetail.getLastEventId());
@@ -191,6 +203,18 @@ public class ZoneDataWarnHandler {
             thisStepTempRes.setQueryBeginUTC(queryBeginUTC);
             thisStepTempRes.setQueryEndUTC(queryEndUTC);
             thisStepTempRes.setConditionMinUTC(conditionMinUTC);
+            if (thisStepTempRes.getLastEventTime() > 0L){//月分析时,比较每月的事件数上限数
+                int lastEventTmInMonth = TimeTool.getMonthIndex(thisStepTempRes.getLastEventTime());
+                if (lastEventTmInMonth == preDayInMonth){
+                    if (planDetail.getCycleTriggerUpperTimes() > 0
+                            && thisStepTempRes.getCycleTriggerTimes() >= planDetail.getCycleTriggerUpperTimes()){//触发事件达到最大个数
+                        step = "Event arrive at max limit,stop analysis for today.";
+                        code = ResponseCode.RESULT_BAD;
+                        break;
+                    }
+                }else
+                    thisStepTempRes.setCycleTriggerTimes(0);
+            }
 
             if (!StringUtils.isEmpty(planDetail.getLastEventId())){
                 int action = CommToolHandler.checkOrdWarnEventAction(planDetail.getLastEventId());
@@ -294,6 +318,7 @@ public class ZoneDataWarnHandler {
                         thisTempStep.setLastEventId("新事件ID");
                         thisTempStep.setLastEventTime(curTime);
                         thisTempStep.setLastEventAction(1);
+                        thisTempStep.setCycleTriggerTimes(thisTempStep.getCycleTriggerTimes()+1);
                     }
                     continue;
                 }//上一次匹配成功了进入下一步
@@ -311,6 +336,7 @@ public class ZoneDataWarnHandler {
                         thisTempStep.setLastEventId("新事件ID");
                         thisTempStep.setLastEventTime(curTime);
                         thisTempStep.setLastEventAction(1);
+                        thisTempStep.setCycleTriggerTimes(thisTempStep.getCycleTriggerTimes()+1);
                     }else {
                         thisTempStep.setLastEventId("");
                         thisTempStep.setLastEventTime(0L);
@@ -335,6 +361,7 @@ public class ZoneDataWarnHandler {
                                 thisTempStep.setLastEventId("新事件ID");
                                 thisTempStep.setLastEventTime(curTime);
                                 thisTempStep.setLastEventAction(1);
+                                thisTempStep.setCycleTriggerTimes(thisTempStep.getCycleTriggerTimes()+1);
                             }
                         }
                     }else {//触发一个新的事件
@@ -343,6 +370,7 @@ public class ZoneDataWarnHandler {
                         thisTempStep.setLastEventId("新事件ID");
                         thisTempStep.setLastEventTime(curTime);
                         thisTempStep.setLastEventAction(1);
+                        thisTempStep.setCycleTriggerTimes(thisTempStep.getCycleTriggerTimes()+1);
                         //[!!!]do not change the FirstMatchSampleTime[!!!]
                     }
                 }else {//之前有预警事件
@@ -354,6 +382,7 @@ public class ZoneDataWarnHandler {
                             thisTempStep.setLastEventId("新事件ID");
                             thisTempStep.setLastEventTime(curTime);
                             thisTempStep.setLastEventAction(1);
+                            thisTempStep.setCycleTriggerTimes(thisTempStep.getCycleTriggerTimes()+1);
                         }else {
                             thisTempStep.setLastEventId("");
                             thisTempStep.setLastEventTime(0L);

+ 1 - 0
src/main/java/com/shkpr/service/warncore/dto/OrdWarnPlanTempStep.java

@@ -54,6 +54,7 @@ public class OrdWarnPlanTempStep {
         lastCompareSampleExplain = "";
         lastEventTime = 0L;
         lastEventId = "";
+        lastEventAction = 1;
     }
 
     public Map<String, Object> genUpdatePlan(){