فهرست منبع

soc-modules-iot模块-诊断任务绑定摄像机功能提交

humingshi-7@163.com 11 ماه پیش
والد
کامیت
d3444a5adf

+ 31 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/CameraDiagnoseMissionController.java

@@ -0,0 +1,31 @@
+package com.xunmei.iot.controller;
+
+import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.iot.dto.cameraDiagnose.DiagnoseMissionPageDto;
+import com.xunmei.iot.service.DiagnoseMissionService;
+import com.xunmei.iot.vo.alarmData.AlarmTypeSelectedVO;
+import com.xunmei.iot.vo.sensor.DiagnoseMissionPageVo;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/diagnoseMission")
+public class CameraDiagnoseMissionController {
+    @Resource
+    private DiagnoseMissionService diagnoseMissionService;
+
+    @ApiOperation("诊断任务绑定列表")
+    @PostMapping({"/list"})
+    public TableDataInfo<DiagnoseMissionPageVo> webPage(@RequestBody final DiagnoseMissionPageDto request) {
+        TableDataInfo<DiagnoseMissionPageVo> page = diagnoseMissionService.selectDiagnoseMissionPage(request);
+        return page;
+    }
+
+    @ApiOperation("获取任务下拉框")
+    @GetMapping({"/missionTypeList"})
+    public List<AlarmTypeSelectedVO> missionTypeList() {
+        return diagnoseMissionService.missionTypeList();
+    }
+}

+ 3 - 5
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/CameraDiagnoseThresholdController.java

@@ -7,7 +7,6 @@ import com.xunmei.iot.vo.alarmData.AlarmTypeSelectedVO;
 import com.xunmei.iot.vo.sensor.DiagnoseThresholdPageVo;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.*;
-
 import javax.annotation.Resource;
 import java.util.List;
 
@@ -21,14 +20,13 @@ public class CameraDiagnoseThresholdController {
     @ApiOperation("诊断阈值绑定列表")
     @PostMapping({"/list"})
     public TableDataInfo<DiagnoseThresholdPageVo> webPage(@RequestBody final DiagnoseThresholdPageDto request) {
-        TableDataInfo<DiagnoseThresholdPageVo> page = diagnoseThresholdService.selectSensorDataPage(request);
+        TableDataInfo<DiagnoseThresholdPageVo> page = diagnoseThresholdService.selectDiagnoseThresholdPage(request);
         return page;
     }
 
-    @ApiOperation("获取告警类型下拉列表数据")
+    @ApiOperation("获取阈值下拉框")
     @GetMapping({"/thresholdTypeList"})
-    List<AlarmTypeSelectedVO> thresholdTypeList() {
-
+    public List<AlarmTypeSelectedVO> thresholdTypeList() {
         return diagnoseThresholdService.thresholdTypeList();
     }
 }

+ 21 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/dto/cameraDiagnose/DiagnoseMissionPageDto.java

@@ -0,0 +1,21 @@
+package com.xunmei.iot.dto.cameraDiagnose;
+
+import com.xunmei.common.core.web.domain.PageRequest;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class DiagnoseMissionPageDto extends PageRequest {
+    @ApiModelProperty(value = "设备名称")
+    private String deviceName;
+
+    @ApiModelProperty(value = "绑定状态:0:未绑定,1:已绑定")
+    private Integer state;
+
+    @ApiModelProperty(value = "任务code")
+    private String missionCode;
+
+}

+ 15 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/DiagnoseMissionChMapper.java

@@ -0,0 +1,15 @@
+package com.xunmei.iot.mapper;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xunmei.common.core.domain.iot.domain.IotDeviceDiagnoseMission;
+import com.xunmei.iot.dto.cameraDiagnose.DiagnoseMissionPageDto;
+import com.xunmei.iot.vo.sensor.DiagnoseMissionPageVo;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+import java.util.List;
+
+@Repository
+public interface DiagnoseMissionChMapper {
+    Page<DiagnoseMissionPageVo> selectPageData(Page<DiagnoseMissionPageVo> pageRequest, @Param("request") DiagnoseMissionPageDto request);
+    List<IotDeviceDiagnoseMission> selectAllDiagnoseMission();
+}

+ 14 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/DiagnoseMissionService.java

@@ -0,0 +1,14 @@
+package com.xunmei.iot.service;
+
+import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.iot.dto.cameraDiagnose.DiagnoseMissionPageDto;
+import com.xunmei.iot.vo.alarmData.AlarmTypeSelectedVO;
+import com.xunmei.iot.vo.sensor.DiagnoseMissionPageVo;
+import java.util.List;
+
+public interface DiagnoseMissionService {
+
+    TableDataInfo<DiagnoseMissionPageVo> selectDiagnoseMissionPage(DiagnoseMissionPageDto request);
+
+    List<AlarmTypeSelectedVO> missionTypeList();
+}

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

@@ -9,7 +9,7 @@ import java.util.List;
 
 public interface DiagnoseThresholdService {
 
-    TableDataInfo<DiagnoseThresholdPageVo> selectSensorDataPage(DiagnoseThresholdPageDto request);
+    TableDataInfo<DiagnoseThresholdPageVo> selectDiagnoseThresholdPage(DiagnoseThresholdPageDto request);
 
     List<AlarmTypeSelectedVO> thresholdTypeList();
 }

+ 107 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/DiagnoseMissionServiceImpl.java

@@ -0,0 +1,107 @@
+package com.xunmei.iot.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.collect.Lists;
+import com.xunmei.common.core.constant.CacheConstants;
+import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.iot.domain.IotDeviceDiagnoseMission;
+import com.xunmei.common.core.enums.OrgTypeEnum;
+import com.xunmei.common.core.utils.StringUtils;
+import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.common.redis.utils.RedisUtils;
+import com.xunmei.iot.dto.cameraDiagnose.DiagnoseMissionPageDto;
+import com.xunmei.iot.mapper.DiagnoseMissionChMapper;
+import com.xunmei.iot.service.DiagnoseMissionService;
+import com.xunmei.iot.vo.alarmData.AlarmTypeSelectedVO;
+import com.xunmei.iot.vo.sensor.DiagnoseMissionPageVo;
+import com.xunmei.system.api.RemoteOrgService;
+import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.api.vo.SysOrgVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+public class DiagnoseMissionServiceImpl implements DiagnoseMissionService {
+    @Resource
+    private RemoteOrgService orgService;
+
+    @Autowired
+    private DiagnoseMissionChMapper diagnoseMissionChMapper;
+
+    @Override
+    public TableDataInfo<DiagnoseMissionPageVo> selectDiagnoseMissionPage(DiagnoseMissionPageDto request) {
+        final SysOrg sysOrg = orgService.selectOrgById(request.getOrgId(), SecurityConstants.INNER);
+        if (ObjectUtil.equal(Boolean.TRUE, request.getCheckSub())) {
+            request.setOrgPath(sysOrg.getPath());
+            request.setOrgId(null);
+        }
+
+        List<IotDeviceDiagnoseMission> missions = diagnoseMissionChMapper.selectAllDiagnoseMission();
+
+        Page<DiagnoseMissionPageVo> page = diagnoseMissionChMapper.selectPageData(request.getPageRequest(), request);
+        final List<SysOrgVO> cacheList = RedisUtils.getCacheList(CacheConstants.ORG_CACHE_LIST_KEY);
+
+        for (DiagnoseMissionPageVo bean : page.getRecords()) {
+            String missionId = bean.getMissionId();
+            final List<Long> collect = Arrays.stream(bean.getOrgPath().split("-")).map(Long::parseLong).collect(Collectors.toList());
+            //地区名称
+            cacheList.stream().filter(org -> collect.contains(org.getId()) && OrgTypeEnum.DIQU_HANG_SHE.getCode().equals(org.getType()))
+                    .findFirst().ifPresent(org -> bean.setFirstOrgName(org.getShortName()));
+            //行社名称
+            cacheList.stream().filter(org -> collect.contains(org.getId()) && OrgTypeEnum.HANG_SHE.getCode().equals(org.getType()))
+                    .findFirst().ifPresent(org -> bean.setSecondOrgName(org.getShortName()));
+
+            StringBuffer buffer = new StringBuffer();
+            if(StringUtils.isNotEmpty(missionId)){
+                boolean isMatch = false;
+                for(IotDeviceDiagnoseMission mission:missions){
+                    if(mission.getMissionId().equals(missionId)){
+                        buffer.append(mission.getName()).append("【")
+                                .append(mission.getBeginTime()).append("--").append(mission.getEndTime())
+                                .append("】");
+                        isMatch = true;
+                        break;
+                    }
+                }
+                if(isMatch){
+                    bean.setMissionName(buffer.toString());
+                }else{
+                    bean.setMissionName("--");
+                }
+            }else{
+                bean.setMissionName("--");
+            }
+
+        }
+        return TableDataInfo.build(page);
+    }
+
+
+    @Override
+    public List<AlarmTypeSelectedVO> missionTypeList() {
+        List<AlarmTypeSelectedVO> list = Lists.newArrayList();
+        AlarmTypeSelectedVO bean;
+        List<IotDeviceDiagnoseMission> missions = diagnoseMissionChMapper.selectAllDiagnoseMission();
+
+        StringBuffer buffer;
+        for (IotDeviceDiagnoseMission mission : missions) {
+            bean = new AlarmTypeSelectedVO();
+
+            buffer = new StringBuffer();
+            buffer.append(mission.getName()).append("【")
+                    .append(mission.getBeginTime()).append("--").append(mission.getEndTime())
+                    .append("】");
+
+            bean.setValue(mission.getMissionId());
+            bean.setLabel(buffer.toString());
+            list.add(bean);
+        }
+
+        return list;
+    }
+}

+ 1 - 1
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/DiagnoseThresholdServiceImpl.java

@@ -34,7 +34,7 @@ public class DiagnoseThresholdServiceImpl  implements DiagnoseThresholdService {
     private DiagnoseThresholdChMapper diagnoseThresholdChMapper;
 
     @Override
-    public TableDataInfo<DiagnoseThresholdPageVo> selectSensorDataPage(DiagnoseThresholdPageDto request) {
+    public TableDataInfo<DiagnoseThresholdPageVo> selectDiagnoseThresholdPage(DiagnoseThresholdPageDto request) {
         final SysOrg sysOrg = orgService.selectOrgById(request.getOrgId(), SecurityConstants.INNER);
         if (ObjectUtil.equal(Boolean.TRUE, request.getCheckSub())) {
             request.setOrgPath(sysOrg.getPath());

+ 37 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/sensor/DiagnoseMissionPageVo.java

@@ -0,0 +1,37 @@
+package com.xunmei.iot.vo.sensor;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class DiagnoseMissionPageVo {
+    @ApiModelProperty("设备id")
+    private Long id;
+
+    @ApiModelProperty("设备名称")
+    private String deviceName;
+
+    @ApiModelProperty("所属主机")
+    private String hostName;
+
+    @ApiModelProperty("所属机构")
+    private String orgName;
+
+    @ApiModelProperty("诊断任务")
+    private String missionName;
+
+    @ApiModelProperty("地区")
+    private String firstOrgName;
+
+    @ApiModelProperty("行社名称")
+    private String secondOrgName;
+
+    @JsonIgnore
+    @ApiModelProperty("机构路径")
+    private String orgPath;
+
+    @JsonIgnore
+    @ApiModelProperty("机构路径")
+    private String missionId;
+}

+ 50 - 0
soc-modules/soc-modules-iot/src/main/resources/mapper/DiagnoseMissionChMapper.xml

@@ -0,0 +1,50 @@
+<?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.DiagnoseMissionChMapper">
+
+    <select id="selectPageData" resultType="com.xunmei.iot.vo.sensor.DiagnoseMissionPageVo">
+        select c.* from
+        (
+        select s.id,s.org_id, s.org_name,s.org_path, s.device_name, dvs.device_name as host_name,
+        (select mission_id from iot_device_diagnose_mission_ch ch where ch.iot_token = s.iot_token
+        and ch.device_product=s.device_product and ch.dvs = s.host_code and ch.channel = s.device_code limit 1) mission_id
+        from iot_device_info s
+        inner join iot_device_info dvs on dvs.iot_token = s.iot_token
+        and dvs.device_product = s.device_product and dvs.device_code = s.host_code
+        and dvs.deleted = 0 and s.enable = 0 and dvs.device_type = 1
+        where s.deleted=0 and s.enable=0 and s.device_type = 2
+        <if test="request.orgId!= null">
+            and s.org_id=#{request.orgId}
+        </if>
+        <if test="request.orgPath!= null">
+            and s.org_path like CONCAT(#{request.orgPath}, '%')
+        </if>
+        <if test="request.deviceName != null and request.deviceName!= ''">
+            and s.device_name like CONCAT('%',#{request.deviceName},'%')
+        </if>
+        order by s.host_code ,cast(s.device_code as signed)
+        ) c where 1=1
+        <choose>
+            <when test=" request.state == null">
+            </when>
+            <when test=" request.state == 0">
+                and c.mission_id is null
+            </when>
+            <otherwise>
+                and c.mission_id is not null
+            </otherwise>
+        </choose>
+        <choose>
+            <when test=" request.missionCode != null and request.missionCode != '' ">
+                and c.mission_id = #{request.missionCode}
+            </when>
+            <otherwise>
+            </otherwise>
+        </choose>
+
+    </select>
+
+    <select id="selectAllDiagnoseMission" resultType="com.xunmei.common.core.domain.iot.domain.IotDeviceDiagnoseMission">
+        select * from iot_device_diagnose_mission
+    </select>
+</mapper>