Ver Fonte

消防预警后端代码提交

xujie há 1 ano atrás
pai
commit
a489c13659

+ 22 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotAlarmDataAppController.java

@@ -8,6 +8,7 @@ import com.xunmei.iot.dto.alarmData.dealAlarmDto;
 import com.xunmei.iot.service.IotAlarmDataService;
 import com.xunmei.iot.vo.alarm.IotAlarmDataVo;
 import com.xunmei.iot.vo.alarmData.AppAlarmDataPageVo;
+import com.xunmei.iot.vo.alarmData.SensorAlarmCountVo;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -45,4 +46,25 @@ public class IotAlarmDataAppController {
         Integer count = this.iotAlarmDataService.appBadge(orgId);
         return AjaxResult.success(count);
     }
+
+    @ApiOperation(value = "查询消防预警设备数量和告警数量")
+    @PostMapping("/deviceTypeCount")
+    public AjaxResult deviceTypeCount(@RequestBody AppAlarmPageDto requestDto) {
+        SensorAlarmCountVo sensorAlarmCountVo = this.iotAlarmDataService.selectDeviceTypeCount(requestDto);
+        return AjaxResult.success(sensorAlarmCountVo);
+    }
+
+    @ApiOperation("消防预警角标")
+    @GetMapping({"/getFireWarningBadge/{orgId}"})
+    AjaxResult getFireWarningBadge(@PathVariable("orgId") Long orgId) {
+        Integer count = this.iotAlarmDataService.getFireWarningBadge(orgId);
+        return AjaxResult.success(count);
+    }
+
+    @ApiOperation("获取当前传感器报警记录分页数据")
+    @PostMapping({"/selectSensorAlarmPageList"})
+    TableDataInfo<IotAlarmDataVo> selectSensorAlarmPageList(@RequestBody AppAlarmPageDto requestDto) {
+        TableDataInfo<IotAlarmDataVo> sensorAlarmList = this.iotAlarmDataService.selectSensorAlarmPageList(requestDto);
+        return sensorAlarmList;
+    }
 }

+ 2 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/dto/alarmData/AppAlarmPageDto.java

@@ -31,6 +31,8 @@ public class AppAlarmPageDto extends PageDto {
 
     private Integer isDo;
 
+    private Long sensorId;
+
     public Map<String, Object> getParams() {
         if (params == null) {
             params = new HashMap<>();

+ 5 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotAlarmDataMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xunmei.common.core.domain.mediator.domain.IotAlarmData;
 import com.xunmei.iot.dto.alarmData.AppAlarmPageDto;
+import com.xunmei.iot.vo.alarmData.DeviceTypeCountVo;
 import com.xunmei.iot.vo.alarm.IotAlarmDataVo;
 import com.xunmei.iot.vo.alarmData.AppAlarmDataPageVo;
 import org.apache.ibatis.annotations.Mapper;
@@ -22,4 +23,8 @@ public interface IotAlarmDataMapper extends BaseMapper<IotAlarmData> {
     Integer appBadge(Long orgId);
 
     List<IotAlarmData> selectAlarmDataListByOrgPath(@Param("orgPath") String orgPath, @Param("dataType") Integer dataType);
+
+    List<DeviceTypeCountVo> selectDeviceTypeCount(@Param("query")AppAlarmPageDto requestDto);
+
+    Page<IotAlarmDataVo> selectSensorAlarmPageList(@Param("page") Page<IotAlarmDataVo> page, @Param("param")AppAlarmPageDto requestDto);
 }

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

@@ -7,6 +7,7 @@ import com.xunmei.iot.dto.alarmData.AppAlarmPageDto;
 import com.xunmei.iot.dto.alarmData.dealAlarmDto;
 import com.xunmei.iot.vo.alarm.IotAlarmDataVo;
 import com.xunmei.iot.vo.alarmData.AppAlarmDataPageVo;
+import com.xunmei.iot.vo.alarmData.SensorAlarmCountVo;
 
 import java.util.List;
 
@@ -28,4 +29,10 @@ public interface IotAlarmDataService extends IService<IotAlarmData> {
     Integer appBadge(Long orgId);
 
     List<IotAlarmData> selectAlarmDataListByOrgPath(String orgPath,Integer dataType);
+
+    SensorAlarmCountVo selectDeviceTypeCount(AppAlarmPageDto requestDto);
+
+    Integer getFireWarningBadge(Long orgId);
+
+    TableDataInfo<IotAlarmDataVo> selectSensorAlarmPageList(AppAlarmPageDto requestDto);
 }

+ 56 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotAlarmDataServiceImpl.java

@@ -9,10 +9,13 @@ import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.iot.dto.alarmData.AppAlarmPageDto;
 import com.xunmei.iot.dto.alarmData.dealAlarmDto;
+import com.xunmei.iot.enums.SensorTypeEnum;
 import com.xunmei.iot.mapper.IotAlarmDataMapper;
 import com.xunmei.iot.service.IotAlarmDataService;
+import com.xunmei.iot.vo.alarmData.DeviceTypeCountVo;
 import com.xunmei.iot.vo.alarm.IotAlarmDataVo;
 import com.xunmei.iot.vo.alarmData.AppAlarmDataPageVo;
+import com.xunmei.iot.vo.alarmData.SensorAlarmCountVo;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
 import org.springframework.stereotype.Service;
@@ -127,4 +130,57 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
 
         return baseMapper.selectAlarmDataListByOrgPath(orgPath,dataType);
     }
+
+    @Override
+    public SensorAlarmCountVo selectDeviceTypeCount(AppAlarmPageDto requestDto) {
+        SensorAlarmCountVo sensorAlarmCountVo = new SensorAlarmCountVo();
+        if(requestDto.getCheckSub() && ObjectUtil.isNotEmpty(requestDto.getOrgId())){
+            SysOrg org = orgService.selectSysOrgById(requestDto.getOrgId(), SecurityConstants.INNER);
+            requestDto.setOrgPath(org.getPath());
+        }
+        List<DeviceTypeCountVo> list = baseMapper.selectDeviceTypeCount(requestDto);
+        for (DeviceTypeCountVo vo : list) {
+            if (SensorTypeEnum.SMOKE.getType().equals(vo.getDeviceType())){
+                sensorAlarmCountVo.setSmokeCount(vo.getDeviceTypeCount());
+                sensorAlarmCountVo.setSmokeAlarmCount(vo.getDeviceTypeAlarmCount());
+            } else if (SensorTypeEnum.GAS.getType().equals(vo.getDeviceType())) {
+                sensorAlarmCountVo.setGasCount(vo.getDeviceTypeCount());
+                sensorAlarmCountVo.setGasAlarmCount(vo.getDeviceTypeAlarmCount());
+            } else if (SensorTypeEnum.TEMPERATURE_HUMIDITY.getType().equals(vo.getDeviceType())) {
+                sensorAlarmCountVo.setTemperatureAndHumidityCount(vo.getDeviceTypeCount());
+                sensorAlarmCountVo.setTemperatureAndHumidityAlarmCount(vo.getDeviceTypeAlarmCount());
+            }
+        }
+        return sensorAlarmCountVo;
+    }
+
+    @Override
+    public Integer getFireWarningBadge(Long orgId) {
+        AppAlarmPageDto pageDto = new AppAlarmPageDto();
+        pageDto.setOrgId(orgId);
+        pageDto.setCheckSub(false);
+        SensorAlarmCountVo alarmCountVo = this.selectDeviceTypeCount(pageDto);
+        if (alarmCountVo != null){
+            Integer smokeAlarmCount = alarmCountVo.getSmokeAlarmCount() == null ? 0 : alarmCountVo.getSmokeAlarmCount();
+            Integer gasAlarmCount = alarmCountVo.getGasAlarmCount() == null ? 0 : alarmCountVo.getGasAlarmCount();
+            Integer htAlarmCount = alarmCountVo.getTemperatureAndHumidityAlarmCount() == null ? 0 : alarmCountVo.getTemperatureAndHumidityAlarmCount();
+            Integer count = smokeAlarmCount + gasAlarmCount + htAlarmCount;
+            return count;
+        }
+        return 0;
+    }
+
+    @Override
+    public TableDataInfo<IotAlarmDataVo> selectSensorAlarmPageList(AppAlarmPageDto requestDto) {
+        Page<IotAlarmDataVo> page;
+        //分页
+        if (requestDto.getPageNum() != null && requestDto.getPageSize() != null) {
+            page = new Page<>(requestDto.getPageNum(), requestDto.getPageSize());
+        } else {
+            page = new Page<>();
+        }
+
+        page = baseMapper.selectSensorAlarmPageList(page, requestDto);
+        return TableDataInfo.build(page);
+    }
 }

+ 13 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/alarmData/DeviceTypeCountVo.java

@@ -0,0 +1,13 @@
+package com.xunmei.iot.vo.alarmData;
+
+import lombok.Data;
+
+@Data
+public class DeviceTypeCountVo {
+
+    private String deviceType;
+
+    private Integer deviceTypeCount;
+
+    private Integer deviceTypeAlarmCount;
+}

+ 43 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/alarmData/SensorAlarmCountVo.java

@@ -0,0 +1,43 @@
+package com.xunmei.iot.vo.alarmData;
+
+import lombok.Data;
+
+@Data
+public class SensorAlarmCountVo {
+
+    private Integer smokeCount;
+
+    private Integer smokeAlarmCount;
+
+    private Integer gasCount;
+
+    private Integer gasAlarmCount;
+
+    private Integer temperatureAndHumidityCount;
+
+    private Integer temperatureAndHumidityAlarmCount;
+
+    private Integer thiefCount;
+
+    private Integer thiefAlarmCount;
+
+    private Integer infraredCount;
+
+    private Integer infraredAlarmCount;
+
+    private Integer doorCount;
+
+    private Integer doorAlarmCount;
+
+    private Integer waterCount;
+
+    private Integer waterAlarmCount;
+
+    private Integer upsCount;
+
+    private Integer upsAlarmCount;
+
+    private Integer airCount;
+
+    private Integer airAlarmCount;
+}

+ 41 - 0
soc-modules/soc-modules-iot/src/main/resources/mapper/IotAlarmDataMapper.xml

@@ -122,4 +122,45 @@
             and d.data_type = #{dataType}
         </if>
     </select>
+
+    <select id="selectDeviceTypeCount" resultType="com.xunmei.iot.vo.alarmData.DeviceTypeCountVo">
+        SELECT
+            s.device_type AS deviceType,
+            count(*) AS deviceTypeCount,
+            (select count(*) from iot_sensor where id = s.id and state = 1) as deviceTypeAlarmCount
+        FROM
+            iot_sensor s
+        WHERE
+            s.deleted = 0
+            <if test="  query.checkSub != null and query.checkSub == true">
+                and s.org_path like concat(concat('%',#{query.orgPath}),'%')
+            </if>
+            <if test="  query.checkSub != null and query.checkSub == false">
+                and s.org_id = #{query.orgId}
+            </if>
+        GROUP BY
+            s.device_type
+    </select>
+    <select id="selectSensorAlarmPageList" resultType="com.xunmei.iot.vo.alarm.IotAlarmDataVo">
+        SELECT
+            a.*,
+            b.affiliated_area AS city,
+            b.affiliated_bank AS bank,
+            b.short_name AS org_name
+        FROM
+            iot_alarm_data a
+            LEFT JOIN iot_sensor s ON a.device_id = s.device_code AND a.org_id = s.org_id
+            LEFT JOIN sys_org b ON a.org_id = b.id
+        WHERE
+            1=1
+            <if test="param.sensorId != null">
+                and s.id = #{param.sensorId}
+            </if>
+            <if test="param.deviceName != null and param.deviceName != ''">
+                and s.device_name like concat('%',#{param.deviceName},'%')
+            </if>
+        ORDER BY
+            a.`time` DESC,
+            a.end_time DESC
+    </select>
 </mapper>