Commit ebf0f365 authored by kongfm's avatar kongfm

修复相似警情查找 及 警情任务结束mqtt 消息

parent 26bb3fad
......@@ -63,4 +63,7 @@ public class AlertPaperInfoDto {
@ApiModelProperty(value = "电梯设备编码")
private String elevatorCode;
@ApiModelProperty(value = "警情结束时间")
private Date finishTime;
}
......@@ -24,6 +24,7 @@ import com.yeejoin.amos.boot.module.tzs.api.dto.AlertPaperInfoDto;
import com.yeejoin.amos.boot.module.tzs.api.dto.ESAlertCalledDto;
import com.yeejoin.amos.boot.module.tzs.api.dto.ESAlertCalledRequestDto;
import com.yeejoin.amos.boot.module.tzs.api.entity.AlertCalled;
import com.yeejoin.amos.boot.module.tzs.api.entity.DispatchPaper;
import com.yeejoin.amos.boot.module.tzs.api.entity.Elevator;
import com.yeejoin.amos.boot.module.tzs.api.entity.WechatRelation;
import com.yeejoin.amos.boot.module.tzs.api.enums.AlertStageEnums;
......@@ -195,7 +196,10 @@ public class AlertCalledController extends BaseController {
alertCalledDto.setUseStatus(elevator.getUseStatus());
alertCalledDto.setUseSiteCategory(elevator.getUseSiteCategory());
alertCalledDto.setAlarmType(AlertStageEnums.getEnumById(alertCalledDto.getAlarmTypeCode()).getValue());
alertCalledDto.setEquipmentClassification("电梯");
alertCalledDto.setEquipmentClassificationCode("3000");
alertCalledDto.setCity(elevator.getCity());
alertCalledDto.setDistrict(elevator.getDistrict());
AlertCalledDto alertCalledDtoReturn = iAlertCalledService.createAlertCalled(alertCalledDto);
return ResponseHelper.buildResponse(alertCalledDtoReturn);
}
......@@ -232,6 +236,11 @@ public class AlertCalledController extends BaseController {
alertPaperInfoDto.setAlertStatus(alertCalled.getAlertStage());
alertPaperInfoDto.setElevatorId(elevator.getSequenceNbr() +"");
alertPaperInfoDto.setElevatorCode(elevator.getRegisterCode());
DispatchPaper paper = dispatchPaperServiceImpl.getOne(new LambdaQueryWrapper<DispatchPaper>().eq(DispatchPaper::getIsDelete,false).eq(DispatchPaper::getAlertId,alertId));
if(paper != null) {
alertPaperInfoDto.setFinishTime(paper.getFeedbackFinishTime());
}
return ResponseHelper.buildResponse(alertPaperInfoDto);
}
......
......@@ -387,7 +387,8 @@ public class AlertCalledServiceImpl extends BaseService<AlertCalledDto,AlertCall
// 警情基本信息
AlertCalled alertCalled = BeanDtoVoUtils.convert(alertCalledObjsDto.getAlertCalledDto(),AlertCalled.class);
alertCalled.setEquipmentClassification("电梯");
alertCalled.setEquipmentClassificationCode("3000");
alertCalled.setCallTime(DateUtils.longStr2Date(alertCalled.getCallTimeStr()));
// 判断是否归并警情
......@@ -425,6 +426,8 @@ public class AlertCalledServiceImpl extends BaseService<AlertCalledDto,AlertCall
queryWrapper.eq(Elevator::getRescueCode,alertCalled.getDeviceId());
Elevator elevator = iElevatorService.getOne(queryWrapper);
alertCalled.setEquipmentId(elevator.getSequenceNbr());
alertCalled.setCity(elevator.getCity());
alertCalled.setDistrict(elevator.getDistrict());
this.save(alertCalled);
// 动态表单
......
......@@ -116,6 +116,7 @@ public class ESAlertCalledService {
esAlertCalled.setAlertStatus(alertCalled.getAlertStatus());
esAlertCalled.setEmergencyCall(alertCalled.getEmergencyCall());
esAlertCalled.setDeviceId(alertCalled.getDeviceId());
esAlertCalled.setUseUnit(alertCalled.getUseUnit());
if (alertCalled.getAlertStatus())
{
esAlertCalled.setAlertStatusStr(AlertStatusEnum.CLOSED.getCode());
......@@ -141,13 +142,11 @@ public class ESAlertCalledService {
public Page<ESAlertCalledDto> queryByKeys(ESAlertCalledRequestDto alertCalledVo, int current, int size)
{
Page<ESAlertCalledDto> result = new Page<ESAlertCalledDto>(current, size);
String[] alertStatus = alertCalledVo.getAlertStatus();
if (ValidationUtil.isEmpty(alertStatus))
{
return result;
}
AlertCalled alertCalled = BeanDtoVoUtils.convert(alertCalledVo.getAlertCalledDto(),AlertCalled.class);
if (ValidationUtil.isEmpty(alertCalled))
{
......@@ -157,54 +156,92 @@ public class ESAlertCalledService {
* 通用匹配规则,条件构建
*/
BoolQueryBuilder boolMust = QueryBuilders.boolQuery();
//警情状态
BoolQueryBuilder qb0 = QueryBuilders.boolQuery();
for (String status : alertStatus)
//警情状态
BoolQueryBuilder qbstatus = QueryBuilders.boolQuery();
for (String status : alertStatus)
{
AlertStatusEnum alertStatusEnum = AlertStatusEnum.getEnum(status);
if (!ValidationUtil.isEmpty(alertStatusEnum))
AlertStatusEnum alertStatusEnum = AlertStatusEnum.getEnum(status);
if (!ValidationUtil.isEmpty(alertStatusEnum))
{
qb0.should(QueryBuilders.termQuery("alertStatusStr.keyword", alertStatusEnum.getCode()));
qbstatus.should(QueryBuilders.termQuery("alertStatusStr.keyword", alertStatusEnum.getCode()));
}
}
boolMust.must(qb0);
//接警时间,距离当前时间不超过两个小时的
long currentTime = System.currentTimeMillis() ;
currentTime = currentTime - 120*60*1000;
BoolQueryBuilder qb1 = QueryBuilders.boolQuery()
.filter(QueryBuilders.rangeQuery("callTimeLong").gte(currentTime));
boolMust.must(qb1);
//报警电话一致
if (!ValidationUtil.isEmpty(alertCalled.getEmergencyCall()) && !ValidationUtil.isEmpty(alertCalled.getContactPhone()))
boolMust.must(qbstatus);
// 如果没有搜索条件不搜索
boolean flag = true;
// ①事发地点一致,或相距不超过200米的;&& ②警情类别一致;&& ③报警时间:距离当前时间不超过两小时的
if (!ValidationUtil.isEmpty(alertCalled.getAddress()) && !ValidationUtil.isEmpty(alertCalled.getAlarmTypeCode()) && !ValidationUtil.isEmpty(alertCalled.getAlarmTypeCode()))
{
BoolQueryBuilder qb2 = QueryBuilders.boolQuery()
.should(QueryBuilders.termQuery("emergencyCall.keyword", alertCalled.getEmergencyCall()))
.should(QueryBuilders.termQuery("contactPhone.keyword", alertCalled.getContactPhone()));
boolMust.must(qb2);
flag = false;
BoolQueryBuilder qb0 = QueryBuilders.boolQuery();
BoolQueryBuilder temp1 = QueryBuilders.boolQuery()
.filter(QueryBuilders.matchQuery("address", alertCalled.getAddress()));
qb0.must(temp1);
BoolQueryBuilder temp2 = QueryBuilders.boolQuery()
.filter(QueryBuilders.matchQuery("alarmTypeCode", alertCalled.getAlarmTypeCode()));
qb0.must(temp2);
//接警时间,距离当前时间不超过两个小时的
long currentTime = System.currentTimeMillis() ;
currentTime = currentTime - 120*60*1000;
BoolQueryBuilder temp3 = QueryBuilders.boolQuery()
.filter(QueryBuilders.rangeQuery("callTimeLong").gte(currentTime));
qb0.must(temp3);
boolMust.should(qb0);
}
//事发地点一致,或相距不超过200米的
if (!ValidationUtil.isEmpty(alertCalled.getAddress()))
{
BoolQueryBuilder qb3 = QueryBuilders.boolQuery()
.filter(QueryBuilders.matchQuery("address", alertCalled.getAddress()));
boolMust.should(qb3);
// 报警电话一致;
if (!ValidationUtil.isEmpty(alertCalled.getEmergencyCall())) {
flag = false;
BoolQueryBuilder tempQb = QueryBuilders.boolQuery();
BoolQueryBuilder tempQb1 = QueryBuilders.boolQuery()
.filter(QueryBuilders.termQuery("emergencyCall.keyword", alertCalled.getEmergencyCall()));
tempQb.must(tempQb1);
boolMust.should(tempQb);
}
//警情类型一致
BoolQueryBuilder qb4 = QueryBuilders.boolQuery()
.filter(QueryBuilders.termQuery("alarmTypeCode", alertCalled.getAlarmTypeCode()));
boolMust.must(qb4);
//使用单位名称一致
if (!ValidationUtil.isEmpty(alertCalled.getUseUnit()))
{
BoolQueryBuilder qb5 = QueryBuilders.boolQuery()
.filter(QueryBuilders.termQuery("useUnit.keyword", alertCalled.getUseUnit()));
boolMust.must(qb5);
// 使用单位名称一致;&& ②警情类别一致;&& ③报警时间:距离当前时间不超过两小时的
if (!ValidationUtil.isEmpty(alertCalled.getUseUnit()) && !ValidationUtil.isEmpty(alertCalled.getAlarmTypeCode()) ) {
flag = false;
BoolQueryBuilder qb0 = QueryBuilders.boolQuery();
BoolQueryBuilder temp1 = QueryBuilders.boolQuery()
.filter(QueryBuilders.termQuery("useUnit.keyword", alertCalled.getUseUnit()));
qb0.must(temp1);
BoolQueryBuilder temp2 = QueryBuilders.boolQuery()
.filter(QueryBuilders.termQuery("alarmTypeCode.keyword", alertCalled.getAlarmTypeCode()));
qb0.must(temp2);
//接警时间,距离当前时间不超过两个小时的
long currentTime = System.currentTimeMillis() ;
currentTime = currentTime - 120*60*1000;
BoolQueryBuilder temp3 = QueryBuilders.boolQuery()
.filter(QueryBuilders.rangeQuery("callTimeLong").gte(currentTime));
qb0.must(temp3);
boolMust.should(qb0);
}
//电梯识别码一致
if(!ValidationUtil.isEmpty(alertCalled.getDeviceId())) {
BoolQueryBuilder qb6 = QueryBuilders.boolQuery()
// 电梯识别码一致;&& ③报警时间:距离当前时间不超过两小时的
if (!ValidationUtil.isEmpty(alertCalled.getDeviceId())) {
flag = false;
BoolQueryBuilder qb0 = QueryBuilders.boolQuery();
BoolQueryBuilder temp = QueryBuilders.boolQuery()
.filter(QueryBuilders.termQuery("deviceId.keyword", alertCalled.getDeviceId()));
boolMust.must(qb6);
qb0.must(temp);
//接警时间,距离当前时间不超过两个小时的
long currentTime = System.currentTimeMillis() ;
currentTime = currentTime - 120*60*1000;
BoolQueryBuilder temp2 = QueryBuilders.boolQuery()
.filter(QueryBuilders.rangeQuery("callTimeLong").gte(currentTime));
qb0.must(temp2);
boolMust.should(qb0);
}
boolMust.minimumShouldMatch(1);//至少满足一个
if(flag) { // 不搜素
return result;
}
/**
......
......@@ -10,6 +10,7 @@ import com.yeejoin.amos.boot.module.tzs.api.dto.AlertCalledFormDto;
import com.yeejoin.amos.boot.module.tzs.api.dto.DispatchPaperFormDto;
import com.yeejoin.amos.boot.module.tzs.api.dto.RepairConsultDto;
import com.yeejoin.amos.boot.module.tzs.api.dto.RescueProcessDto;
import com.yeejoin.amos.boot.module.tzs.api.entity.AlertCalled;
import com.yeejoin.amos.boot.module.tzs.api.entity.AlertFormValue;
import com.yeejoin.amos.boot.module.tzs.api.entity.DispatchPaper;
import com.yeejoin.amos.boot.module.tzs.api.entity.DispatchTask;
......@@ -275,6 +276,12 @@ public class RepairConsultServiceImpl extends BaseService<RepairConsultDto,Repai
// 警情伤亡消息 矩阵 消息
JSONObject jsonObject = new JSONObject();
jsonObject.put("alertId",String.valueOf(alertCalledVo.getSequenceNbr()));
// KRJY 的 repaired complainantBack 和 reportorBack 警情完成
if(CZHJ == DispatchPaperEnums.reportorBack || CZHJ == DispatchPaperEnums.complainantBack) {
jsonObject.put("finished",true);
} else if(CZHJ == DispatchPaperEnums.repaired && alertCalledVo.getAlarmTypeCode().equals(AlertStageEnums.KRJY.getId())) {
jsonObject.put("finished",true);
}
try {
emqKeeper.getMqttClient().publish(alertHeartpushTopic, jsonObject.toString().getBytes("UTF-8"), 1, false);
emqKeeper.getMqttClient().publish(alertMatrixpushTopic, jsonObject.toString().getBytes("UTF-8"), 1, false);
......
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