Browse Source

给 智能运维 新增接口

zhulu 1 year ago
parent
commit
1d65285bf5

+ 99 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/SmartOprationController.java

@@ -0,0 +1,99 @@
+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.dvrDisk.DvrDiskAppPageDto;
+import com.xunmei.iot.dto.videoDiagnosis.VideoDiagnosisAppPageDto;
+import com.xunmei.iot.dto.videoDiagnosis.VideoDiagnosisWebPageDto;
+import com.xunmei.iot.service.IotDvsDiskService;
+import com.xunmei.iot.service.VideoDiagnosisService;
+import com.xunmei.iot.vo.dvrDisk.DvrDiskAppPageVo;
+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 com.xunmei.system.api.RemoteFileService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.text.SimpleDateFormat;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 智能运维
+ *
+ * @author yzl
+ * @since 2022-07-26
+ */
+@RestController
+@RequestMapping("/smartopration")
+public class SmartOprationController {
+
+    @Autowired
+    IotDvsDiskService dvrDiskService;
+    @Autowired
+    private VideoDiagnosisService videoDiagnosisService;
+
+    @Resource
+    private RemoteFileService fileService;
+
+
+//    @ApiOperation("有异常的硬盘数量")
+//    @GetMapping({"/app/badge/{orgId}"})
+//    AjaxResult badge(@PathVariable("orgId") Long orgId) {
+//        Integer count = this.videoDiagnosisService.appBadge(orgId);
+//        return AjaxResult.success(count);
+//    }
+
+    @ApiOperation("智能运维页面Tab页角标数量")
+    @GetMapping({"/app/badge/{orgId}"})
+    AjaxResult badge(@PathVariable("orgId") Long orgId) {
+        AjaxResult ajaxResult = AjaxResult.success();
+        // 录像丢失
+        Integer videoCheckBadge = this.videoDiagnosisService.appVideoLoseBadge(orgId);
+        if(videoCheckBadge>0){
+            ajaxResult.put("videoCheckBadge", videoCheckBadge);
+        }
+
+        // 视频质量
+        Integer videoDiagnosisBadge = this.videoDiagnosisService.appVideoQualityBadge(orgId);
+        if(videoDiagnosisBadge>0)
+        {
+            ajaxResult.put("videoDiagnosisBadge", videoDiagnosisBadge);
+        }
+
+        // 硬盘
+        Integer dvrDiskBadge = this.dvrDiskService.badge(orgId);
+        if(dvrDiskBadge>0)
+        {
+            ajaxResult.put("dvrDiskBadge", dvrDiskBadge);
+        }
+
+        return ajaxResult;
+    }
+
+    @PostMapping("/app/videocheck/page")
+    public TableDataInfo<VideoDiagnosisAppPageVo> appVideoCheckPage(@RequestBody VideoDiagnosisAppPageDto pageDto) {
+        TableDataInfo<VideoDiagnosisAppPageVo> page = this.videoDiagnosisService.getAppVideoCheckPageData(pageDto);
+        return page;
+    }
+
+    @PostMapping("/app/videodiagnosis/page")
+    public TableDataInfo<VideoDiagnosisAppPageVo> appVideoDiagnosisPage(@RequestBody VideoDiagnosisAppPageDto pageDto) {
+        TableDataInfo<VideoDiagnosisAppPageVo> page = this.videoDiagnosisService.getAppVideoDiagnosisPageData(pageDto);
+        return page;
+    }
+
+    @PostMapping("/app/disk/page")
+    TableDataInfo<DvrDiskAppPageVo> appPage(@RequestBody final DvrDiskAppPageDto request) {
+        TableDataInfo<DvrDiskAppPageVo> page = this.dvrDiskService.appPage(request);
+        return page;
+    }
+}

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

@@ -36,5 +36,18 @@ public interface IotDvrChannelMapper extends BaseMapper<IotDvrChannel> {
                                                 @Param("pageDto") VideoDiagnosisAppPageDto pageDto,
                                                 @Param("orgPath") String orgPath);
 
+    Page<VideoDiagnosisAppPageVo> selectAppVideoCheckPage(@Param("page") Page<VideoDiagnosisAppPageVo> page,
+                                                @Param("pageDto") VideoDiagnosisAppPageDto pageDto,
+                                                @Param("orgPath") String orgPath);
+
+    Page<VideoDiagnosisAppPageVo> selectAppVideoDiagnosisPage(@Param("page") Page<VideoDiagnosisAppPageVo> page,
+                                                @Param("pageDto") VideoDiagnosisAppPageDto pageDto,
+                                                @Param("orgPath") String orgPath);
+
     Integer selectBadge(Long orgId);
+
+    Integer selectVideoLoseBadge(Long orgId);
+
+    Integer selectVideoQualityBadge(Long orgId);
+
 }

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

@@ -28,5 +28,12 @@ public interface VideoDiagnosisService extends IService<IotDvrChannel> {
 
     TableDataInfo<VideoDiagnosisAppPageVo> getAppPageData(VideoDiagnosisAppPageDto request);
 
+    TableDataInfo<VideoDiagnosisAppPageVo> getAppVideoCheckPageData(VideoDiagnosisAppPageDto request);
+
+    TableDataInfo<VideoDiagnosisAppPageVo> getAppVideoDiagnosisPageData(VideoDiagnosisAppPageDto request);
+
     Integer appBadge(Long orgId);
+
+    Integer appVideoLoseBadge(Long orgId);
+    Integer appVideoQualityBadge(Long orgId);
 }

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

@@ -84,6 +84,58 @@ public class VideoDiagnosisServiceImpl extends ServiceImpl<IotDvrChannelMapper,
     }
 
     @Override
+    public TableDataInfo<VideoDiagnosisAppPageVo> getAppVideoCheckPageData(VideoDiagnosisAppPageDto request) {
+        String orgPath = "";
+        if (request.getCheckSub()) {
+            SysOrg org = orgService.selectOrgById(request.getOrgId(), SecurityConstants.INNER);
+            orgPath = org.getPath();
+        }
+
+        Page<VideoDiagnosisAppPageVo> page = request.toPage();
+
+        request.setCategoryId(CategoryDataEnum.MONITOR_HOST_DEVICE.getId());
+        page = baseMapper.selectAppVideoCheckPage(page, request, orgPath);
+        page.getRecords().forEach(r -> {
+            if (ObjectUtil.isEmpty(r.getChannels())) {
+                r.setState(null);
+            } else if (r.getChannels().stream().filter(c -> ObjectUtil.equal(c.getState(), 1)).findAny().isPresent()) {
+                r.setState(1);
+            } else if (r.getChannels().stream().filter(c -> ObjectUtil.equal(c.getState(), 2)).findAny().isPresent()) {
+                r.setState(2);
+            } else {
+                r.setState(0);
+            }
+        });
+        return TableDataInfo.success(page);
+    }
+
+    @Override
+    public TableDataInfo<VideoDiagnosisAppPageVo> getAppVideoDiagnosisPageData(VideoDiagnosisAppPageDto request) {
+        String orgPath = "";
+        if (request.getCheckSub()) {
+            SysOrg org = orgService.selectOrgById(request.getOrgId(), SecurityConstants.INNER);
+            orgPath = org.getPath();
+        }
+
+        Page<VideoDiagnosisAppPageVo> page = request.toPage();
+
+        request.setCategoryId(CategoryDataEnum.MONITOR_HOST_DEVICE.getId());
+        page = baseMapper.selectAppVideoDiagnosisPage(page, request, orgPath);
+        page.getRecords().forEach(r -> {
+            if (ObjectUtil.isEmpty(r.getChannels())) {
+                r.setState(null);
+            } else if (r.getChannels().stream().filter(c -> ObjectUtil.equal(c.getState(), 1)).findAny().isPresent()) {
+                r.setState(1);
+            } else if (r.getChannels().stream().filter(c -> ObjectUtil.equal(c.getState(), 2)).findAny().isPresent()) {
+                r.setState(2);
+            } else {
+                r.setState(0);
+            }
+        });
+        return TableDataInfo.success(page);
+    }
+
+    @Override
     public VideoDiagnosisWebVo getDetail(String hostCode, String channelCode) {
         VideoDiagnosisWebVo vo = baseMapper.diagnosisDetail(hostCode, channelCode);
         if (ObjectUtil.isNull(vo)) {
@@ -147,6 +199,18 @@ public class VideoDiagnosisServiceImpl extends ServiceImpl<IotDvrChannelMapper,
         return count;
     }
 
+    @Override
+    public Integer appVideoLoseBadge(Long orgId) {
+        Integer count = baseMapper.selectVideoLoseBadge(orgId);
+        return count;
+    }
+
+    @Override
+    public Integer appVideoQualityBadge(Long orgId) {
+        Integer count = baseMapper.selectVideoQualityBadge(orgId);
+        return count;
+    }
+
     private void setUnknownDate(VideoDiagnosisStorageVo storage, Date earliest) {
         storage.setUnknownDates(new ArrayList<>());
         Date start = DateUtil.beginOfDay(earliest);

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

@@ -45,6 +45,32 @@
             <result column="state" property="state"></result>
         </collection>
     </resultMap>
+    <resultMap id="appVideoCheckPageMap" type="com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisAppPageVo">
+        <result column="equipment_code" property="hostCode"></result>
+        <result column="equipment_name" property="hostName"></result>
+        <result column="org_name" property="orgName"></result>
+        <result column="state" property="state"></result>
+        <collection property="channels" ofType="com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisAppPageChannelVo"
+                    column="equipmentCode=equipment_code,state=state"
+                    select="selectAppVideoCheckChannels">
+            <result column="channel_code" property="channelCode"></result>
+            <result column="channel_name" property="channelName"></result>
+            <result column="state" property="state"></result>
+        </collection>
+    </resultMap>
+    <resultMap id="appVideoDiagnosisPageMap" type="com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisAppPageVo">
+        <result column="equipment_code" property="hostCode"></result>
+        <result column="equipment_name" property="hostName"></result>
+        <result column="org_name" property="orgName"></result>
+        <result column="state" property="state"></result>
+        <collection property="channels" ofType="com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisAppPageChannelVo"
+                    column="equipmentCode=equipment_code,state=state"
+                    select="selectAppVideoDiagnosisChannels">
+            <result column="channel_code" property="channelCode"></result>
+            <result column="channel_name" property="channelName"></result>
+            <result column="state" property="state"></result>
+        </collection>
+    </resultMap>
     <select id="selectPage" resultType="com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisWebPageVo">
         SELECT DISTINCT
         c.id,
@@ -159,6 +185,48 @@
         </if>
         order by dc.channel_code asc
     </select>
+    <select id="selectAppVideoCheckChannels" resultType="com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisAppPageChannelVo">
+        select dc.channel_code,
+        dc.channel_name,
+        if(vdc.status=0 and vic.status=0 ,0,if(vdc.status =1 or vic.status>0,1,2))
+        as state
+        FROM iot_dvr_channel dc
+        LEFT JOIN mediator_video_days_check vdc on dc.host_code=vdc.equipment_code and dc.channel_code
+        =vdc.channel_code
+        LEFT JOIN mediator_video_integrity_check vic on dc.host_code=vic.equipment_code and dc.channel_code
+        =vic.channel_code
+        where dc.host_code=#{equipmentCode} and dc.deleted=0
+        <if test="state==0">
+            and (vdc.`status`=0 or vic.`status`=0)
+        </if>
+        <if test="state==1">
+            and (vdc.`status`=1 or vic.`status`>0)
+        </if>
+        <if test="state==2">
+            and (vdc.`status` is null or vic.`status` is null)
+        </if>
+        order by dc.channel_code asc
+    </select>
+    <select id="selectAppVideoDiagnosisChannels" resultType="com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisAppPageChannelVo">
+        select dc.channel_code,
+        dc.channel_name,
+        if(vdr.is_alarm=0,0,if(vdr.is_alarm=1,1,2))
+        as state
+        FROM iot_dvr_channel dc
+        LEFT JOIN mediator_video_diagnosis_record vdr on dc.host_code=vdr.equipment_code and dc.channel_code
+        =vdr.channel_code
+        where dc.host_code=#{equipmentCode} and dc.deleted=0
+        <if test="state==0">
+            and  vdr.is_alarm=0
+        </if>
+        <if test="state==1">
+            and vdr.is_alarm=1
+        </if>
+        <if test="state==2">
+            and vdr.is_alarm is null
+        </if>
+        order by dc.channel_code asc
+    </select>
     <select id="selectAppPage" resultMap="appPageMap">
         SELECT equipment_code,
         equipment_name,
@@ -203,6 +271,88 @@
             )
         </if>
     </select>
+    <select id="selectAppVideoCheckPage" resultMap="appVideoCheckPageMap">
+        SELECT equipment_code,
+        equipment_name,
+        org_name,
+        #{pageDto.state} as state
+        from iot_device
+        WHERE category_id = #{pageDto.categoryId}
+        <if test="pageDto.checkSub==true">
+            and org_path like concat(#{orgPath}, '%')
+        </if>
+        <if test="pageDto.checkSub==false">
+            and org_id=#{pageDto.orgId}
+        </if>
+        and deleted=0
+        <if test="pageDto.state!=null">
+            and equipment_code in (
+            SELECT dc.host_code
+            FROM iot_dvr_channel dc
+            LEFT JOIN mediator_video_days_check vdc on dc.host_code=vdc.equipment_code and dc.channel_code
+            =vdc.channel_code
+            LEFT JOIN mediator_video_integrity_check vic on dc.host_code=vic.equipment_code and dc.channel_code
+            =vic.channel_code
+            WHERE dc.deleted=0
+            <if test="pageDto.state==0">
+                and (vdc.`status`=0 and vic.`status`=0)
+            </if>
+            <if test="pageDto.state==1">
+                and (vdc.`status`=1 or vic.`status`>0)
+            </if>
+            <if test="pageDto.state==2">
+                and (vdc.`status` is null or vic.`status` is null)
+            </if>
+            <if test="pageDto.checkSub==true">
+                and dc.org_path like concat(#{orgPath}, '%')
+            </if>
+            <if test="pageDto.checkSub==false">
+                and dc.org_id=#{pageDto.orgId}
+            </if>
+            GROUP BY dc.host_code
+            )
+        </if>
+    </select>
+    <select id="selectAppVideoDiagnosisPage" resultMap="appVideoDiagnosisPageMap">
+        SELECT equipment_code,
+        equipment_name,
+        org_name,
+        #{pageDto.state} as state
+        from iot_device
+        WHERE category_id = #{pageDto.categoryId}
+        <if test="pageDto.checkSub==true">
+            and org_path like concat(#{orgPath}, '%')
+        </if>
+        <if test="pageDto.checkSub==false">
+            and org_id=#{pageDto.orgId}
+        </if>
+        and deleted=0
+        <if test="pageDto.state!=null">
+            and equipment_code in (
+            SELECT dc.host_code
+            FROM iot_dvr_channel dc
+            LEFT JOIN mediator_video_diagnosis_record vdr on dc.host_code=vdr.equipment_code and dc.channel_code
+            =vdr.channel_code
+            WHERE dc.deleted=0
+            <if test="pageDto.state==0">
+                and vdr.is_alarm=0
+            </if>
+            <if test="pageDto.state==1">
+                and vdr.is_alarm=1
+            </if>
+            <if test="pageDto.state==2">
+                and vdr.is_alarm is null
+            </if>
+            <if test="pageDto.checkSub==true">
+                and dc.org_path like concat(#{orgPath}, '%')
+            </if>
+            <if test="pageDto.checkSub==false">
+                and dc.org_id=#{pageDto.orgId}
+            </if>
+            GROUP BY dc.host_code
+            )
+        </if>
+    </select>
     <select id="selectBadge" resultType="java.lang.Integer">
         SELECT sum(vdc.`status` > 0 or vic.`status` > 0 or vdr.`is_alarm` > 0) as count
         FROM iot_dvr_channel dc
@@ -215,4 +365,24 @@
         WHERE dc.org_id = #{orgId}
           AND dc.deleted = 0
     </select>
+    <select id="selectVideoLoseBadge" resultType="java.lang.Integer">
+        SELECT sum(vdc.`status` > 0 or vic.`status` > 0) as count
+        FROM iot_dvr_channel dc
+            LEFT JOIN mediator_video_days_check vdc
+        on vdc.equipment_code = dc.host_code and vdc.channel_code = dc.channel_code
+            LEFT JOIN mediator_video_integrity_check vic
+            on vic.equipment_code = dc.host_code and vic.channel_code = dc.channel_code
+        WHERE dc.org_id = #{orgId}
+          AND dc.deleted = 0
+    </select>
+    <select id="selectVideoQualityBadge" resultType="java.lang.Integer">
+        SELECT sum(vdr.`is_alarm` > 0) as count
+        FROM iot_dvr_channel dc
+            LEFT JOIN mediator_video_diagnosis_record vdr
+            on vdr.equipment_code = dc.host_code and vdr.channel_code = dc.channel_code
+        WHERE dc.org_id = #{orgId}
+          AND dc.deleted = 0
+    </select>
+
+
 </mapper>