Commit ad0421a2 authored by H2T's avatar H2T

根据需求文档,相似警情结果限制两小时内的警情

parent 125ff0a6
......@@ -26,6 +26,8 @@ import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilde
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
......@@ -164,7 +166,10 @@ public class ESAlertCalledService {
boolMust.must(qbstatus);
// 如果没有搜索条件不搜索
boolean flag = true;
// ①事发地点一致,或相距不超过200米的;&& ②警情类别一致;&& ③完成状态:未完成
// 获取当前的UTC时间戳和两小时前的时间戳
Instant now = Instant.now();
Instant twoHoursBefore = now.minus(2, ChronoUnit.HOURS);
// ①事发地点一致,或相距不超过200米的;&& ②警情类别一致; && ③报警时间:距离当前时间不超过两小时的
if (!ValidationUtil.isEmpty(alertCalled.getAddress()) && !ValidationUtil.isEmpty(alertCalled.getAlarmTypeCode()) && !ValidationUtil.isEmpty(alertCalled.getAlarmTypeCode()))
{
flag = false;
......@@ -176,10 +181,14 @@ public class ESAlertCalledService {
BoolQueryBuilder temp2 = QueryBuilders.boolQuery()
.filter(QueryBuilders.matchQuery("alarmTypeCode", alertCalled.getAlarmTypeCode()));
qb0.must(temp2);
BoolQueryBuilder temp3 = QueryBuilders.boolQuery()
.filter(QueryBuilders.matchQuery("alertStatusStr", AlertStatusEnum.UNCLOSED.getCode()));
qb0.must(temp3);
// BoolQueryBuilder temp3 = QueryBuilders.boolQuery()
// .filter(QueryBuilders.matchQuery("alertStatusStr", AlertStatusEnum.UNCLOSED.getCode()));
// qb0.must(temp3);
BoolQueryBuilder temp4 = QueryBuilders.boolQuery()
.filter(QueryBuilders.rangeQuery("callTimeLong")
.gte(twoHoursBefore.toEpochMilli())
.lte(now.toEpochMilli()));
qb0.must(temp4);
boolMust.should(qb0);
}
// 报警电话一致;
......@@ -191,7 +200,7 @@ public class ESAlertCalledService {
tempQb.must(tempQb1);
boolMust.should(tempQb);
}
// 使用单位名称一致;&& ②警情类别一致;&& ③完成状态:未完成
// 使用单位名称一致;&& ②警情类别一致;&& ③报警时间:距离当前时间不超过两小时的
if (!ValidationUtil.isEmpty(alertCalled.getUseUnit()) && !ValidationUtil.isEmpty(alertCalled.getAlarmTypeCode()) ) {
flag = false;
BoolQueryBuilder qb0 = QueryBuilders.boolQuery();
......@@ -202,23 +211,33 @@ public class ESAlertCalledService {
BoolQueryBuilder temp2 = QueryBuilders.boolQuery()
.filter(QueryBuilders.termQuery("alarmTypeCode.keyword", alertCalled.getAlarmTypeCode()));
qb0.must(temp2);
BoolQueryBuilder temp3 = QueryBuilders.boolQuery()
.filter(QueryBuilders.matchQuery("alertStatusStr", AlertStatusEnum.UNCLOSED.getCode()));
qb0.must(temp3);
// BoolQueryBuilder temp3 = QueryBuilders.boolQuery()
// .filter(QueryBuilders.matchQuery("alertStatusStr", AlertStatusEnum.UNCLOSED.getCode()));
// qb0.must(temp3);
BoolQueryBuilder temp4 = QueryBuilders.boolQuery()
.filter(QueryBuilders.rangeQuery("callTimeLong")
.gte(twoHoursBefore.toEpochMilli())
.lte(now.toEpochMilli()));
qb0.must(temp4);
boolMust.should(qb0);
}
// 电梯识别码一致;&& ③完成状态:未完成
// 电梯识别码一致;&& ③报警时间:距离当前时间不超过两小时的
if (!ValidationUtil.isEmpty(alertCalled.getDeviceId())) {
flag = false;
BoolQueryBuilder qb0 = QueryBuilders.boolQuery();
BoolQueryBuilder temp = QueryBuilders.boolQuery()
.filter(QueryBuilders.termQuery("deviceId.keyword", alertCalled.getDeviceId()));
qb0.must(temp);
BoolQueryBuilder temp2 = QueryBuilders.boolQuery()
.filter(QueryBuilders.matchQuery("alertStatusStr", AlertStatusEnum.UNCLOSED.getCode()));
qb0.must(temp2);
// BoolQueryBuilder temp2 = QueryBuilders.boolQuery()
// .filter(QueryBuilders.matchQuery("alertStatusStr", AlertStatusEnum.UNCLOSED.getCode()));
// qb0.must(temp2);
BoolQueryBuilder temp3 = QueryBuilders.boolQuery()
.filter(QueryBuilders.rangeQuery("callTimeLong")
.gte(twoHoursBefore.toEpochMilli())
.lte(now.toEpochMilli()));
qb0.must(temp3);
boolMust.should(qb0);
}
boolMust.minimumShouldMatch(1);//至少满足一个
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment