| 
					
				 | 
			
			
				@@ -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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -241,7 +247,7 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         iotAlarmData.setDeviceName(equipmentName + "-" + diskName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         iotAlarmData.setRuleId(1L); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         iotAlarmData.setSourceType(AlarmVideoTypeEnum.DVRDISK.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        iotAlarmData.setSourceTypeDes(AlarmVideoTypeEnum.getTextByValue(AlarmVideoTypeEnum.DVRDISK.getValue())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        iotAlarmData.setSourceTypeDes(AlarmVideoTypeEnum.getTextByValue(AlarmVideoTypeEnum.DVRDISK.getValue())+"告警"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         iotAlarmData.setFieldCode(AlarmVideoTypeEnum.DVRDISK.getValue() + ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         iotAlarmData.setOperator("EQUALS"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         iotAlarmData.setValue("1"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -334,7 +340,7 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         iotAlarmData.setDeviceName(deviceName + "-" + channelName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         iotAlarmData.setRuleId(1L); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         iotAlarmData.setSourceType(diagnosisType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        iotAlarmData.setSourceTypeDes(AlarmVideoTypeEnum.getTextByValue(diagnosisType)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        iotAlarmData.setSourceTypeDes(AlarmVideoTypeEnum.getTextByValue(diagnosisType)+"告警"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         iotAlarmData.setFieldCode(diagnosisType + ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         iotAlarmData.setOperator("EQUALS"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         iotAlarmData.setValue("1"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -353,7 +359,7 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         iotAlarmData.setDeviceName(iotSensor.getDeviceName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         iotAlarmData.setRuleId(express.getRuleId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         iotAlarmData.setSourceType(field.getSourceType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        iotAlarmData.setSourceTypeDes(field.getSourceTypeDes()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        iotAlarmData.setSourceTypeDes(field.getSourceTypeDes()+"告警"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         iotAlarmData.setFieldCode(field.getSysFieldCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         iotAlarmData.setOperator(express.getOperator()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         iotAlarmData.setValue(express.getValue()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |