Browse Source

补全角标

jiawuxian 1 year ago
parent
commit
65982ec4c4

+ 7 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/DvrDiskController.java

@@ -64,4 +64,11 @@ class DvrDiskController {
         TableDataInfo<DvrDiskAppPageVo> page = this.dvrDiskService.appPage(request);
         return page;
     }
+
+    @ApiOperation("有异常的硬盘数量")
+    @GetMapping({"/app/badge/{orgId}"})
+    AjaxResult badge(@PathVariable("orgId") Long orgId) {
+        Integer count = this.dvrDiskService.badge(orgId);
+        return AjaxResult.success(count);
+    }
 }

+ 8 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/VideoDiagnosisController.java

@@ -11,6 +11,7 @@ import com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisAppPageVo;
 import com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisIntegrityVo;
 import com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisWebPageVo;
 import com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisWebVo;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -55,6 +56,13 @@ public class VideoDiagnosisController {
         return page;
     }
 
+    @ApiOperation("有异常的硬盘数量")
+    @GetMapping({"/app/badge/{orgId}"})
+    AjaxResult badge(@PathVariable("orgId") Long orgId) {
+        Integer count = this.videoDiagnosisService.appBadge(orgId);
+        return AjaxResult.success(count);
+    }
+
 //    @PostMapping("/app/detail/{hostCode}/{channelCode}")
 //    public TableDataInfo<VideoDiagnosisAppPageVo> appInfo(@PathVariable("hostCode") String hostCode, @PathVariable("channelCode") String channelCode) {
 //        TableDataInfo<VideoDiagnosisAppPageVo> page = this.videoDiagnosisService.getAppPageData(pageDto);

+ 2 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotDvrChannelMapper.java

@@ -35,4 +35,6 @@ public interface IotDvrChannelMapper extends BaseMapper<IotDvrChannel> {
     Page<VideoDiagnosisAppPageVo> selectAppPage(@Param("page") Page<VideoDiagnosisAppPageVo> page,
                                                 @Param("pageDto") VideoDiagnosisAppPageDto pageDto,
                                                 @Param("orgPath") String orgPath);
+
+    Integer selectBadge(Long orgId);
 }

+ 2 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IotDvsDiskService.java

@@ -25,4 +25,6 @@ public interface IotDvsDiskService extends IService<IotDvrDisk> {
     DvrDiskStatisticVo diskStatistic(DvrDiskPageDto request);
 
     TableDataInfo<DvrDiskAppPageVo> appPage(DvrDiskAppPageDto request);
+
+    Integer badge(Long orgId);
 }

+ 1 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/VideoDiagnosisService.java

@@ -29,4 +29,5 @@ public interface VideoDiagnosisService extends IService<IotDvrChannel> {
 
     TableDataInfo<VideoDiagnosisAppPageVo> getAppPageData(VideoDiagnosisAppPageDto request);
 
+    Integer appBadge(Long orgId);
 }

+ 11 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotDvrDiskServiceImpl.java

@@ -5,10 +5,12 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.iot.domain.IotDvrDisk;
+import com.xunmei.common.core.domain.iot.domain.IotSensor;
 import com.xunmei.common.core.enums.CategoryDataEnum;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.iot.dto.dvrDisk.DvrDiskAlarmHistoryPageDto;
@@ -125,4 +127,13 @@ public class IotDvrDiskServiceImpl extends ServiceImpl<IotDvrDiskMapper, IotDvrD
         });
         return TableDataInfo.success(page);
     }
+
+    @Override
+    public Integer badge(Long orgId) {
+        Long count = baseMapper.selectCount(new LambdaQueryWrapper<IotDvrDisk>()
+                .eq(IotDvrDisk::getOrgId, orgId)
+                .eq(IotDvrDisk::getState, 1)
+                .eq(IotDvrDisk::getDeleted, 0));
+        return count.intValue();
+    }
 }

+ 7 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/VideoDiagnosisServiceImpl.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.iot.domain.IotDvrChannel;
+import com.xunmei.common.core.domain.iot.domain.IotDvrDisk;
 import com.xunmei.common.core.domain.video.MediatorVideoIntegrityCheck;
 import com.xunmei.common.core.enums.CategoryDataEnum;
 import com.xunmei.common.core.enums.iot.VideoIntegrityStatus;
@@ -131,6 +132,12 @@ public class VideoDiagnosisServiceImpl extends ServiceImpl<IotDvrChannelMapper,
         return vo;
     }
 
+    @Override
+    public Integer appBadge(Long orgId) {
+        Integer count = baseMapper.selectBadge(orgId);
+        return count;
+    }
+
     private void setUnknownDate(VideoDiagnosisStorageVo storage, Date earliest) {
         storage.setUnknownDates(new ArrayList<>());
         Date start = DateUtil.beginOfDay(earliest);

+ 0 - 1
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/dvrDisk/DvrDiskAppPageVo.java

@@ -24,7 +24,6 @@ public class DvrDiskAppPageVo {
     @ApiModelProperty("磁盘信息")
     private List<IotDvrDisk> diskInfos;
 
-    @JsonIgnore
     private Integer state;
 
     @ApiModelProperty("异常数量")

+ 50 - 33
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);
         }
 
 
@@ -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;
+}

+ 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 {