Jelajahi Sumber

Merge remote-tracking branch 'origin/V0.0.6-iot' into V0.0.6-iot

jingyuanchao 1 tahun lalu
induk
melakukan
dafc22c957

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

@@ -57,11 +57,11 @@ public class IotDvrDisk implements Serializable {
 
     @ApiModelProperty(value = "硬盘总的空间大小(单位:MB)")
     @TableField("total")
-    private String total;
+    private Integer total;
 
     @ApiModelProperty(value = "硬盘可用空间大小(单位:MB)")
     @TableField("available")
-    private String available;
+    private Integer available;
 
     @ApiModelProperty(value = "硬盘状态。0:正常,1:异常")
     @TableField("state")

+ 1 - 1
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/enums/CategoryDataEnum.java

@@ -16,7 +16,7 @@ public enum CategoryDataEnum {
 
     IOT_BOX(3712199107215361L, "IOT BOX"),
     HOST_DEVICE(3713670431768576L, "主机设备类"),
-    MONITOR_HOST_DEVICE(3713671510851584L, "监控主机"),
+    MONITOR_HOST_DEVICE(1L, "监控主机"),
     CAMERA(3713671711473664L, "摄像头"),
     ALARM_HOST_DEVICE(3713671920926720L, "报警主机"),
     TALK_HOST_DEVICE(3713672073773056L, "对讲主机"),

+ 52 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/enums/iot/NetStatusEnum.java

@@ -0,0 +1,52 @@
+package com.xunmei.common.core.enums.iot;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * 常用设备
+ */
+
+@Getter
+@AllArgsConstructor
+public enum NetStatusEnum {
+
+    Normal(0, "正常"),
+    Exception(1, "异常"),
+    BreakOff(2, "中断")
+    ;
+
+
+    /**
+     * 所有枚举
+     */
+    private static final Map<Integer, NetStatusEnum> enumMap = new LinkedHashMap<>();
+
+    static {
+        for (NetStatusEnum enumNode : NetStatusEnum.values()) {
+            enumMap.put(enumNode.getId(), enumNode);
+        }
+    }
+
+    private final Integer id;
+    private final String name;
+
+    /**
+     * 根据code获取name
+     */
+    public static String getName(Long code) {
+        NetStatusEnum e = enumMap.get(code);
+        return e != null ? e.getName() : "";
+    }
+
+    /**
+     * 根据code获取name
+     */
+    public static NetStatusEnum getOrgTypeEnum(int code) {
+        return enumMap.get(code);
+    }
+
+}

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

@@ -1,7 +1,6 @@
 package com.xunmei.iot.controller;
 
-import cn.hutool.core.date.DateTime;
-import cn.hutool.core.date.DateUtil;
+import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.iot.dto.dvrDisk.DvrDiskAlarmHistoryPageDto;
 import com.xunmei.iot.dto.dvrDisk.DvrDiskPageDto;
@@ -15,54 +14,55 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
-import java.util.Date;
-import java.util.TimeZone;
 
 @Slf4j
 @Api(description = "中台", tags = {"录像机硬盘检测"})
 @RestController
 @RequestMapping({"/dvrdisk"})
 class DvrDiskController {
-   @Autowired
-   IotDvsDiskService dvrDiskService;
+    @Autowired
+    IotDvsDiskService dvrDiskService;
 
-   @Resource
-   VideoRecorderHardDiskDetectionService videoRecorderHardDiskDetectionService;
+    @Resource
+    VideoRecorderHardDiskDetectionService videoRecorderHardDiskDetectionService;
 
-   @ApiOperation("分页")
-   @PostMapping({"/web/find"})
-   TableDataInfo<DvrDiskPageVo> webPage(@RequestBody final DvrDiskPageDto request) {
-      if(request.getAlarmTime()!=null){
-         request.setRange(null);
-      }
-      if(request.getRange()!=null && request.getRange().length==2){
-         Date startTime = new DateTime(request.getRange()[0]).setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
-         request.setAlarmStartTime(DateUtil.beginOfDay(startTime));
-         Date endTime = new DateTime(request.getRange()[1]).setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
-         request.setAlarmEndTime(DateUtil.endOfDay(endTime));
-      }
+    @ApiOperation("分页")
+    @PostMapping({"/web/find"})
+    TableDataInfo<DvrDiskPageVo> webPage(@RequestBody final DvrDiskPageDto request) {
+//        if (request.getAlarmTime() != null) {
+//            request.setRange(null);
+//        }
+//        if (request.getRange() != null && request.getRange().length == 2) {
+//            Date startTime = new DateTime(request.getRange()[0]).setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+//            request.setAlarmStartTime(DateUtil.beginOfDay(startTime));
+//            Date endTime = new DateTime(request.getRange()[1]).setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+//            request.setAlarmEndTime(DateUtil.endOfDay(endTime));
+//        }
 
-      TableDataInfo<DvrDiskPageVo> page = this.dvrDiskService.selectAlarmHostStatus(request);
-      return page;
-   }
+        TableDataInfo<DvrDiskPageVo> page = this.dvrDiskService.selectHostPage(request);
+        return page;
+    }
 
-   @ApiOperation("历史")
-   @PostMapping({"/web/history"})
-   TableDataInfo<DvrDiskAlarmHistoryPageVo> history(@RequestBody final DvrDiskAlarmHistoryPageDto request) {
-      TableDataInfo<DvrDiskAlarmHistoryPageVo> page = dvrDiskService.getRecordAlarmHistoryList(request);
-      return page;
-   }
+    @ApiOperation("dvr硬盘统计,只按机构过滤")
+    @GetMapping({"/web/diskstatistic"})
+    AjaxResult diskStatistic(@RequestBody final DvrDiskPageDto request) {
+        return AjaxResult.success(this.dvrDiskService.diskStatistic(request));
+    }
 
-   @ApiOperation("分页")
-   @PostMapping({"/find"})
-   TableDataInfo<DvrDiskDetectionPageVo> page(@RequestBody final DvrDiskAppPageDto request) {
-      TableDataInfo<DvrDiskDetectionPageVo> page = this.videoRecorderHardDiskDetectionService.page(request);
-      return page;
-   }
+    @ApiOperation("历史")
+    @PostMapping({"/web/history"})
+    TableDataInfo<DvrDiskAlarmHistoryPageVo> history(@RequestBody final DvrDiskAlarmHistoryPageDto request) {
+        TableDataInfo<DvrDiskAlarmHistoryPageVo> page = dvrDiskService.getRecordAlarmHistoryList(request);
+        return page;
+    }
+
+    @ApiOperation("分页")
+    @PostMapping({"/find"})
+    TableDataInfo<DvrDiskDetectionPageVo> page(@RequestBody final DvrDiskAppPageDto request) {
+        TableDataInfo<DvrDiskDetectionPageVo> page = this.videoRecorderHardDiskDetectionService.page(request);
+        return page;
+    }
 }

+ 40 - 36
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/dto/dvrDisk/DvrDiskPageDto.java

@@ -28,44 +28,45 @@ public class DvrDiskPageDto extends PageDto {
 //            type = QueryConditionType.equal
 //    )
     private String equipmentCode;
+
     @ApiModelProperty("录像机的名称")
 //    @Query(
 //            type = QueryConditionType.like
 //    )
     private String equipmentName;
-    @ApiModelProperty("报警状态")
+//    @ApiModelProperty("报警状态")
 //    @Query(
 //            type = QueryConditionType.equal
 //    )
-    private AlarmStatus status;
-    @ApiModelProperty("报警/恢复时间")
-//    @Query(
-//            type = QueryConditionType.equalDate
-//    )
-    private Date alarmTime;
+//    private AlarmStatus status;
+//    @ApiModelProperty("报警/恢复时间")
+////    @Query(
+////            type = QueryConditionType.equalDate
+////    )
+//    private Date alarmTime;
 
-    @ApiModelProperty("报警/恢复开始-结束日期")
-    private Date[] range;
+//    @ApiModelProperty("报警/恢复开始-结束日期")
+//    private Date[] range;
 
-    /**
-     * 与alarmTime互斥,alarmTime优先
-     */
-    @ApiModelProperty("报警/恢复开始日期")
-//    @Query(
-//            type = QueryConditionType.geDate,column = "alarmTime"
-//    )
-    @JsonIgnore
-    private Date alarmStartTime;
-
-    /**
-     * 与alarmTime互斥,alarmTime优先
-     */
-    @ApiModelProperty("报警/恢复结束日期")
-//    @Query(
-//            type = QueryConditionType.leDate,column = "alarmTime"
-//    )
-    @JsonIgnore
-    private Date alarmEndTime;
+//    /**
+//     * 与alarmTime互斥,alarmTime优先
+//     */
+//    @ApiModelProperty("报警/恢复开始日期")
+////    @Query(
+////            type = QueryConditionType.geDate,column = "alarmTime"
+////    )
+//    @JsonIgnore
+//    private Date alarmStartTime;
+//
+//    /**
+//     * 与alarmTime互斥,alarmTime优先
+//     */
+//    @ApiModelProperty("报警/恢复结束日期")
+////    @Query(
+////            type = QueryConditionType.leDate,column = "alarmTime"
+////    )
+//    @JsonIgnore
+//    private Date alarmEndTime;
 
 
     @ApiModelProperty("所属机构")
@@ -74,16 +75,19 @@ public class DvrDiskPageDto extends PageDto {
 //    )
     private Long orgId;
 
-    @ApiModelProperty("上级银行")
-//    @Query(type = QueryConditionType.org, column = "orgId")
-    private Long parentId;
+//    @ApiModelProperty("上级银行")
+////    @Query(type = QueryConditionType.org, column = "orgId")
+//    private Long parentId;
 
     @ApiModelProperty("包含下级")
     private Boolean checkSub = false;
 
-    @ApiModelProperty("id")
-//    @Query(
-//            type = QueryConditionType.equal
-//    )
-    private String id;
+    @JsonIgnore
+    private Long categoryId;
+
+//    @ApiModelProperty("id")
+////    @Query(
+////            type = QueryConditionType.equal
+////    )
+//    private String id;
 }

+ 3 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotDvrDiskMapper.java

@@ -7,6 +7,7 @@ import com.xunmei.iot.dto.dvrDisk.DvrDiskAlarmHistoryPageDto;
 import com.xunmei.iot.dto.dvrDisk.DvrDiskPageDto;
 import com.xunmei.iot.vo.dvrDisk.DvrDiskPageVo;
 import com.xunmei.iot.vo.dvrDisk.DvrDiskAlarmHistoryPageVo;
+import com.xunmei.iot.vo.dvrDisk.DvrDiskStatisticVo;
 import org.apache.ibatis.annotations.Param;
 
 /**
@@ -24,4 +25,6 @@ public interface IotDvrDiskMapper extends BaseMapper<IotDvrDisk> {
     Page<DvrDiskPageVo>  selectHostPage(@Param("mePage") Page<DvrDiskPageVo> mePage,
                                                  @Param("pageDto") DvrDiskPageDto pageDto,
                                                @Param("orgPath") String orgPath);
+
+    DvrDiskStatisticVo diskStatistic(@Param("pageDto") DvrDiskPageDto request,@Param("orgPath") String orgPath);
 }

+ 5 - 1
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IotDvsDiskService.java

@@ -7,6 +7,7 @@ import com.xunmei.iot.dto.dvrDisk.DvrDiskAlarmHistoryPageDto;
 import com.xunmei.iot.dto.dvrDisk.DvrDiskPageDto;
 import com.xunmei.iot.vo.dvrDisk.DvrDiskPageVo;
 import com.xunmei.iot.vo.dvrDisk.DvrDiskAlarmHistoryPageVo;
+import com.xunmei.iot.vo.dvrDisk.DvrDiskStatisticVo;
 import org.apache.ibatis.annotations.Param;
 
 /**
@@ -14,6 +15,9 @@ import org.apache.ibatis.annotations.Param;
  * @date 2022/4/7 10:30
  */
 public interface IotDvsDiskService extends IService<IotDvrDisk> {
-    TableDataInfo<DvrDiskPageVo> selectAlarmHostStatus(@Param("pageDto") DvrDiskPageDto pageDto);
+    TableDataInfo<DvrDiskPageVo> selectHostPage(@Param("pageDto") DvrDiskPageDto pageDto);
+
     TableDataInfo<DvrDiskAlarmHistoryPageVo> getRecordAlarmHistoryList(DvrDiskAlarmHistoryPageDto request);
+
+    DvrDiskStatisticVo diskStatistic(DvrDiskPageDto request);
 }

+ 48 - 17
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotDvrDiskServiceImpl.java

@@ -9,6 +9,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.IotDvrDisk;
+import com.xunmei.common.core.enums.CategoryDataEnum;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.iot.dto.dvrDisk.DvrDiskAlarmHistoryPageDto;
 import com.xunmei.iot.dto.dvrDisk.DvrDiskPageDto;
@@ -17,6 +18,7 @@ import com.xunmei.iot.service.IotDvsDiskService;
 import com.xunmei.iot.vo.dvrDisk.DvrDiskPageVo;
 import com.xunmei.iot.vo.dvrDisk.DetailVo;
 import com.xunmei.iot.vo.dvrDisk.DvrDiskAlarmHistoryPageVo;
+import com.xunmei.iot.vo.dvrDisk.DvrDiskStatisticVo;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
 import org.apache.commons.lang3.StringUtils;
@@ -29,7 +31,7 @@ import java.util.TimeZone;
 
 /**
  * <p>
- *  服务实现类
+ * 服务实现类
  * </p>
  *
  * @author oygj
@@ -49,32 +51,61 @@ public class IotDvrDiskServiceImpl extends ServiceImpl<IotDvrDiskMapper, IotDvrD
             Date endTime = new DateTime(request.getAlarmTime()[1]).setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
             request.setAlarmEndTime(DateUtil.endOfDay(endTime));
         }
-        if(StringUtils.isEmpty(request.getDiskName())){
+        if (StringUtils.isEmpty(request.getDiskName())) {
             request.setDiskName(null);
         }
-        Page<DvrDiskAlarmHistoryPageVo> page =request.toPage();
-        page= baseMapper.getRecordAlarmHistoryList(page,request);
-        page.getRecords().forEach(c->{
-            if(StringUtils.isNotEmpty(c.getAlarmDetail())){
-               DetailVo detailVo=  JSON.parseObject(c.getAlarmDetail() , DetailVo.class);
-               c.setDiskName(detailVo.getName());
-               c.setDiskIndex(detailVo.getIndex());
+        Page<DvrDiskAlarmHistoryPageVo> page = request.toPage();
+        page = baseMapper.getRecordAlarmHistoryList(page, request);
+        page.getRecords().forEach(c -> {
+            if (StringUtils.isNotEmpty(c.getAlarmDetail())) {
+                DetailVo detailVo = JSON.parseObject(c.getAlarmDetail(), DetailVo.class);
+                c.setDiskName(detailVo.getName());
+                c.setDiskIndex(detailVo.getIndex());
             }
         });
         return TableDataInfo.success(page);
     }
 
-    @Override
-    public TableDataInfo<DvrDiskPageVo>  selectAlarmHostStatus(@Param("pageDto") DvrDiskPageDto pageDto){
 
-        String orgPath="";
-        if(pageDto.getCheckSub()){
-            SysOrg org= orgService.selectOrgById(pageDto.getOrgId(), SecurityConstants.INNER);
-            orgPath=org.getPath();
+    @Override
+    public TableDataInfo<DvrDiskPageVo> selectHostPage(@Param("pageDto") DvrDiskPageDto pageDto) {
+        String orgPath = "";
+        if (pageDto.getCheckSub()) {
+            SysOrg org = orgService.selectOrgById(pageDto.getOrgId(), SecurityConstants.INNER);
+            orgPath = org.getPath();
         }
-        Page<DvrDiskPageVo> page =pageDto.toPage();
-        page=baseMapper.selectHostPage(page,pageDto,orgPath);
+        pageDto.setCategoryId(CategoryDataEnum.MONITOR_HOST_DEVICE.getId());
+        Page<DvrDiskPageVo> page = pageDto.toPage();
+
+        page = baseMapper.selectHostPage(page, pageDto, orgPath);
+        page.getRecords().forEach(r -> {
+            if (ObjectUtil.isNotNull(r.getNetState())) {
+                r.setNetStateStr(r.getNetState().getText());
+            }
+
+            if (ObjectUtil.isNotEmpty(r.getDiskInfos())) {
+                r.setDiskCount(r.getDiskInfos().size());
+                r.setDiskExceptionCount((int) r.getDiskInfos().stream().filter(di -> ObjectUtil.equal(di.getState(), 1)).count());
+                r.setDiskTotalSize(r.getDiskInfos().stream().mapToInt(di -> di.getTotal()).sum());
+                int available = r.getDiskInfos().stream().mapToInt(di -> di.getAvailable()).sum();
+                r.setDiskUsedSize(r.getDiskTotalSize() - available);
+
+            }
 
+        });
         return TableDataInfo.success(page);
     }
+
+    @Override
+    public DvrDiskStatisticVo diskStatistic(DvrDiskPageDto pageDto) {
+        String orgPath = "";
+        if (pageDto.getCheckSub()) {
+            SysOrg org = orgService.selectOrgById(pageDto.getOrgId(), SecurityConstants.INNER);
+            orgPath = org.getPath();
+        }
+        pageDto.setCategoryId(CategoryDataEnum.MONITOR_HOST_DEVICE.getId());
+        DvrDiskStatisticVo vo = baseMapper.diskStatistic(pageDto, orgPath);
+        return vo;
+    }
+
 }

+ 0 - 4
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/dvrDisk/Dvr.java

@@ -1,4 +0,0 @@
-package com.xunmei.iot.vo.dvrDisk;
-
-public class Dvr {
-}

+ 43 - 11
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/dvrDisk/DvrDiskPageVo.java

@@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.xunmei.common.core.domain.IdName;
 import com.xunmei.common.core.domain.iot.domain.IotDvrDisk;
 import com.xunmei.system.api.enums.AlarmStatus;
+import com.xunmei.system.api.enums.NetStatus;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -27,32 +28,63 @@ import java.util.List;
 public class DvrDiskPageVo {
    @ApiModelProperty("设备Id")
    private String id;
+
+//   @ApiModelProperty("所属机构")
+//   @JsonSerialize(using = ToStringSerializer.class)
+//   private Long orgId;
+
+   @ApiModelProperty("所属机构")
+   private String orgName;
+
    @ApiModelProperty("录像机的唯一标识")
    private String equipmentCode;
+
    @ApiModelProperty("录像机的名称")
    private String equipmentName;
+
+   @ApiModelProperty("品牌")
+   private String brand;
+
    @ApiModelProperty("IP地址")
    private String ip;
-   @ApiModelProperty("报警状态")
-   private AlarmStatus status;
-   @ApiModelProperty("报警/恢复时间")
-   @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-   private Date alarmTime;
+
+   @ApiModelProperty("网络状态")
+   private NetStatus netState;
+
+   @ApiModelProperty("网络状态")
+   private String netStateStr;
+//   @ApiModelProperty("报警状态")
+//   private AlarmStatus status;
+
+//   @ApiModelProperty("报警/恢复时间")
+//   @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+//   private Date alarmTime;
+
    @ApiModelProperty("硬盘当前状态信息")
    private  String detailInfoStr;
+
    @ApiModelProperty("硬盘当前状态信息")
    private List<DetailVo> detailInfo;
-   @ApiModelProperty("所属机构")
-   @JsonSerialize(using = ToStringSerializer.class)
-   private Long orgId;
 
-   private String orgName;
    @ApiModelProperty("更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;
-   @ApiModelProperty("机构")
-   private IdName<Long, String> org;
+
+//   @ApiModelProperty("机构")
+//   private IdName<Long, String> org;
 
    @ApiModelProperty("磁盘信息")
    private  List<IotDvrDisk> diskInfos;
+
+   @ApiModelProperty("磁盘总数")
+   private int diskCount;
+
+   @ApiModelProperty("异常数量")
+   private int diskExceptionCount;
+
+   @ApiModelProperty("硬盘总空间")
+   private int diskTotalSize;
+
+   @ApiModelProperty("硬盘已用空间")
+   private int diskUsedSize;
 }

+ 17 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/dvrDisk/DvrDiskStatisticVo.java

@@ -0,0 +1,17 @@
+package com.xunmei.iot.vo.dvrDisk;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 监控主机统计概要信息
+ */
+@Data
+public class DvrDiskStatisticVo {
+    @ApiModelProperty("dvr数量")
+    private int dvrTotal;
+    @ApiModelProperty("硬盘数量")
+    private int diskTotal;
+    @ApiModelProperty("硬盘异常数量")
+    private int diskExceptionCount;
+}

+ 27 - 8
soc-modules/soc-modules-iot/src/main/resources/mapper/DvrDiskMapper.xml

@@ -30,14 +30,17 @@
         d.net_address as ip,
         d.org_id AS orgId,
         d.org_name AS orgName,
-        dd.STATUS AS `status`,
-        dd.alarm_time AS alarmTime,
-        dd.detail_info as detailInfo
+        d.producer as brand,
+        dd.state as netState,
+        dhd.STATUS AS `status`,
+        dhd.alarm_time AS alarmTime,
+        dhd.detail_info as detailInfo
         FROM
         iot_device d
-        LEFT JOIN iot_dvr_harddisk_detection dd ON d.guid = dd.equipment_code
+        left join  iot_device_detection  dd on d.equipment_code =dd.equipment_code
+        LEFT JOIN iot_dvr_harddisk_detection dhd ON d.guid = dd.equipment_code
         WHERE
-        d.category_id=3713671510851584
+        d.category_id=#{pageDto.categoryId}
         <if test="pageDto.checkSub==true">
             and d.org_path like concat(#{orgPath},"%")
         </if>
@@ -48,13 +51,13 @@
             and d.NAME like concat('%', #{pageDto.equipmentName},'%')
         </if>
         <if test="pageDto.status !=null">
-            and dd.`status` = #{pageDto.status}
+            and dhd.`status` = #{pageDto.status}
         </if>
         <if test="pageDto.alarmStartTime !=null">
-            and dd.alarm_time >= #{pageDto.alarmStartTime}
+            and dhd.alarm_time >= #{pageDto.alarmStartTime}
         </if>
         <if test="pageDto.alarmEndTime !=null">
-            and #{pageDto.alarmEndTime}>= dd.`alarm_time`
+            and #{pageDto.alarmEndTime}>= dhd.`alarm_time`
         </if>
         and d.deleted=0
     </select>
@@ -108,4 +111,20 @@
         </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>

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

@@ -1,5 +1,6 @@
 package com.xunmei.mediator.api.service.impl;
 
+import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -159,13 +160,14 @@ public class IotDvrDiskServiceImpl extends ServiceImpl<IotDvrDiskMapper, IotDvrD
                     errors.add(error);
                     continue;
                 }
+
                 IotDvrDisk dvrdisk = IotDvrDisk.builder()
-                        .available(dto.getAvailable().substring(0, dto.getAvailable().length() - 2))
+                        .available(NumberUtil.parseInt(dto.getAvailable().substring(0, dto.getAvailable().length() - 2)) )
                         .diskIndex(dto.getDiskSerialNum())
                         .equipmentCode(pageDto.getEquipmentCode())
                         .diskName(dto.getName())
                         .id(IDHelper.id())
-                        .total(dto.getTotal().substring(0, dto.getTotal().length() - 2))
+                        .total(NumberUtil.parseInt(dto.getTotal().substring(0, dto.getTotal().length() - 2)))
                         .orgId(org.getId()).build();
 
                 dvrdisks.add(dvrdisk);