Browse Source

#告警关联视频查询

zhongwei
yang_shj 7 months ago
parent
commit
de5eee7861
  1. 4
      hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/show/controller/ShowAlarmController.java
  2. 2
      hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/show/service/AlarmService.java
  3. 134
      hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/show/service/impl/AlarmServiceImpl.java

4
hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/show/controller/ShowAlarmController.java

@ -61,8 +61,8 @@ public class ShowAlarmController extends BladeController {
public R<List<AlarmVideoVo>> alarmVideos(@ApiParam("站点编号") @RequestParam(required = false) String stationCode, public R<List<AlarmVideoVo>> alarmVideos(@ApiParam("站点编号") @RequestParam(required = false) String stationCode,
@ApiParam("设备编号") @RequestParam(required = false) String deviceCode, @ApiParam("设备编号") @RequestParam(required = false) String deviceCode,
@ApiParam("监测点ID") @RequestParam(required = false) String realId, @ApiParam("监测点ID") @RequestParam(required = false) String realId,
@ApiParam("告警类型") @RequestParam Integer alarmSource) { @ApiParam("告警类型") @RequestParam Integer alarmType) {
return R.data(alarmService.alarmVideos(stationCode,deviceCode,realId,alarmSource)); return R.data(alarmService.alarmVideos(stationCode,deviceCode,realId,alarmType));
} }
} }

2
hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/show/service/AlarmService.java

@ -23,5 +23,5 @@ public interface AlarmService extends BaseService<AlarmEntity> {
TextMessage majorAlarm(List<Long> depts); TextMessage majorAlarm(List<Long> depts);
List<AlarmVideoVo> alarmVideos(String stationCode, String deviceCode, String realId,Integer alarmSource); List<AlarmVideoVo> alarmVideos(String stationCode, String deviceCode, String realId,Integer alarmType);
} }

134
hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/show/service/impl/AlarmServiceImpl.java

@ -1,6 +1,7 @@
package com.hnac.hzims.alarm.show.service.impl; package com.hnac.hzims.alarm.show.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.hnac.hzims.alarm.config.constants.AlarmConstants; import com.hnac.hzims.alarm.config.constants.AlarmConstants;
@ -17,6 +18,7 @@ import com.hnac.hzims.equipment.entity.EmInfoEntity;
import com.hnac.hzims.equipment.entity.EmVideoBandingEntity; import com.hnac.hzims.equipment.entity.EmVideoBandingEntity;
import com.hnac.hzims.equipment.feign.IEmInfoClient; import com.hnac.hzims.equipment.feign.IEmInfoClient;
import com.hnac.hzims.equipment.feign.IEmVideoClient; import com.hnac.hzims.equipment.feign.IEmVideoClient;
import com.hnac.hzims.fdp.util.HttpRequestUtil;
import com.hnac.hzims.message.dto.MailMessageDTO; import com.hnac.hzims.message.dto.MailMessageDTO;
import com.hnac.hzims.message.fegin.IMessageClient; import com.hnac.hzims.message.fegin.IMessageClient;
import com.hnac.hzims.operational.station.entity.StationEntity; import com.hnac.hzims.operational.station.entity.StationEntity;
@ -28,7 +30,9 @@ import com.hnac.hzinfo.sdk.v5.device.vo.DeviceInstanceAttrVO;
import com.hnac.hzinfo.sdk.v5.device.vo.DeviceInstanceEventVO; import com.hnac.hzinfo.sdk.v5.device.vo.DeviceInstanceEventVO;
import com.hnac.hzinfo.sdk.v5.device.vo.DeviceInstanceFuncVO; import com.hnac.hzinfo.sdk.v5.device.vo.DeviceInstanceFuncVO;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.springblade.core.log.exception.ServiceException; import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
@ -38,6 +42,7 @@ import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.core.tool.utils.StringUtil; import org.springblade.core.tool.utils.StringUtil;
import org.springblade.system.user.entity.User; import org.springblade.system.user.entity.User;
import org.springblade.system.user.feign.IUserClient; import org.springblade.system.user.feign.IUserClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.Assert; import org.springframework.util.Assert;
import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.TextMessage;
@ -48,7 +53,7 @@ import java.util.stream.Collectors;
/** /**
* @author ysj * @author ysj
*/ */
@AllArgsConstructor @RequiredArgsConstructor
@Service @Service
@Slf4j @Slf4j
public class AlarmServiceImpl extends BaseServiceImpl<AlarmMapper, AlarmEntity> implements AlarmService { public class AlarmServiceImpl extends BaseServiceImpl<AlarmMapper, AlarmEntity> implements AlarmService {
@ -73,6 +78,9 @@ public class AlarmServiceImpl extends BaseServiceImpl<AlarmMapper, AlarmEntity>
private final IStationVideoTypeClient stationVideoTypeClient; private final IStationVideoTypeClient stationVideoTypeClient;
@Value("${hzims.url.getFaultGraphInfo}")
private String FAULTGRAPH_INFO_PATH;
/** /**
* 查询告警列表 * 查询告警列表
* @param alarm * @param alarm
@ -427,7 +435,7 @@ public class AlarmServiceImpl extends BaseServiceImpl<AlarmMapper, AlarmEntity>
* @return * @return
*/ */
@Override @Override
public List<AlarmVideoVo> alarmVideos(String stationCode, String deviceCode, String realId,Integer alarmSource) { public List<AlarmVideoVo> alarmVideos(String stationCode, String deviceCode, String realId,Integer alarmType) {
// 步骤1、根据设备编号查询视频信息 // 步骤1、根据设备编号查询视频信息
if(StringUtil.isNotBlank(deviceCode)){ if(StringUtil.isNotBlank(deviceCode)){
return this.deviceVideos(stationCode,deviceCode); return this.deviceVideos(stationCode,deviceCode);
@ -435,33 +443,44 @@ public class AlarmServiceImpl extends BaseServiceImpl<AlarmMapper, AlarmEntity>
// 步骤2、根据采集点查询视频信息 // 步骤2、根据采集点查询视频信息
if(StringUtil.isNotBlank(realId)){ if(StringUtil.isNotBlank(realId)){
// 智能预警 // 智能预警
if(AlarmConstants.EARLY.equals(alarmSource)){ if(AlarmConstants.EARLY.equals(alarmType)){
this.earlyVideos(stationCode,realId); return this.earlyVideos(stationCode,realId);
// 通讯中断、通讯异常查询站点视频
}else if(AlarmConstants.INTERRUPT.equals(alarmType) || AlarmConstants.ABNORMAL.equals(alarmType)){
return this.stationVideos(stationCode);
// 其他告警
}else{ }else{
return this.realIdVideos(stationCode,realId);
} }
} }
// 步骤3.根据站点编号查询视频信息
// 根据站点编号查找 if(StringUtil.isNotBlank(stationCode)){
else if(StringUtil.isNotBlank(stationCode)){ return this.stationVideos(stationCode);
List<StationVideoTypeEntity> videos = stationVideoTypeClient.listByStationId(stationCode);
if(CollectionUtil.isNotEmpty(videos)){
return videos.stream().distinct().map(video->{
AlarmVideoVo alarmVideo = new AlarmVideoVo();
alarmVideo.setVideoHost(video.getVideoHost());
alarmVideo.setVideoName(video.getName());
alarmVideo.setVideoAppKey(video.getAppKey());
alarmVideo.setVideoAppSecret(video.getAppSecret());
alarmVideo.setPointCode(video.getPointCode());
return alarmVideo;
}).collect(Collectors.toList());
}else{
// 站点不存在视频
}
} }
throw new ServiceException("未查询到告警视频信息!"); throw new ServiceException("未查询到告警视频信息!");
} }
/**
*查询站点绑定视频信息
* @param stationCode
*/
private List<AlarmVideoVo> stationVideos(String stationCode) {
List<StationVideoTypeEntity> videos = stationVideoTypeClient.listByStationId(stationCode);
if(CollectionUtil.isEmpty(videos)){
throw new ServiceException("站点暂无视频信息!");
}
return videos.stream().distinct().map(video->{
AlarmVideoVo alarmVideo = new AlarmVideoVo();
alarmVideo.setVideoHost(video.getVideoHost());
alarmVideo.setVideoName(video.getName());
alarmVideo.setVideoAppKey(video.getAppKey());
alarmVideo.setVideoAppSecret(video.getAppSecret());
alarmVideo.setPointCode(video.getPointCode());
return alarmVideo;
}).collect(Collectors.toList());
}
/** /**
* 查询设备绑定视频信息 * 查询设备绑定视频信息
@ -498,12 +517,73 @@ public class AlarmServiceImpl extends BaseServiceImpl<AlarmMapper, AlarmEntity>
/** /**
* 查询智能预警视频信息 * 查询智能预警视频信息
* @param stationCode * @param stationCode
* @param realId * @param faultId
*/ */
private void earlyVideos(String stationCode, String realId) { private List<AlarmVideoVo> earlyVideos(String stationCode, String faultId) {
// 调用FDP接口查询设备编号
Map<String, Object> param = new HashMap<>();
param.put("faultId", faultId);
String result = HttpRequestUtil.postCall(param, FAULTGRAPH_INFO_PATH, "POST");
if (StringUtil.isNotBlank(result)) {
throw new ServiceException("未查询到智能预警设备信息!");
}
HashMap<String, Object> map = JSONObject.parseObject(result, new TypeReference<HashMap<String, Object>>() {
});
if (ObjectUtil.isEmpty(map)) {
throw new ServiceException("未查询到智能预警设备信息!");
}
List<HashMap<String, Object>> data = JSONObject.parseObject(MapUtils.getString(map, "data"), new TypeReference<List<HashMap<String, Object>>>() {
});
if (CollectionUtil.isEmpty(data)) {
throw new ServiceException("未查询到智能预警设备信息!");
}
String deviceCode = (String) data.get(0).get("TAOS_INSTANCE");
if(StringUtil.isNotBlank(deviceCode)){
throw new ServiceException("未查询到智能预警设备信息!");
}
return this.deviceVideos(stationCode,deviceCode);
} }
/**
* 查询采集点绑定视频信息
* @param stationCode
* @param realId
*/
private List<AlarmVideoVo> realIdVideos(String stationCode, String realId) {
// 查询站点
R<StationEntity> station = stationClient.getStationByCode(stationCode);
if(!station.isSuccess() || ObjectUtil.isEmpty(station)){
throw new ServiceException("未查询到告警采集点绑定视频信息!");
}
EmInfoEntity param = new EmInfoEntity();
param.setDepartment(station.getData().getRefDept());
// 查询设备
R<List<EmInfoEntity>> devices = emInfoClient.emInfoList(param);
if(!devices.isSuccess() || CollectionUtil.isEmpty(devices.getData())){
throw new ServiceException("未查询到告警采集点绑定视频信息!");
}
String deviceCodes = devices.getData().stream().parallel()
.filter(this::isBandingVideoByEmCode)
.filter(this::isDeviceCodeExist)
.map(EmInfoEntity::getNumber)
.filter(number -> this.isRealIdBanding(realId, number))
.collect(Collectors.joining(","));
if(StringUtil.isEmpty(deviceCodes)){
throw new ServiceException("未查询到告警采集点绑定视频信息!");
}
// 查询设备绑定视频点位
R<List<EmVideoBandingEntity>> videos = emVideoClient.getEmBandingVideos(deviceCodes);
if(videos.isSuccess() && CollectionUtil.isEmpty(videos.getData())){
throw new ServiceException("请在设备信息菜单绑定" + station.getData().getName() + "的设备视频绑定信息!");
}
return videos.getData().stream().distinct().map(video->{
AlarmVideoVo alarmVideo = new AlarmVideoVo();
alarmVideo.setVideoHost(video.getVideoHost());
alarmVideo.setVideoName(video.getVideoName());
alarmVideo.setVideoAppKey(video.getVideoAppKey());
alarmVideo.setVideoAppSecret(video.getVideoAppSecret());
alarmVideo.setPointCode(video.getPointCode());
return alarmVideo;
}).collect(Collectors.toList());
}
} }
Loading…
Cancel
Save