|
|
@@ -2,8 +2,10 @@ package com.xunmei.host.alarm.service.impl;
|
|
|
|
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.xunmei.common.core.constant.SecurityConstants;
|
|
|
@@ -17,18 +19,16 @@ import com.xunmei.common.core.domain.video.MediatorVideoDiagnosisRecord;
|
|
|
import com.xunmei.common.core.utils.DateUtils;
|
|
|
import com.xunmei.common.core.utils.StringUtils;
|
|
|
import com.xunmei.host.alarm.mapper.IotAlarmDataMapper;
|
|
|
-import com.xunmei.host.alarm.mapper.IotAlarmRuleExpressMapper;
|
|
|
-import com.xunmei.host.alarm.mapper.IotAlarmRuleSourceMapper;
|
|
|
-import com.xunmei.host.alarm.mapper.IotAlarmSystemFieldMapper;
|
|
|
import com.xunmei.host.alarm.service.IotAlarmDataService;
|
|
|
import com.xunmei.host.enums.AlarmDataTypeEnum;
|
|
|
import com.xunmei.host.enums.AlarmRuleExpressOperateEnum;
|
|
|
import com.xunmei.host.enums.AlarmVideoTypeEnum;
|
|
|
-import com.xunmei.host.iot.mapper.IotDeviceStatusMapper;
|
|
|
+import com.xunmei.host.iot.service.IIotDeviceInfoService;
|
|
|
import com.xunmei.system.api.RemoteConfigService;
|
|
|
-import com.xunmei.system.api.RemoteSmsService;
|
|
|
import com.xunmei.system.api.domain.SysConfig;
|
|
|
+import com.xunmei.system.api.domain.iot.IotDeviceInfo;
|
|
|
import com.xunmei.system.api.domain.iot.IotDeviceStatus;
|
|
|
+import com.xunmei.system.api.util.LogUtils;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import lombok.Data;
|
|
|
import lombok.NoArgsConstructor;
|
|
|
@@ -53,24 +53,14 @@ import java.util.*;
|
|
|
@Service
|
|
|
public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, IotAlarmData> implements IotAlarmDataService {
|
|
|
|
|
|
- @Autowired
|
|
|
- private IotAlarmRuleSourceMapper iotAlarmRuleSourceMapper;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private IotAlarmRuleExpressMapper iotAlarmRuleExpressMapper;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private IotAlarmSystemFieldMapper iotAlarmSystemFieldMapper;
|
|
|
|
|
|
@Autowired
|
|
|
- private IotDeviceStatusMapper deviceStatusMapper;
|
|
|
+ private IIotDeviceInfoService deviceInfoService;
|
|
|
;
|
|
|
|
|
|
@Autowired
|
|
|
private RemoteConfigService remoteConfigService;
|
|
|
|
|
|
- @Autowired
|
|
|
- private RemoteSmsService remoteSmsService;
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@@ -194,7 +184,8 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- */}
|
|
|
+ */
|
|
|
+ }
|
|
|
|
|
|
/* @Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
@@ -420,34 +411,39 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void dealDvrDiskData(IotDvrHardDiskDetection iotDvrDisk) throws Exception {
|
|
|
+ public void dealDvrDiskData(IotDvrHardDiskDetection iotDvrDisk, String iotCode, String produceName, String deviceName) throws Exception {
|
|
|
|
|
|
/**
|
|
|
* [{"index":8,"name":"DISK8","state":0},{"index":3,"name":"DISK3","state":0},{"index":1,"name":"DISK1","state":0}]
|
|
|
*/
|
|
|
String detailInfo = iotDvrDisk.getDetailInfo();
|
|
|
if (StringUtils.isEmpty(detailInfo)) {
|
|
|
+ LogUtils.STATUS_INFO_DISKS.error("硬盘状态上报,detailInfo为空,此次不做处理,iotCode: {},produceName: {},deviceName: {},iotDvrDisk:{}", iotCode, produceName, deviceName, JSON.toJSONString(iotDvrDisk));
|
|
|
return;
|
|
|
}
|
|
|
- Long orgId = iotDvrDisk.getOrgId();
|
|
|
//监控主机唯一标识
|
|
|
- String hostCode = iotDvrDisk.getEquipmentCode();
|
|
|
String equipmentName = iotDvrDisk.getEquipmentName();
|
|
|
List<DiskVo> diskVos = JSONArray.parseArray(detailInfo, DiskVo.class);
|
|
|
+
|
|
|
+ final IotDeviceInfo deviceInfo = deviceInfoService.selectByTokenProductAndDeviceCode(iotCode, produceName, deviceName);
|
|
|
+ if (deviceInfo == null) {
|
|
|
+ LogUtils.STATUS_INFO_DISKS.error("硬盘状态上报,未能找到监控主机,iotCode: {},produceName: {},deviceName: {}", iotCode, produceName, deviceName);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<IotAlarmData> qw = new LambdaQueryWrapper<>();
|
|
|
+ qw.eq(IotAlarmData::getOrgId, iotDvrDisk.getOrgId())
|
|
|
+ .eq(IotAlarmData::getDeviceId, deviceInfo.getId())
|
|
|
+ .isNull(IotAlarmData::getEndTime);
|
|
|
+ List<IotAlarmData> datas = baseMapper.selectList(qw);
|
|
|
+
|
|
|
for (DiskVo diskVo : diskVos) {
|
|
|
//硬盘状态。0:正常,1:异常
|
|
|
Integer state = diskVo.getState();
|
|
|
- hostCode = hostCode + "__" + diskVo.getIndex();
|
|
|
-
|
|
|
- QueryWrapper<IotAlarmData> qw = new QueryWrapper<>();
|
|
|
- qw.lambda().eq(IotAlarmData::getOrgId, orgId).eq(IotAlarmData::getDeviceId, hostCode).isNull(IotAlarmData::getEndTime);
|
|
|
- List<IotAlarmData> datas = baseMapper.selectList(qw);
|
|
|
-
|
|
|
-
|
|
|
if (state == 1 && datas.size() == 0) {
|
|
|
//报警,且没有告警数据
|
|
|
- IotAlarmData alarmDisk = createAlarmDisk(equipmentName, diskVo.getName(), orgId, hostCode);
|
|
|
+ IotAlarmData alarmDisk = createAlarmDisk(equipmentName, diskVo.getName(), iotDvrDisk.getOrgId(), deviceInfo.getId());
|
|
|
this.save(alarmDisk);
|
|
|
+ LogUtils.STATUS_INFO_DISKS.info("磁盘状态: {}产生告警信息", alarmDisk.getDeviceName());
|
|
|
}
|
|
|
|
|
|
if (state == 0 && datas.size() > 0) {
|
|
|
@@ -455,19 +451,16 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
|
|
|
iotAlarmData.setEndTime(LocalDateTime.now());
|
|
|
this.updateById(iotAlarmData);
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
|
|
|
- private IotAlarmData createAlarmDisk(String equipmentName, String diskName, long orgId, String hostCode) {
|
|
|
+ private IotAlarmData createAlarmDisk(String equipmentName, String diskName, long orgId, Long deviceId) {
|
|
|
IotAlarmData iotAlarmData = new IotAlarmData();
|
|
|
iotAlarmData.setAlarmValue("异常");
|
|
|
iotAlarmData.setTime(LocalDateTime.now());
|
|
|
iotAlarmData.setDeviceName(equipmentName + "-" + diskName);
|
|
|
iotAlarmData.setRuleId(1L);
|
|
|
- // iotAlarmData.setSourceType(AlarmVideoTypeEnum.DVRDISK.getValue());
|
|
|
+ iotAlarmData.setSourceType(String.valueOf(AlarmVideoTypeEnum.DVRDISK.getValue()));
|
|
|
iotAlarmData.setSourceTypeDes(AlarmVideoTypeEnum.getTextByValue(AlarmVideoTypeEnum.DVRDISK.getValue()) + "告警");
|
|
|
iotAlarmData.setFieldCode(AlarmVideoTypeEnum.DVRDISK.getValue() + "");
|
|
|
iotAlarmData.setOperator("EQUALS");
|
|
|
@@ -476,7 +469,7 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
|
|
|
iotAlarmData.setContent(iotAlarmData.getDeviceName() + "触发" + iotAlarmData.getSourceTypeDes());
|
|
|
iotAlarmData.setOrgId(orgId);
|
|
|
iotAlarmData.setDataType(AlarmDataTypeEnum.HOST_ALARM.getValue());
|
|
|
- iotAlarmData.setDeviceId(hostCode);
|
|
|
+ iotAlarmData.setDeviceId(deviceId.toString());
|
|
|
return iotAlarmData;
|
|
|
}
|
|
|
|
|
|
@@ -500,7 +493,7 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
|
|
|
|
|
|
|
|
|
}
|
|
|
- if (ObjectUtil.equal(diagnosisValue, 0) && !iots.isEmpty()) {
|
|
|
+ if (ObjectUtil.equal(diagnosisValue, 0) && !iots.isEmpty()) {
|
|
|
IotAlarmData iotAlarmData = iots.get(0);
|
|
|
iotAlarmData.setEndTime(LocalDateTime.now());
|
|
|
this.updateById(iotAlarmData);
|
|
|
@@ -578,7 +571,7 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
|
|
|
iotAlarmData.setDeviceName(deviceName + "-" + channelName);
|
|
|
}
|
|
|
iotAlarmData.setRuleId(1L);
|
|
|
- iotAlarmData.setSourceType(diagnosisType+"");
|
|
|
+ iotAlarmData.setSourceType(diagnosisType + "");
|
|
|
iotAlarmData.setSourceTypeDes(AlarmVideoTypeEnum.getTextByValue(diagnosisType) + "告警");
|
|
|
iotAlarmData.setFieldCode(diagnosisType + "");
|
|
|
iotAlarmData.setOperator("EQUALS");
|