|
@@ -207,7 +207,7 @@ public class SiteDataHandler {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
for (SiteSampleGroupItem sampleItem:siteSampleData.getData().get(0).getRecords()){
|
|
for (SiteSampleGroupItem sampleItem:siteSampleData.getData().get(0).getRecords()){
|
|
|
- if (sampleItem.getTime() <= 0L)
|
|
|
|
|
|
|
+ if (sampleItem.getTime() <= 0L || CommTool.listSize(sampleItem.getFields()) <= 0)
|
|
|
continue;
|
|
continue;
|
|
|
if (planDetail.getDayTriggerUpperTimes() > 0
|
|
if (planDetail.getDayTriggerUpperTimes() > 0
|
|
|
&& thisTempStep.getDayTriggerTimes() >= planDetail.getDayTriggerUpperTimes()){
|
|
&& thisTempStep.getDayTriggerTimes() >= planDetail.getDayTriggerUpperTimes()){
|
|
@@ -228,18 +228,18 @@ public class SiteDataHandler {
|
|
|
if (findRule == null)
|
|
if (findRule == null)
|
|
|
continue;
|
|
continue;
|
|
|
for (OrdWarnRuleCondition condition:findRule.getConditions()){
|
|
for (OrdWarnRuleCondition condition:findRule.getConditions()){
|
|
|
- String needMatchValue = "";
|
|
|
|
|
|
|
+ String originValue = "";
|
|
|
for (KeyValue kv:sampleItem.getFields()){
|
|
for (KeyValue kv:sampleItem.getFields()){
|
|
|
if (condition.getTag().equals(kv.getKey())){
|
|
if (condition.getTag().equals(kv.getKey())){
|
|
|
- needMatchValue = kv.getValue();
|
|
|
|
|
|
|
+ originValue = kv.getValue();
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- if (StringUtils.isEmpty(needMatchValue))
|
|
|
|
|
|
|
+ if (StringUtils.isEmpty(originValue))
|
|
|
matched = matched || false;
|
|
matched = matched || false;
|
|
|
else {
|
|
else {
|
|
|
try {
|
|
try {
|
|
|
- int nRes = CommTool.compareFloat(needMatchValue, condition.getThreshold());
|
|
|
|
|
|
|
+ int nRes = CommTool.compareFloat(originValue, condition.getThreshold());
|
|
|
if (nRes == 0){
|
|
if (nRes == 0){
|
|
|
if ("!=".equals(condition.getMethod())){
|
|
if ("!=".equals(condition.getMethod())){
|
|
|
matched = (matched || false);
|
|
matched = (matched || false);
|
|
@@ -262,9 +262,15 @@ public class SiteDataHandler {
|
|
|
}else
|
|
}else
|
|
|
matched = (matched || false);
|
|
matched = (matched || false);
|
|
|
}
|
|
}
|
|
|
- }catch (Exception e){}
|
|
|
|
|
|
|
+ }catch (Exception e){
|
|
|
|
|
+ step = String.format("Compare Value Exception Error");
|
|
|
|
|
+ code = ResponseCode.RESULT_BAD;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ if (code == ResponseCode.RESULT_BAD){
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
if (!matched){//本次没有匹配成功
|
|
if (!matched){//本次没有匹配成功
|
|
|
thisTempStep.setLastCompareSampleTime(sampleItem.getTime());
|
|
thisTempStep.setLastCompareSampleTime(sampleItem.getTime());
|
|
|
thisTempStep.setLastCompareSampleResult(0);
|
|
thisTempStep.setLastCompareSampleResult(0);
|
|
@@ -272,39 +278,37 @@ public class SiteDataHandler {
|
|
|
thisTempStep.setLastEventId("");
|
|
thisTempStep.setLastEventId("");
|
|
|
thisTempStep.setLastEventTime(0L);
|
|
thisTempStep.setLastEventTime(0L);
|
|
|
continue;
|
|
continue;
|
|
|
- }
|
|
|
|
|
|
|
+ }//本次匹配成功进入下一步
|
|
|
|
|
|
|
|
if (thisTempStep.getLastCompareSampleResult() <= 0){//上一次没有匹配成功
|
|
if (thisTempStep.getLastCompareSampleResult() <= 0){//上一次没有匹配成功
|
|
|
thisTempStep.setLastCompareSampleTime(sampleItem.getTime());
|
|
thisTempStep.setLastCompareSampleTime(sampleItem.getTime());
|
|
|
thisTempStep.setLastCompareSampleResult(1);
|
|
thisTempStep.setLastCompareSampleResult(1);
|
|
|
thisTempStep.setFirstMatchSampleTime(sampleItem.getTime());
|
|
thisTempStep.setFirstMatchSampleTime(sampleItem.getTime());
|
|
|
continue;
|
|
continue;
|
|
|
- }
|
|
|
|
|
|
|
+ }//上一次匹配成功了进入下一步
|
|
|
|
|
|
|
|
- long diffMatch = sampleItem.getTime()-thisTempStep.getLastCompareSampleTime();//两个最近匹配样本之间的时间差(单位:毫秒)
|
|
|
|
|
- if (diffMatch > planDetail.getThresholdPeriod()*TimeTool.MS_ONE_MIN){//两个最近匹配样本间缺失的数据太多、或跨了天、或跨了时段,可重新计数
|
|
|
|
|
|
|
+ long diffMatch = sampleItem.getTime()-thisTempStep.getLastCompareSampleTime();//两个最近匹配样本之间的采集时间差(单位:毫秒)
|
|
|
|
|
+ if (diffMatch > planDetail.getThresholdPeriod()*TimeTool.MS_ONE_MIN){//两个最近匹配样本间缺失的数据太多、或跨了天、或跨了时段,可认为重新计数
|
|
|
thisTempStep.setLastCompareSampleTime(sampleItem.getTime());
|
|
thisTempStep.setLastCompareSampleTime(sampleItem.getTime());
|
|
|
thisTempStep.setLastCompareSampleResult(1);
|
|
thisTempStep.setLastCompareSampleResult(1);
|
|
|
thisTempStep.setFirstMatchSampleTime(sampleItem.getTime());
|
|
thisTempStep.setFirstMatchSampleTime(sampleItem.getTime());
|
|
|
thisTempStep.setLastEventId("");
|
|
thisTempStep.setLastEventId("");
|
|
|
thisTempStep.setLastEventTime(0L);
|
|
thisTempStep.setLastEventTime(0L);
|
|
|
continue;
|
|
continue;
|
|
|
- }else {
|
|
|
|
|
- //两个最近匹配样本间隔很近,可认为是持续匹配
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ }//两个最近匹配样本间隔很近,可认为是持续匹配,则进入下一步
|
|
|
|
|
|
|
|
- if (thisTempStep.getLastCompareSampleTime() < thisTempStep.getConditionMinUTC()){//上一个匹配样本是昨天的,可重新计数
|
|
|
|
|
|
|
+ if (thisTempStep.getLastCompareSampleTime() < thisTempStep.getConditionMinUTC()){//上一个匹配样本是非当前天的,可认为重新计数
|
|
|
thisTempStep.setLastCompareSampleTime(sampleItem.getTime());
|
|
thisTempStep.setLastCompareSampleTime(sampleItem.getTime());
|
|
|
thisTempStep.setLastCompareSampleResult(1);
|
|
thisTempStep.setLastCompareSampleResult(1);
|
|
|
thisTempStep.setFirstMatchSampleTime(sampleItem.getTime());
|
|
thisTempStep.setFirstMatchSampleTime(sampleItem.getTime());
|
|
|
thisTempStep.setLastEventId("");
|
|
thisTempStep.setLastEventId("");
|
|
|
thisTempStep.setLastEventTime(0L);
|
|
thisTempStep.setLastEventTime(0L);
|
|
|
continue;
|
|
continue;
|
|
|
- }
|
|
|
|
|
|
|
+ }//上一个匹配样本是当天的,则进入下一步
|
|
|
|
|
|
|
|
long matchLen = (thisTempStep.getFirstMatchSampleTime()<=0)?0:(sampleItem.getTime()-thisTempStep.getFirstMatchSampleTime());//样本匹配的持续时长(单位:毫秒)
|
|
long matchLen = (thisTempStep.getFirstMatchSampleTime()<=0)?0:(sampleItem.getTime()-thisTempStep.getFirstMatchSampleTime());//样本匹配的持续时长(单位:毫秒)
|
|
|
if (StringUtils.isEmpty(thisTempStep.getLastEventId())){//之前无预警事件
|
|
if (StringUtils.isEmpty(thisTempStep.getLastEventId())){//之前无预警事件
|
|
|
- if (matchLen < planDetail.getThresholdPeriod()*TimeTool.MS_ONE_MIN){//还有持续等待
|
|
|
|
|
|
|
+ if (matchLen < planDetail.getThresholdPeriod()*TimeTool.MS_ONE_MIN){//还得持续等待,达不到触发事件的累计时长
|
|
|
thisTempStep.setLastCompareSampleTime(sampleItem.getTime());
|
|
thisTempStep.setLastCompareSampleTime(sampleItem.getTime());
|
|
|
thisTempStep.setLastCompareSampleResult(1);
|
|
thisTempStep.setLastCompareSampleResult(1);
|
|
|
if (thisTempStep.getFirstMatchSampleTime() <= 0)
|
|
if (thisTempStep.getFirstMatchSampleTime() <= 0)
|