Ver código fonte

视频质量,磁盘检测代码提交

jingyuanchao 1 ano atrás
pai
commit
18aad1329e

+ 21 - 0
project_data/sql/0.1.1/soc/soc.sql

@@ -5,6 +5,27 @@ DROP PROCEDURE IF EXISTS schema_change ??
 CREATE PROCEDURE schema_change()
 BEGIN
 
+    -- 磁盘表增加磁盘原始状态值
+    IF NOT EXISTS(SELECT *
+                  FROM information_schema.columns
+                  WHERE table_schema = DATABASE()
+                    AND table_name = 'iot_dvr_disk'
+                    AND column_name = 'origin_state') THEN
+        alter table iot_dvr_disk
+            add origin_state int null comment '原始状态:0:正常,1:不存在,2:未格式化,3:休眠,4:正在维修 ,5:报警 ,6:错误 7:排除, 9:未知' after state;
+    END IF;
+
+    -- 磁盘日志表增加磁盘原始状态值
+    IF NOT EXISTS(SELECT *
+                  FROM information_schema.columns
+                  WHERE table_schema = DATABASE()
+                    AND table_name = 'iot_dvr_disk_log'
+                    AND column_name = 'origin_state') THEN
+        alter table iot_dvr_disk_log
+            add origin_state int null comment '原始状态:0:正常,1:不存在,2:未格式化,3:休眠,4:正在维修 ,5:报警 ,6:错误 7:排除, 9:未知' after state;
+    END IF;
+
+
 
 END ??
 DELIMITER ;

+ 9 - 4
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/iot/domain/IotDvrDisk.java

@@ -1,14 +1,15 @@
 package com.xunmei.common.core.domain.iot.domain;
 
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
-import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.*;
 
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
 /**
  * <p>
  * 
@@ -67,6 +68,10 @@ public class IotDvrDisk implements Serializable {
     @TableField("state")
     private Integer state;
 
+    @ApiModelProperty(value = "硬盘原始状态",notes = "0:正常,1:不存在,2:未格式化,3:休眠,4:正在维修 ,5:报警 ,6:错误 7:排除, 9:未知")
+    @TableField("origin_state")
+    private Integer originState;
+
     @ApiModelProperty(value = "最后一次状态更新时间")
     @TableField("state_update_time")
     private LocalDateTime stateUpdateTime;

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

@@ -68,7 +68,7 @@ public class IotDvrDiskServiceImpl extends ServiceImpl<IotDvrDiskMapper, IotDvrD
         final List<Map> mapList = JSON.parseArray(detailInfo, Map.class);
         List<IotDvrDisk> diskArrayList = new ArrayList<>();
         for (Map map : mapList) {
-            final Integer index = (Integer) map.get("index");
+            final Integer index = (Integer) map.get("diskSerialNum");
             if (ObjectUtil.isNull(index)) {
                 continue;
             }
@@ -79,6 +79,15 @@ public class IotDvrDiskServiceImpl extends ServiceImpl<IotDvrDiskMapper, IotDvrD
             }
             final IotDvrDisk iotDvrDisk = first.get();
             iotDvrDisk.setState((Integer) map.get("state"));
+            iotDvrDisk.setDiskName((String) map.get("name"));
+            Integer totalBytes = (Integer) map.get("totalBytes");
+            Integer availableBytes = (Integer) map.get("availableBytes");
+            Integer originState = (Integer) map.get("originState");
+            //Integer freeBytes = (Integer) map.get("freeBytes");
+
+            iotDvrDisk.setOriginState(originState);
+            iotDvrDisk.setAvailable(availableBytes/1024/1024);
+            iotDvrDisk.setTotal(totalBytes/1024/1024);
             iotDvrDisk.setStateUpdateTime(videoRecorderHardDiskDetection.getCheckTime());
             iotDvrDisk.setUpdateTime(LocalDateTime.now());
             diskArrayList.add(iotDvrDisk);

+ 27 - 1
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/video/service/impl/IotDvrHardDiskDetectionServiceImpl.java

@@ -17,7 +17,10 @@ import com.xunmei.mediator.api.video.mapper.IotDvrHardDiskDetectionMapper;
 import com.xunmei.mediator.api.video.service.IotDvrDiskService;
 import com.xunmei.mediator.api.video.service.IotDvrHardDiskDetectionLogService;
 import com.xunmei.mediator.api.video.service.IotDvrHardDiskDetectionService;
+import com.xunmei.mediator.domain.dto.disk.VideoRecorderHardDiskDetectionReq;
 import com.xunmei.mediator.util.CheckDataUtil;
+import com.xunmei.mediator.websocket.constant.WebSocketConstants;
+import com.xunmei.mediator.websocket.service.RouterService;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.dto.protection.ReceiveErrorDto;
@@ -42,7 +45,7 @@ import java.util.*;
  * @since 2024-01-30
  */
 @Service
-public class IotDvrHardDiskDetectionServiceImpl extends ServiceImpl<IotDvrHardDiskDetectionMapper, IotDvrHardDiskDetection> implements IotDvrHardDiskDetectionService {
+public class IotDvrHardDiskDetectionServiceImpl extends ServiceImpl<IotDvrHardDiskDetectionMapper, IotDvrHardDiskDetection> implements IotDvrHardDiskDetectionService, RouterService {
 
     @Resource
     RemoteOrgService remoteOrgService;
@@ -57,6 +60,29 @@ public class IotDvrHardDiskDetectionServiceImpl extends ServiceImpl<IotDvrHardDi
     private IotAlarmDataService iotAlarmDataService;
 
     @Override
+    public String routerKey() {
+        StringJoiner sj = new StringJoiner(",");
+        sj.add(WebSocketConstants.DISK_STATUS);
+        return sj.toString();
+    }
+
+    @Override
+    public Object execute(String event, Object obj) {
+        try {
+            VideoRecorderHardDiskDetectionReq req = (VideoRecorderHardDiskDetectionReq) obj;
+            VideoRecorderHardDiskDetectionEditDto dto = new VideoRecorderHardDiskDetectionEditDto();
+            dto.setEquipmentCode(req.getDvsCode());
+            dto.setCheckStatus(req.getCheckStatus());
+            dto.setCheckTime(req.getCheckTime());
+            dto.setDetailInfo(req.getDetailInfo());
+
+            return saveData(dto, "");
+        } catch (IllegalAccessException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Override
     public IotDvrHardDiskDetection findTopByEquipmentCodeAndOrgId(String equipmentCode, Long orgId) {
         return lambdaQuery()
                 .eq(IotDvrHardDiskDetection::getEquipmentCode, equipmentCode)

+ 13 - 4
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/video/service/impl/VideoDiagnosisRecordServiceImpl.java

@@ -19,6 +19,7 @@ import com.xunmei.mediator.api.video.service.IVideoDiagnosisRecordService;
 import com.xunmei.mediator.domain.dto.redis.RedisKey;
 import com.xunmei.mediator.domain.dto.videoDiagnosis.VideoDiagnosisDetailInfoVo;
 import com.xunmei.mediator.domain.dto.videoDiagnosis.VideoDiagnosisDto;
+import com.xunmei.mediator.domain.dto.videoDiagnosis.VideoDiagnosisReq;
 import com.xunmei.mediator.util.CheckDataUtil;
 import com.xunmei.mediator.util.RedisUtil;
 import com.xunmei.mediator.websocket.constant.WebSocketConstants;
@@ -77,12 +78,20 @@ public class VideoDiagnosisRecordServiceImpl extends ServiceImpl<VideoDiagnosisR
     @Override
     public Object execute(String event, Object obj) {
 
-        if (WebSocketConstants.VQD.equals(event)) {
-
-
+        try {
+            VideoDiagnosisReq req = (VideoDiagnosisReq) obj;
 
+            VideoDiagnosisDto dto = new VideoDiagnosisDto();
+            dto.setEquipmentCode(req.getDvsCode());
+            dto.setChannelCode(req.getIndex());
+            dto.setIsAlarm(req.getIsAlarm());
+            dto.setImgUrl(req.getImgUrl());
+            dto.setAlarmTime(req.getAlarmTime());
+            dto.setDetailInfo(req.getDetailInfo());
+            return saveData(dto, "");
+        } catch (IllegalAccessException | ParseException e) {
+            throw new RuntimeException(e);
         }
-        return null;
     }
 
     @Override

+ 40 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/domain/dto/disk/VideoRecorderHardDiskDetectionReq.java

@@ -0,0 +1,40 @@
+package com.xunmei.mediator.domain.dto.disk;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+@Data
+public class VideoRecorderHardDiskDetectionReq {
+
+    /**
+     * {
+     *     "dvsCode":"ba8a6246-a0da-b238-9d83-935746d5d003",  //录像机编号
+     *     "checkTime":"2024-07-02T14:18:32",  // 检测时间
+     *     "checkStatus":0,   // 0:检测成功 | 1: 检测失败
+     *     "detailInfo":{
+     *       "state":0  //0:正常 | 1:异常
+     *       "diskSerialNum":"sdsd22232",//硬盘序列号
+     *       "name":"D",//widnows D E F信息    linux dev/hda0 dev/hda1
+     *       "diskFormat":"TFS",//磁盘格式
+     *       "totalBytes":1231312312312,//驱动器总空间		单位Bytes
+     *       "availableBytes":123132,//驱动器可用空间		单位Bytes
+     *       "freeBytes":123132,//剩余空间		单位Bytes
+     *       "originState":0,//0:正常 1:不存在 2:未格式化 3:休眠 4:正在维修 5:报警 6:错误 7:排除 9:未知
+     *     }
+     *   }
+     */
+    @ApiModelProperty("录像机编号")
+    private String dvsCode;
+
+    @ApiModelProperty("检测状态;0:检测成功、1:检测失败")
+    private Integer checkStatus;
+
+    @ApiModelProperty("检测时间")
+    private Date checkTime;
+
+    @ApiModelProperty("硬盘当前状态信息")
+    private List<Map<String, Object>> detailInfo;
+}

+ 1 - 15
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/domain/dto/videoDiagnosis/VideoDiagnosisReq.java

@@ -1,8 +1,5 @@
 package com.xunmei.mediator.domain.dto.videoDiagnosis;
 
-import com.alibaba.fastjson.JSON;
-import com.xunmei.mediator.domain.dto.redis.RedisKey;
-import com.xunmei.system.api.function.IRedisCompare;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
@@ -15,7 +12,7 @@ import java.util.List;
 @AllArgsConstructor
 @NoArgsConstructor
 @Builder
-public class VideoDiagnosisReq implements IRedisCompare {
+public class VideoDiagnosisReq{
 
     @ApiModelProperty(value = "录像机编号")
     private String dvsCode;
@@ -35,15 +32,4 @@ public class VideoDiagnosisReq implements IRedisCompare {
     @ApiModelProperty(value = "详情")
     private List<String> detailInfo;
 
-
-
-    @Override
-    public String toKey() {
-        return RedisKey.VIDEO_DIAGNOSIS_CHECK_KEY;
-    }
-
-    @Override
-    public String toCompareString() {
-        return JSON.toJSONString(this);
-    }
 }

+ 5 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/websocket/constant/WebSocketConstants.java

@@ -96,6 +96,11 @@ public interface WebSocketConstants {
      */
     String VQD = "vqd";
 
+    /**
+     * 客户端主动上报 硬盘检测结果 事件名称
+     */
+    String DISK_STATUS = "diskStatus";
+