浏览代码

录像诊断

jiawuxian 1 年之前
父节点
当前提交
b2fe2d68f1
共有 25 个文件被更改,包括 506 次插入0 次删除
  1. 4 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/video/MediatorVideoIntegrityCheck.java
  2. 2 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/VideoDaysCheckController.java
  3. 50 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/VideoDiagnosisController.java
  4. 2 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/VideoDiagnosisRecordController.java
  5. 2 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/VideoIntegrityCheckAppController.java
  6. 2 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/VideoIntegrityCheckWebController.java
  7. 17 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/dto/videoDiagnosis/VideoDiagnosisWebPageDto.java
  8. 31 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotDvrChannelMapper.java
  9. 2 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/VideoDaysCheckService.java
  10. 2 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/VideoDiagnosisRecordService.java
  11. 26 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/VideoDiagnosisService.java
  12. 2 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/VideoIntegrityCheckService.java
  13. 2 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/VideoRecorderHardDiskDetectionService.java
  14. 2 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/VideoDaysCheckServiceImpl.java
  15. 2 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/VideoDiagnosisRecordServiceImpl.java
  16. 24 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/VideoDiagnosisServiceImpl.java
  17. 2 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/VideoIntegrityCheckServiceImpl.java
  18. 2 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/VideoRecorderHardDiskDetectionServiceImpl.java
  19. 37 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/videoDiagnosis/VideoDiagnosisIntegrityVo.java
  20. 43 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/videoDiagnosis/VideoDiagnosisQualityVo.java
  21. 20 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/videoDiagnosis/VideoDiagnosisStorageVo.java
  22. 40 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/videoDiagnosis/VideoDiagnosisWebPageVo.java
  23. 28 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/videoDiagnosis/VideoDiagnosisWebVo.java
  24. 30 0
      soc-modules/soc-modules-iot/src/main/resources/bootstrap.yml
  25. 132 0
      soc-modules/soc-modules-iot/src/main/resources/mapper/IotDvrChannelMapper.xml

+ 4 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/video/MediatorVideoIntegrityCheck.java

@@ -69,6 +69,10 @@ public class MediatorVideoIntegrityCheck extends BaseEntity implements Serializa
     @TableField("lose_span")
     private String loseSpan;
 
+    @ApiModelProperty(value = "丢失时长,分钟")
+    @TableField("lose_duration")
+    private Integer loseDuration;
+
     @ApiModelProperty(value = "录像情况检查日期")
     @TableField("record_date")
     private LocalDate recordDate;

+ 2 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/VideoDaysCheckController.java

@@ -10,6 +10,7 @@ import com.xunmei.iot.vo.videoDays.VideoDayCheckWebDetailVo;
 import com.xunmei.iot.vo.videoDays.VideoDayCheckWebPageVo;
 import com.xunmei.iot.vo.videoDays.VideoDaysCheckChannelDetailVo;
 import com.xunmei.iot.vo.videoDays.VideoDaysCheckPageVo;
+import org.apache.http.annotation.Obsolete;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -23,6 +24,7 @@ import org.springframework.web.bind.annotation.*;
  */
 @RestController
 @RequestMapping("/VideoDaysCheck")
+@Obsolete
 public class VideoDaysCheckController {
 
     @Autowired

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

@@ -0,0 +1,50 @@
+package com.xunmei.iot.controller;
+
+
+import com.xunmei.common.core.web.domain.AjaxResult;
+import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.iot.dto.videoDiagnosis.VideoDiagnosisWebPageDto;
+import com.xunmei.iot.service.VideoDiagnosisService;
+import com.xunmei.iot.vo.videoDays.VideoDayCheckWebDetailVo;
+import com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisWebPageVo;
+import com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisWebVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 录像诊断
+ *
+ * @author yzl
+ * @since 2022-07-26
+ */
+@RestController
+@RequestMapping("/VideoDiagnosis")
+public class VideoDiagnosisController {
+
+    @Autowired
+    private VideoDiagnosisService videoDiagnosisService;
+
+//    @PostMapping("/page")
+//    public TableDataInfo<VideoDaysCheckPageVo> page(@RequestBody VideoDayCheckPageDto request) throws Exception {
+//        TableDataInfo<VideoDaysCheckPageVo> pageData = this.videoDaysCheckService.getPageData(request);
+//        return pageData;
+//    }
+//
+//    @GetMapping("/channelDetail/{id}")
+//    public AjaxResult info(@PathVariable("id") String id) {
+//        VideoDaysCheckChannelDetailVo data = this.videoDaysCheckService.getChannelDetailData(id);
+//        return AjaxResult.success(data);
+//    }
+
+    @PostMapping("/web/page")
+    public TableDataInfo<VideoDiagnosisWebPageVo> webPage(@RequestBody VideoDiagnosisWebPageDto pageDto) {
+        TableDataInfo<VideoDiagnosisWebPageVo> page = this.videoDiagnosisService.getPageData(pageDto);
+        return page;
+    }
+
+    @GetMapping("/web/detail/{hostCode}/{channelCode}")
+    public AjaxResult webInfo(@PathVariable("hostCode") String hostCode, @PathVariable("channelCode") String channelCode) {
+        VideoDiagnosisWebVo detailVo = this.videoDiagnosisService.getDetail(hostCode, channelCode);
+        return AjaxResult.success(detailVo);
+    }
+}

+ 2 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/VideoDiagnosisRecordController.java

@@ -14,6 +14,7 @@ import com.xunmei.system.api.model.LoginUser;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.http.annotation.Obsolete;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -28,6 +29,7 @@ import java.util.Optional;
 @Api(description = "中台", tags = {"视频质量检测"})
 @RestController
 @RequestMapping({"/videoDiagnosisRecord"})
+@Obsolete
 class VideoDiagnosisRecordController {
 
     @Autowired

+ 2 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/VideoIntegrityCheckAppController.java

@@ -9,6 +9,7 @@ import com.xunmei.iot.service.VideoDaysCheckService;
 import com.xunmei.iot.service.VideoIntegrityCheckService;
 import com.xunmei.iot.vo.ChannelSingleDetailVo;
 import com.xunmei.iot.vo.videoIntegrity.VideoIntegrityCheckPageVo;
+import org.apache.http.annotation.Obsolete;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -22,6 +23,7 @@ import org.springframework.web.bind.annotation.*;
  */
 @RestController
 @RequestMapping("/app/videoIntegrity")
+@Obsolete
 public class VideoIntegrityCheckAppController {
 
     @Autowired

+ 2 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/VideoIntegrityCheckWebController.java

@@ -8,6 +8,7 @@ import com.xunmei.iot.vo.videoIntegrity.VideoIntegrityCheckWebPageVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.http.annotation.Obsolete;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -20,6 +21,7 @@ import java.time.temporal.ChronoUnit;
 @Api(description = "中台", tags = {"录像完整性"})
 @RestController
 @RequestMapping("/videoIntegrity")
+@Obsolete
 class VideoIntegrityCheckWebController {
     @Autowired
     VideoIntegrityCheckService videoIntegrityCheckService;

+ 17 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/dto/videoDiagnosis/VideoDiagnosisWebPageDto.java

@@ -0,0 +1,17 @@
+package com.xunmei.iot.dto.videoDiagnosis;
+
+import com.xunmei.common.core.web.domain.PageDto;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class VideoDiagnosisWebPageDto extends PageDto {
+    @ApiModelProperty(value = "监控主机")
+    private String hostName;
+
+    @ApiModelProperty(value = "通道")
+    private String channelName;
+
+    @ApiModelProperty(value = "状态")
+    private Integer state;
+}

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

@@ -0,0 +1,31 @@
+package com.xunmei.iot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xunmei.common.core.domain.iot.domain.IotDvrChannel;
+import com.xunmei.common.core.domain.iot.domain.IotDvrDisk;
+import com.xunmei.iot.dto.dvrDisk.DvrDiskAlarmHistoryPageDto;
+import com.xunmei.iot.dto.dvrDisk.DvrDiskPageDto;
+import com.xunmei.iot.dto.videoDiagnosis.VideoDiagnosisWebPageDto;
+import com.xunmei.iot.vo.dvrDisk.DvrDiskAlarmHistoryPageVo;
+import com.xunmei.iot.vo.dvrDisk.DvrDiskPageVo;
+import com.xunmei.iot.vo.dvrDisk.DvrDiskStatisticVo;
+import com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisWebPageVo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author test
+ * @since 2024-02-20
+ */
+public interface IotDvrChannelMapper extends BaseMapper<IotDvrChannel> {
+
+    Page<VideoDiagnosisWebPageVo>  selectPage(@Param("page") Page<DvrDiskPageVo> page,
+                                                  @Param("pageDto") VideoDiagnosisWebPageDto pageDto,
+                                                  @Param("orgPath") String orgPath);
+
+    DvrDiskStatisticVo diskStatistic(@Param("pageDto") DvrDiskPageDto request,@Param("orgPath") String orgPath);
+}

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

@@ -9,6 +9,7 @@ import com.xunmei.iot.vo.videoDays.VideoDayCheckWebDetailVo;
 import com.xunmei.iot.vo.videoDays.VideoDayCheckWebPageVo;
 import com.xunmei.iot.vo.videoDays.VideoDaysCheckChannelDetailVo;
 import com.xunmei.iot.vo.videoDays.VideoDaysCheckPageVo;
+import org.apache.http.annotation.Obsolete;
 
 /**
  * <p>
@@ -18,6 +19,7 @@ import com.xunmei.iot.vo.videoDays.VideoDaysCheckPageVo;
  * @author yzl
  * @since 2022-07-26
  */
+@Obsolete
 public interface VideoDaysCheckService extends IService<MediatorVideoDaysCheck> {
 
     TableDataInfo<VideoDaysCheckPageVo> getPageData(VideoDayCheckPageDto request);

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

@@ -9,6 +9,7 @@ import com.xunmei.iot.dto.videoDiagnosisRecord.VideoDiagnosisRecordPageDto;
 import com.xunmei.iot.vo.videoDiagnosisRecord.VideoDiagnosisRecordAlarmHistoryVo;
 import com.xunmei.iot.vo.videoDiagnosisRecord.VideoDiagnosisRecordHistoryVo;
 import com.xunmei.iot.vo.videoDiagnosisRecord.VideoDiagnosisRecordPageVo;
+import org.apache.http.annotation.Obsolete;
 
 
 import java.util.Date;
@@ -18,6 +19,7 @@ import java.util.List;
  * @author jingyuanchao.
  * @date 2022/4/7 10:30
  */
+@Obsolete
 public interface VideoDiagnosisRecordService extends IService<MediatorVideoDiagnosisRecord> {
     TableDataInfo<VideoDiagnosisRecordPageVo> getRecordPageList(VideoDiagnosisRecordPageDto request);
 

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

@@ -0,0 +1,26 @@
+package com.xunmei.iot.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.iot.domain.IotDvrChannel;
+import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.iot.dto.videoDiagnosis.VideoDiagnosisWebPageDto;
+import com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisWebPageVo;
+import com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisWebVo;
+import org.apache.http.annotation.Obsolete;
+
+/**
+ * <p>
+ * 录像机天数检查 服务类
+ * </p>
+ *
+ * @author yzl
+ * @since 2022-07-26
+ */
+@Obsolete
+public interface VideoDiagnosisService extends IService<IotDvrChannel> {
+
+    TableDataInfo<VideoDiagnosisWebPageVo> getPageData(VideoDiagnosisWebPageDto request);
+
+    VideoDiagnosisWebVo getDetail(String equipmentCode,String channelCode);
+
+}

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

@@ -9,6 +9,7 @@ import com.xunmei.iot.dto.videoIntegrity.VideoIntegrityCheckWebPageDto;
 import com.xunmei.iot.vo.ChannelSingleDetailVo;
 import com.xunmei.iot.vo.videoIntegrity.VideoIntegrityCheckPageVo;
 import com.xunmei.iot.vo.videoIntegrity.VideoIntegrityCheckWebPageVo;
+import org.apache.http.annotation.Obsolete;
 
 import java.time.LocalDate;
 import java.util.Date;
@@ -22,6 +23,7 @@ import java.util.List;
  * @author yzl
  * @since 2022-07-26
  */
+@Obsolete
 public interface VideoIntegrityCheckService extends IService<MediatorVideoIntegrityCheck> {
 
     TableDataInfo<VideoIntegrityCheckPageVo> getPageData(VideoIntegrityCheckPageDto request);

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

@@ -5,7 +5,9 @@ import com.xunmei.common.core.domain.video.IotDvrHardDiskDetection;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.iot.dto.dvrDisk.DvrDiskAppPageDto;
 import com.xunmei.iot.vo.dvrDisk.DvrDiskDetectionPageVo;
+import org.apache.http.annotation.Obsolete;
 
+@Obsolete
 public interface VideoRecorderHardDiskDetectionService extends IService<IotDvrHardDiskDetection> {
     TableDataInfo<DvrDiskDetectionPageVo> page(DvrDiskAppPageDto request);
 }

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

@@ -18,6 +18,7 @@ import com.xunmei.iot.vo.videoDays.*;
 import com.xunmei.system.api.RemoteDeviceService;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
+import org.apache.http.annotation.Obsolete;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -35,6 +36,7 @@ import java.util.stream.Stream;
  * @since 2022-07-26
  */
 @Service
+@Obsolete
 public class VideoDaysCheckServiceImpl extends ServiceImpl<VideoDaysCheckMapper, MediatorVideoDaysCheck> implements VideoDaysCheckService {
     @Autowired
     private VideoDaysCheckMapper videoDaysCheckMapper;

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

@@ -20,6 +20,7 @@ import com.xunmei.iot.vo.videoDiagnosisRecord.VideoDiagnosisRecordHistoryVo;
 import com.xunmei.iot.vo.videoDiagnosisRecord.VideoDiagnosisRecordPageVo;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
+import org.apache.http.annotation.Obsolete;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -35,6 +36,7 @@ import java.util.stream.Collectors;
  * @since 2022-08-22
  */
 @Service
+@Obsolete
 public class VideoDiagnosisRecordServiceImpl extends ServiceImpl<VideoDiagnosisRecordMapper, MediatorVideoDiagnosisRecord>
         implements VideoDiagnosisRecordService {
     @Autowired

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

@@ -0,0 +1,24 @@
+package com.xunmei.iot.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.domain.iot.domain.IotDvrChannel;
+import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.iot.dto.videoDiagnosis.VideoDiagnosisWebPageDto;
+import com.xunmei.iot.mapper.IotDvrChannelMapper;
+import com.xunmei.iot.service.VideoDiagnosisService;
+import com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisWebPageVo;
+import com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisWebVo;
+import org.springframework.stereotype.Service;
+
+@Service
+public class VideoDiagnosisServiceImpl extends ServiceImpl<IotDvrChannelMapper, IotDvrChannel> implements VideoDiagnosisService {
+    @Override
+    public TableDataInfo<VideoDiagnosisWebPageVo> getPageData(VideoDiagnosisWebPageDto request) {
+        return null;
+    }
+
+    @Override
+    public VideoDiagnosisWebVo getDetail(String equipmentCode, String channelCode) {
+        return null;
+    }
+}

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

@@ -31,6 +31,7 @@ import com.xunmei.system.api.domain.SysDevice;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.dto.SysDeviceInnerListDto;
 import io.netty.util.internal.StringUtil;
+import org.apache.http.annotation.Obsolete;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -48,6 +49,7 @@ import java.util.*;
  * @since 2022-07-26
  */
 @Service
+@Obsolete
 public class VideoIntegrityCheckServiceImpl extends ServiceImpl<VideoIntegrityCheckMapper, MediatorVideoIntegrityCheck>
         implements VideoIntegrityCheckService {
     @Resource

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

@@ -14,6 +14,7 @@ import com.xunmei.iot.mapper.VideoRecorderHardDiskDetectionMapper;
 import com.xunmei.iot.service.VideoRecorderHardDiskDetectionService;
 import com.xunmei.iot.vo.dvrDisk.DetailVo;
 import com.xunmei.iot.vo.dvrDisk.DvrDiskDetectionPageVo;
+import org.apache.http.annotation.Obsolete;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -21,6 +22,7 @@ import java.util.Date;
 import java.util.List;
 
 @Service
+@Obsolete
 public class VideoRecorderHardDiskDetectionServiceImpl
         extends ServiceImpl<VideoRecorderHardDiskDetectionMapper, IotDvrHardDiskDetection>
         implements VideoRecorderHardDiskDetectionService {

+ 37 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/videoDiagnosis/VideoDiagnosisIntegrityVo.java

@@ -0,0 +1,37 @@
+package com.xunmei.iot.vo.videoDiagnosis;
+
+import java.util.Date;
+import java.util.List;
+
+import com.alibaba.fastjson.JSON;
+import lombok.Data;
+
+/**
+ * 视频诊断详情-录像完整性
+ */
+@Data
+public class VideoDiagnosisIntegrityVo {
+    private Date recordDate;
+
+    private int state;
+
+    private String cause;
+
+    private Integer lostDuration;
+
+    private Date updateTime;
+
+    private List<TimeRange> losts;
+
+    public void setLosts(String info) {
+        this.losts = JSON.parseArray(info, TimeRange.class);
+    }
+
+    @Data
+    private class TimeRange {
+        private String st;
+
+        private String et;
+    }
+
+}

+ 43 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/videoDiagnosis/VideoDiagnosisQualityVo.java

@@ -0,0 +1,43 @@
+package com.xunmei.iot.vo.videoDiagnosis;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+/**
+ * 视频诊断详情-录像质量
+ */
+@Data
+public class VideoDiagnosisQualityVo {
+    @ApiModelProperty("质量")
+    private int quality;
+
+    @ApiModelProperty("更新时间")
+    private Date updateTime;
+
+    @ApiModelProperty("异常图片")
+    private String image;
+
+    @ApiModelProperty("信号丢失")
+    private int signalLost;
+
+    @ApiModelProperty("遮挡")
+    private int occlude;
+
+    @ApiModelProperty("亮度")
+    private int brightness;
+
+    @ApiModelProperty("偏色")
+    private int colorCast;
+
+    @ApiModelProperty("老奸巨猾")
+    private int snowflake;
+
+    @ApiModelProperty("条纹")
+    private int stripe;
+
+    @ApiModelProperty("对比度")
+    private int contrast;
+
+    @ApiModelProperty("模糊")
+    private int blurry;
+}

+ 20 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/videoDiagnosis/VideoDiagnosisStorageVo.java

@@ -0,0 +1,20 @@
+package com.xunmei.iot.vo.videoDiagnosis;
+
+import java.util.Date;
+import java.util.List;
+
+import lombok.Data;
+
+/**
+ * 视频诊断详情-录像存储
+ */
+@Data
+public class VideoDiagnosisStorageVo {
+    private Integer planDays;
+
+    private  Integer realDays;
+
+    private Date earliestDate;
+
+    private List<String> lostDate;
+}

+ 40 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/videoDiagnosis/VideoDiagnosisWebPageVo.java

@@ -0,0 +1,40 @@
+package com.xunmei.iot.vo.videoDiagnosis;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class VideoDiagnosisWebPageVo {
+    @ApiModelProperty("主机code")
+    private String hostCode;
+
+    @ApiModelProperty("通道code")
+    private String channelCode;
+
+    @ApiModelProperty("组织机构")
+    private String orgName;
+
+    @ApiModelProperty("通道名称")
+    private String channelName;
+
+    @ApiModelProperty("IP地址")
+    private String channelIp;
+
+    @ApiModelProperty("录像丢失时长")
+    private String loseDuration;
+
+    @ApiModelProperty("计划存储(天)")
+    private String planDays;
+
+    @ApiModelProperty("实际存储(天)")
+    private String realDays;
+
+    @ApiModelProperty("无视频信号")
+    private int signalLost;
+
+    @ApiModelProperty("视频遮挡")
+    private int occlude;
+
+    @ApiModelProperty("视频质量")
+    private int quality;
+}

+ 28 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/videoDiagnosis/VideoDiagnosisWebVo.java

@@ -0,0 +1,28 @@
+package com.xunmei.iot.vo.videoDiagnosis;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 视频诊断详情
+ */
+@Data
+public class VideoDiagnosisWebVo {
+    @ApiModelProperty("监控主机名称")
+    private String hostName;
+
+    @ApiModelProperty("通道名称")
+    private String channelName;
+
+    @ApiModelProperty("通道IP")
+    private String channelIp;
+
+    @ApiModelProperty("质量")
+    private VideoDiagnosisQualityVo quality;
+
+    @ApiModelProperty("完整性")
+    private VideoDiagnosisIntegrityVo integrity;
+
+    @ApiModelProperty("存储")
+    private VideoDiagnosisStorageVo storage;
+}

+ 30 - 0
soc-modules/soc-modules-iot/src/main/resources/bootstrap.yml

@@ -0,0 +1,30 @@
+# Tomcat
+server:
+  port: 9010
+
+# Spring
+spring:
+  application:
+    # 应用名称
+    name: soc-iot
+  profiles:
+    # 环境配置
+    active: dev
+  cloud:
+    nacos:
+      discovery:
+        namespace: 73dccc51-5e69-4c22-985e-733be898a242
+        # 服务注册地址
+        server-addr: 10.87.21.103:8847
+      config:
+        namespace: 73dccc51-5e69-4c22-985e-733be898a242
+        # 配置中心地址
+        server-addr: 10.87.21.103:8847
+        # 配置文件格式
+        file-extension: yml
+        # 共享配置
+        shared-configs:
+          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
+logging:
+  file:
+    name: logs/${spring.application.name}/info.log

+ 132 - 0
soc-modules/soc-modules-iot/src/main/resources/mapper/IotDvrChannelMapper.xml

@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xunmei.iot.mapper.IotDvrChannelMapper">
+    <resultMap id="alarmHostStatusMap" type="com.xunmei.iot.vo.dvrDisk.DvrDiskPageVo">
+        <result column="id" property="id"/>
+        <result column="equipmentCode" property="equipmentCode"/>
+        <result column="equipmentName" property="equipmentName"/>
+        <result column="ip" property="ip"/>
+        <result column="orgId" property="orgId"/>
+        <result column="orgName" property="orgName"/>
+        <result column="status" property="status"/>
+        <result column="alarmTime" property="alarmTime"/>
+        <result column="detailInfo" property="detailInfo"
+                typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
+        <collection property="diskInfos" column="equipmentCode=equipmentCode"
+                    select="selectDiskInfo">
+            <result column="id" property="id"/>
+            <result column="available" property="available"/>
+            <result column="diskSerialNum" property="diskSerialNum"/>
+            <result column="total" property="total"/>
+            <result column="hostCode" property="hostCode"/>
+            <result column="orgId" property="orgId"/>
+        </collection>
+    </resultMap>
+    <select id="selectPage" resultType="alarmHostStatusMap">
+        SELECT
+        c.host_code,
+        c.channel_code,
+        c.org_name,
+        c.channel_name,
+        c.channel_addr as channelIP,
+        vic.lose_duration,
+        vdc.plan_days,
+        vdc.real_days,
+        vdr.signal_lost,
+        vdr.occlude,
+        if(vdr.brightness+vdr.color_cast+vdr.snowflake+vdr.stripe+vdr.contrast+vdr.blurry>1,1,0) as quality
+        from  iot_dvr_channel c
+        INNER JOIN iot_device d on c.host_code=d.equipment_code
+        left JOIN mediator_video_days_check vdc on c.host_code=vdc.equipment_code and c.channel_code=vdc.channel_code
+        left JOIN mediator_video_integrity_check vic on c.host_code=vic.equipment_code and c.channel_code=vic.channel_code
+        left JOIN mediator_video_diagnosis_record vdr on c.host_code=vdr.equipment_code and c.channel_code=vdr.channel_code
+        <if test="pageDto.checkSub==true">
+            and c.org_path like concat(#{orgPath},"%")
+        </if>
+        <if test="pageDto.checkSub==false">
+            and c.org_id = #{pageDto.orgId}
+        </if>
+        <if test="pageDto.equipmentName!=null and pageDto.equipmentName!=''">
+            and d.equipment_name like concat('%', #{pageDto.equipmentName},'%')
+        </if>
+        <if test="pageDto.channelName!=null and pageDto.channelName!=''">
+            and d.channel_name like concat('%', #{pageDto.channelName},'%')
+        </if>
+        <if test="pageDto.status !=null">
+            and dhd.`status` = #{pageDto.status}
+        </if>
+        <if test="pageDto.alarmStartTime !=null">
+            and dhd.alarm_time >= #{pageDto.alarmStartTime}
+        </if>
+        <if test="pageDto.alarmEndTime !=null">
+            and #{pageDto.alarmEndTime}>= dhd.`alarm_time`
+        </if>
+        and d.deleted=0
+    </select>
+
+    <select id="selectDiskInfo" resultType="com.xunmei.common.core.domain.iot.domain.IotDvrDisk">
+        select id,
+               available,
+               `disk_serial_num` as diskSerialNum,
+               `str_name`        as `strName`,
+               `total`,
+               `host_code`       as `hostCode`,
+               `org_id`          as `orgId`
+        from iot_dvr_disk
+        where host_code = #{equipmentCode}
+    </select>
+    <select id="getRecordAlarmHistoryList"
+            resultType="com.xunmei.iot.vo.dvrDisk.DvrDiskAlarmHistoryPageVo">
+        SELECT
+        r.id,
+        r.org_id AS orgId,
+        r.org_name AS orgName,
+        r.device_name AS deviceName,
+        r.alarm_status as status,
+        r.alarm_type AS alarmType,
+        r.alarm_start_time AS alarmStartTime,
+        r.alarm_end_time AS alarmEndTime,
+        r.alarm_detail as alarmDetail
+        FROM
+        t_host_alarm_record r
+        where r.device_type=3713671510851584 AND r.assets_type=3713670431768576
+
+        <if test="pageDto.deviceId != null">
+            and r.device_id = #{pageDto.deviceId}
+        </if>
+        <if test="pageDto.status != null">
+            and r.alarm_status = #{pageDto.status}
+        </if>
+        <if test="pageDto.diskName != null">
+            and r.alarm_detail like concat('%"',#{pageDto.diskName},'"%')
+        </if>
+        <if test="pageDto.alarmCode != null">
+            and r.alarm_code= #{pageDto.alarmCode}
+        </if>
+
+        <if test="pageDto.alarmStartTime != null and pageDto.alarmEndTime != null">
+            and ((r.alarm_start_time is not null and r.alarm_end_time is not null and
+            r.alarm_end_time>=#{pageDto.alarmStartTime} and #{pageDto.alarmEndTime}>=r.alarm_start_time)
+            or (r.alarm_end_time is null and r.alarm_start_time>= #{pageDto.alarmStartTime} and #{pageDto.alarmEndTime}>=r.alarm_start_time )
+            or (r.alarm_start_time is null and r.alarm_end_time>= #{pageDto.alarmStartTime} and #{pageDto.alarmEndTime}>=r.alarm_end_time)
+            )
+        </if>
+        order by r.alarm_start_time desc
+    </select>
+
+    <select id="diskStatistic" resultType="com.xunmei.iot.vo.dvrDisk.DvrDiskStatisticVo">
+        SELECT count(0) AS dvrTotal,
+               SUM(DD.count) AS diskTotal,
+               SUM(dd.exceptionCount) as diskExceptionCount
+        FROM iot_device d
+        LEFT JOIN (SELECT equipment_code,count(0) as count,SUM(if(state=1,1,0)) as exceptionCount from iot_dvr_disk WHERE deleted=0 )  dd on d.equipment_code =dd.equipment_code
+        where  d.deleted=0 and d.category_id=#{pageDto.categoryId}
+        <if test="pageDto.checkSub==true">
+            and d.org_path like concat(#{orgPath},"%")
+        </if>
+        <if test="pageDto.checkSub==false">
+            and d.org_id = #{request.orgId}
+        </if>
+    </select>
+
+</mapper>