Pārlūkot izejas kodu

添加主机类告警

高雄 1 gadu atpakaļ
vecāks
revīzija
1ffdd0821b

+ 2 - 1
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/IotAlarmDataService.java

@@ -2,6 +2,7 @@ package com.xunmei.mediator.api.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.common.core.domain.iot.domain.IotDvrDisk;
+import com.xunmei.common.core.domain.iot.domain.IotDvrHardDiskDetection;
 import com.xunmei.common.core.domain.iot.domain.IotSensor;
 import com.xunmei.common.core.domain.mediator.domain.IotAlarmData;
 import com.xunmei.common.core.domain.video.MediatorVideoDiagnosisRecord;
@@ -47,6 +48,6 @@ public interface IotAlarmDataService extends IService<IotAlarmData> {
      * @param iotDvrDisk
      * @throws Exception
      */
-    void dealDvrDiskData(IotDvrDisk iotDvrDisk)throws Exception;
+    void dealDvrDiskData(IotDvrHardDiskDetection iotDvrDisk)throws Exception;
 
 }

+ 47 - 30
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotAlarmDataServiceImpl.java

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.domain.iot.domain.IotDevice;
 import com.xunmei.common.core.domain.iot.domain.IotDvrDisk;
+import com.xunmei.common.core.domain.iot.domain.IotDvrHardDiskDetection;
 import com.xunmei.common.core.domain.iot.domain.IotSensor;
 import com.xunmei.common.core.domain.mediator.domain.IotAlarmData;
 import com.xunmei.common.core.domain.mediator.domain.IotAlarmRuleExpress;
@@ -18,11 +19,15 @@ import com.xunmei.common.core.domain.mediator.domain.IotAlarmSystemField;
 import com.xunmei.common.core.domain.video.MediatorVideoDiagnosisRecord;
 import com.xunmei.common.core.enums.CategoryDataEnum;
 import com.xunmei.common.core.utils.DateUtils;
+import com.xunmei.common.core.utils.StringUtils;
 import com.xunmei.mediator.api.enums.AlarmDataTypeEnum;
 import com.xunmei.mediator.api.enums.AlarmRuleExpressOperateEnum;
 import com.xunmei.mediator.api.enums.AlarmVideoTypeEnum;
 import com.xunmei.mediator.api.mapper.*;
 import com.xunmei.mediator.api.service.IotAlarmDataService;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -194,41 +199,42 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void dealDvrDiskData(IotDvrDisk iotDvrDisk) throws Exception {
-        Long orgId = iotDvrDisk.getOrgId();
-
-        //硬盘状态。0:正常,1:异常
-        Integer state = iotDvrDisk.getState();
-
-        //监控主机唯一标识
-        String hostCode = iotDvrDisk.getHostCode();
+    public void dealDvrDiskData(IotDvrHardDiskDetection iotDvrDisk) throws Exception {
 
-        QueryWrapper<IotDevice> idqw = new QueryWrapper<>();
-        idqw.lambda().eq(IotDevice::getEquipmentCode,hostCode).eq(IotDevice::getOrgId,orgId);
-        IotDevice iotDevice = iotDeviceMapper.selectOne(idqw);
-        if(iotDevice == null){
+        /**
+         * [{"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)){
             return;
         }
-        String equipmentName = iotDevice.getEquipmentName();
-        String diskName = iotDvrDisk.getDiskName();
-
-        hostCode = hostCode + "__" +iotDvrDisk.getDiskIndex();
-
-        QueryWrapper<IotAlarmData> qw = new QueryWrapper<>();
-        qw.lambda().eq(IotAlarmData::getOrgId,orgId).eq(IotAlarmData::getDeviceId,hostCode).isNull(IotAlarmData::getEndTime);
-        List<IotAlarmData> datas = baseMapper.selectList(qw);
-
+        Long orgId = iotDvrDisk.getOrgId();
+        //监控主机唯一标识
+        String hostCode = iotDvrDisk.getEquipmentCode();
+        String equipmentName = iotDvrDisk.getEquipmentName();
+        List<DiskVo> diskVos = JSONArray.parseArray(detailInfo, DiskVo.class);
+        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);
+                this.save(alarmDisk);
+            }
 
-        if(state ==1 && datas.size() == 0){
-            //报警,且没有告警数据
-            IotAlarmData alarmDisk = createAlarmDisk(equipmentName, diskName, orgId, hostCode);
-            this.save(alarmDisk);
-        }
+            if(state == 0 && datas.size() > 0){
+                IotAlarmData iotAlarmData = datas.get(0);
+                iotAlarmData.setEndTime(LocalDateTime.now());
+                this.updateById(iotAlarmData);
+            }
 
-        if(state == 0 && datas.size() > 0){
-            IotAlarmData iotAlarmData = datas.get(0);
-            iotAlarmData.setEndTime(LocalDateTime.now());
-            this.updateById(iotAlarmData);
         }
 
 
@@ -393,3 +399,14 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
 
 
 }
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+class DiskVo{
+    private String index;
+
+    private String name;
+
+    private Integer state;
+}

+ 1 - 15
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotDvrDiskServiceImpl.java

@@ -55,8 +55,7 @@ public class IotDvrDiskServiceImpl extends ServiceImpl<IotDvrDiskMapper, IotDvrD
     @Autowired
     private IIotDeviceService iotDeviceService;
 
-    @Autowired
-    private IotAlarmDataService iotAlarmDataService;
+
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -122,19 +121,6 @@ public class IotDvrDiskServiceImpl extends ServiceImpl<IotDvrDiskMapper, IotDvrD
                 throw new RuntimeException(e.getMessage());
             }
         }
-
-        TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
-            @Override
-            public void afterCommit() {
-                try {
-                    for (IotDvrDisk dvrdisk : dvrdisks) {
-                        iotAlarmDataService.dealDvrDiskData(dvrdisk);
-                    }
-                } catch (Exception e) {
-                    throw new RuntimeException(e);
-                }
-            }
-        });
     }
 
     private Map<String, Object> checkDvrDiskPageDto(List<DvrDiskPageDto> dvrdiskPageLists, String msgId) throws IllegalAccessException {

+ 17 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotDvrHardDiskDetectionServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.Constants;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.iot.domain.IotDevice;
+import com.xunmei.common.core.domain.iot.domain.IotDvrDisk;
 import com.xunmei.common.core.domain.mediator.domain.IotAlarmCode;
 import com.xunmei.common.core.domain.mediator.domain.MediatorCategory;
 import com.xunmei.common.core.domain.iot.domain.IotDvrHardDiskDetection;
@@ -23,8 +24,11 @@ import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.dto.protection.ReceiveErrorDto;
 import com.xunmei.system.api.dto.protection.VideoRecorderHardDiskDetectionEditDto;
 import com.xunmei.system.api.enums.AlarmStatus;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.support.TransactionSynchronizationAdapter;
+import org.springframework.transaction.support.TransactionSynchronizationManager;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
@@ -50,6 +54,9 @@ public class IotDvrHardDiskDetectionServiceImpl extends ServiceImpl<IotDvrHardDi
     @Resource
     IotDvrHardDiskDetectionLogService videoRecorderHardDiskDetectionLogService;
 
+    @Autowired
+    private IotAlarmDataService iotAlarmDataService;
+
     @Override
     public IotDvrHardDiskDetection findTopByEquipmentCodeAndOrgId(String equipmentCode, Long orgId) {
         return lambdaQuery()
@@ -183,5 +190,15 @@ public class IotDvrHardDiskDetectionServiceImpl extends ServiceImpl<IotDvrHardDi
         videoRecorderHardDiskDetectionLogService.saveOrUpdate(videoRecorderHardDiskDetectionLog);
         iotDvrDiskService.updateStatusByDiskDetection(videoRecorderHardDiskDetection);
 
+        TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
+            @Override
+            public void afterCommit() {
+                try {
+                    iotAlarmDataService.dealDvrDiskData(videoRecorderHardDiskDetection);
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        });
     }
 }