Sfoglia il codice sorgente

feat: disk use info

lihao16 7 mesi fa
parent
commit
8110828ab4

+ 10 - 0
smsb-modules/smsb-source/src/main/java/com/inspur/source/controller/SmsbMinioDataController.java

@@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.inspur.device.domain.vo.DeviceAlarmNumTopVo;
 import com.inspur.source.domain.bo.SmsbMinioDataBo;
 import com.inspur.source.domain.vo.DashBoardPlayVo;
+import com.inspur.source.domain.vo.DiskUseVo;
 import com.inspur.source.domain.vo.FileStatisticsVo;
 import com.inspur.source.domain.vo.SmsbMinioDataVo;
 import com.inspur.source.service.ISmsbMinioDataService;
@@ -146,4 +147,13 @@ public class SmsbMinioDataController extends BaseController {
     public R<DashBoardPlayVo> numLine(@RequestParam String startTime, @RequestParam String endTime) {
         return R.ok(smsbMinioDataService.numLine(startTime, endTime));
     }
+
+    /**
+     * 播放统计-存储空间使用情况
+     * @return
+     */
+    @GetMapping("/dashboard/disk/use")
+    public R<DiskUseVo> diskUse() {
+        return R.ok(smsbMinioDataService.diskUse());
+    }
 }

+ 37 - 0
smsb-modules/smsb-source/src/main/java/com/inspur/source/domain/vo/DiskUseVo.java

@@ -0,0 +1,37 @@
+package com.inspur.source.domain.vo;
+
+import lombok.Data;
+
+/**
+ * 磁盘空间使用情况
+ * @author lihao16
+ */
+@Data
+public class DiskUseVo {
+
+    /**
+     * 磁盘总大小 KB
+     */
+    private Long total;
+
+    /**
+     * 磁盘已使用大小
+     */
+    private Long used;
+
+    /**
+     * 磁盘剩余大小
+     */
+    private Long free;
+
+    /**
+     * 图片使用
+     */
+    private Long imageUse;
+
+    /**
+     * 视频使用
+     */
+    private Long videoUse;
+
+}

+ 7 - 0
smsb-modules/smsb-source/src/main/java/com/inspur/source/mapper/SmsbMinioDataMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.inspur.source.domain.SmsbMinioData;
 import com.inspur.source.domain.bo.SmsbMinioDataBo;
 import com.inspur.source.domain.vo.DashBoardPlayVo;
+import com.inspur.source.domain.vo.DiskUseVo;
 import com.inspur.source.domain.vo.FileStatisticsVo;
 import com.inspur.source.domain.vo.SmsbMinioDataVo;
 import org.apache.ibatis.annotations.Param;
@@ -55,4 +56,10 @@ public interface SmsbMinioDataMapper extends BaseMapperPlus<SmsbMinioData, SmsbM
      * @return
      */
     FileStatisticsVo statisticsByTypeAndTag(@Param("type") Integer type);
+
+    /**
+     * 获取磁盘使用情况
+     * @return
+     */
+    DiskUseVo diskUse();
 }

+ 7 - 0
smsb-modules/smsb-source/src/main/java/com/inspur/source/service/ISmsbMinioDataService.java

@@ -2,6 +2,7 @@ package com.inspur.source.service;
 
 import com.inspur.source.domain.bo.SmsbMinioDataBo;
 import com.inspur.source.domain.vo.DashBoardPlayVo;
+import com.inspur.source.domain.vo.DiskUseVo;
 import com.inspur.source.domain.vo.FileStatisticsVo;
 import com.inspur.source.domain.vo.SmsbMinioDataVo;
 import org.dromara.common.mybatis.core.page.PageQuery;
@@ -89,4 +90,10 @@ public interface ISmsbMinioDataService {
     FileStatisticsVo fileStatisticsByTag();
 
     FileStatisticsVo fileStatisticsByTypeAndTag();
+
+    /**
+     * 播放统计-存储空间使用情况
+     * @return
+     */
+    DiskUseVo diskUse();
 }

+ 10 - 4
smsb-modules/smsb-source/src/main/java/com/inspur/source/service/impl/SmsbMinioDataServiceImpl.java

@@ -7,10 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.inspur.source.domain.*;
 import com.inspur.source.domain.bo.SmsbMinioDataBo;
-import com.inspur.source.domain.vo.DashBoardPlayVo;
-import com.inspur.source.domain.vo.FileStatisticsVo;
-import com.inspur.source.domain.vo.SmsbMinioDataVo;
-import com.inspur.source.domain.vo.SmsbSourceTreeVo;
+import com.inspur.source.domain.vo.*;
 import com.inspur.source.mapper.*;
 import com.inspur.source.service.ISmsbMinioDataService;
 import lombok.RequiredArgsConstructor;
@@ -291,4 +288,13 @@ public class SmsbMinioDataServiceImpl implements ISmsbMinioDataService {
         result.setTimeList(timeList);
         return result;
     }
+
+    @Override
+    public DiskUseVo diskUse() {
+        Long total = 5 * 1024 * 1024L;
+        DiskUseVo result = baseMapper.diskUse();
+        result.setTotal(total);
+        result.setFree(total - result.getUsed());
+        return result;
+    }
 }

+ 8 - 0
smsb-modules/smsb-source/src/main/resources/mapper/SmsbMinioDataMapper.xml

@@ -68,4 +68,12 @@
         GROUP BY date_range.stat_date
         ORDER BY date_range.stat_date
     </select>
+    <select id="diskUse" resultType="com.inspur.source.domain.vo.DiskUseVo">
+        SELECT
+            SUM( size ) AS used,
+            SUM( CASE WHEN type = 1 THEN size ELSE 0 END ) AS imageUse,
+            SUM( CASE WHEN type = 2 THEN size ELSE 0 END ) AS videoUse
+        FROM
+            smsb_minio_data
+    </select>
 </mapper>

+ 6 - 0
smsb-plus-ui/src/api/smsb/source/minioData.ts

@@ -89,3 +89,9 @@ export const numLine = (params?: any): AxiosPromise<SourceStatisticsVO> => {
     params: params
   });
 };
+export const diskUse = () => {
+  return request({
+    url: '/source/minioData/dashboard/disk/use',
+    method: 'get'
+  });
+};

+ 45 - 3
smsb-plus-ui/src/views/smsb/dashboard/play.vue

@@ -76,9 +76,32 @@
           </el-row>
           <el-row :gutter="20" style="margin-top: 20px">
             <el-col :span="12">
-              <el-card shadow="hover">
+              <el-card shadow="hover" style="height: 330px">
                 <h3>空间使用情况</h3>
-                <div ref="onlineTime" class="chart-placeholder"></div>
+                <div style="margin-top: 50px">
+                  <h2>已用空间:{{ diskUsed }}GB/{{ diskTotal }}GB</h2>
+                </div>
+
+                <div class="disk-progress">
+                  <el-row>
+                    <el-col :span="2">
+                      <h3>图片:</h3>
+                    </el-col>
+                    <el-col :span="22">
+                      <el-progress :text-inside="true" :stroke-width="26" :percentage="diskImage" />
+                    </el-col>
+                  </el-row>
+                </div>
+                <div class="disk-progress">
+                  <el-row>
+                    <el-col :span="2">
+                      <h3>视频:</h3>
+                    </el-col>
+                    <el-col :span="22">
+                      <el-progress :text-inside="true" :stroke-width="26" status="success" :percentage="diskVideo" />
+                    </el-col>
+                  </el-row>
+                </div>
               </el-card>
             </el-col>
             <el-col :span="12">
@@ -135,7 +158,7 @@
 
 <script setup lang="ts">
 import * as echarts from 'echarts';
-import { fileStatistics, fileStatisticsByTag, numLine, statisticsByTypeAndTag } from '@/api/smsb/source/minioData';
+import { diskUse, fileStatistics, fileStatisticsByTag, numLine, statisticsByTypeAndTag } from '@/api/smsb/source/minioData';
 import { playTopStatistics, sumOnlineTimeLine } from '@/api/smsb/source/play_record';
 
 const timeRadio = ref('week');
@@ -153,6 +176,18 @@ const topType = ref('1');
 const imageTopNum = ref(0);
 const videoTopNum = ref(0);
 const onlineTimeLine = ref();
+const diskUsed = ref();
+const diskTotal = ref();
+const diskImage = ref();
+const diskVideo = ref();
+
+const getDiskUse = async () => {
+  const res = await diskUse();
+  diskTotal.value = res.data.total / 1024 / 1024;
+  diskUsed.value = (res.data.used / 1024 / 1024).toFixed(3);
+  diskImage.value = ((res.data.imageUse / res.data.total) * 100).toFixed(2);
+  diskVideo.value = ((res.data.videoUse / res.data.total) * 100).toFixed(2);
+};
 
 const getOnlineTimeLine = async () => {
   const params = {
@@ -464,6 +499,7 @@ onMounted(() => {
   getNumByTypeAndTag();
   getPlayTop();
   getOnlineTimeLine();
+  getDiskUse();
 });
 </script>
 
@@ -495,4 +531,10 @@ onMounted(() => {
   /*background: #f5f5f5;*/
   border-radius: 8px;
 }
+
+.disk-progress .el-progress--line {
+  margin-bottom: 15px;
+  max-width: 600px;
+  margin-top: 50px;
+}
 </style>