소스 검색

Merge remote-tracking branch 'origin/master'

hym 4 년 전
부모
커밋
06b2379cd0

+ 105 - 0
sms_water/src/main/java/com/huaxu/controller/OnlineMonitorController.java

@@ -0,0 +1,105 @@
+package com.huaxu.controller;
+
+
+import com.huaxu.common.StringUtils;
+import com.huaxu.dto.AlarmDetailsDto;
+import com.huaxu.dto.MonitorDataCollectDto;
+import com.huaxu.entity.AlarmDetailsEntity;
+import com.huaxu.entity.SceneEntity;
+import com.huaxu.model.AjaxMessage;
+import com.huaxu.model.ResultStatus;
+import com.huaxu.service.OnlineMonitorService;
+import com.huaxu.service.SceneService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 在线监测控制层
+ *
+ * @author yjy
+ * @since 2020-12-2
+ */
+@RestController
+@RequestMapping("/onlineMonitor")
+@Api(tags = "在线监测")
+public class OnlineMonitorController {
+    /**
+     * 服务对象
+     */
+    @Autowired
+    private OnlineMonitorService onlineMonitorService;
+    @Autowired
+    private SceneService sceneService;
+
+    @RequestMapping(value="selectAlarmDetails" , method = RequestMethod.GET)
+    @ApiOperation(value = "查询实时报警信息")
+    public AjaxMessage<List<AlarmDetailsDto>> selectAlarmDetails(
+            @ApiParam(value = "一级场景类型名称", required = true) @RequestParam String sceneTypeName,
+            @ApiParam(value = "场景名称", required = false) @RequestParam(required = false) String sceneName){
+        AlarmDetailsDto alarmDetailsDto=new AlarmDetailsDto();
+        alarmDetailsDto.setSceneTypeName(sceneTypeName);
+        alarmDetailsDto.setSceneName(sceneName);
+        alarmDetailsDto.setSceneIds(sceneService.findByParentIdsLike(null));
+        return new AjaxMessage<>(ResultStatus.OK, onlineMonitorService.selectAlarmDetails(alarmDetailsDto));
+    }
+
+    @RequestMapping(value="selectAlarmCount" , method = RequestMethod.GET)
+    @ApiOperation(value = "查询实时报警数量")
+    public AjaxMessage<List<Map<String, Object>>> selectAlarmCount(
+            @ApiParam(value = "一级场景类型名称", required = true) @RequestParam String sceneTypeName,
+            @ApiParam(value = "场景名称", required = false) @RequestParam(required = false) String sceneName){
+        AlarmDetailsDto alarmDetailsDto=new AlarmDetailsDto();
+        alarmDetailsDto.setSceneTypeName(sceneTypeName);
+        alarmDetailsDto.setSceneName(sceneName);
+        alarmDetailsDto.setSceneIds(sceneService.findByParentIdsLike(null));
+        return new AjaxMessage<>(ResultStatus.OK, onlineMonitorService.selectAlarmCount(alarmDetailsDto));
+    }
+
+    @RequestMapping(value="selectMapSuspension" , method = RequestMethod.GET)
+    @ApiOperation(value = "查询地图悬浮数据")
+    public AjaxMessage<List<MonitorDataCollectDto>> selectMapSuspension(
+            @ApiParam(value = "一级场景类型名称", required = true) @RequestParam String sceneTypeName){
+        MonitorDataCollectDto monitorDataCollectDto=new MonitorDataCollectDto();
+        monitorDataCollectDto.setSceneTypeName(sceneTypeName);
+        monitorDataCollectDto.setSceneIds(sceneService.findByParentIdsLike(null));
+        return new AjaxMessage<>(ResultStatus.OK, onlineMonitorService.selectMapSuspension(monitorDataCollectDto));
+    }
+
+    @RequestMapping(value="selectMapParam" , method = RequestMethod.GET)
+    @ApiOperation(value = "查询地图参数数据")
+    public AjaxMessage<List<MonitorDataCollectDto>> selectMapParam(
+            @ApiParam(value = "一级场景id", required = true) @RequestParam Long sceneId){
+        MonitorDataCollectDto monitorDataCollectDto=new MonitorDataCollectDto();
+        monitorDataCollectDto.setSceneId(sceneId);
+        monitorDataCollectDto.setSceneIds(sceneService.findByParentIdsLike(null));
+        return new AjaxMessage<>(ResultStatus.OK, onlineMonitorService.selectMapParam(monitorDataCollectDto));
+    }
+
+    @RequestMapping(value="selectUsageRank" , method = RequestMethod.GET)
+    @ApiOperation(value = "查询用水量排行")
+    public AjaxMessage<List<MonitorDataCollectDto>> selectUsageRank(
+            @ApiParam(value = "一级场景类型名称", required = true) @RequestParam String sceneTypeName){
+        //查询该场景类型的一级场景
+        SceneEntity sceneEntity = new SceneEntity();
+        sceneEntity.setSceneTypeName(sceneTypeName);
+        List<SceneEntity> sceneEntities = sceneService.selectByTypeName(sceneEntity);
+        List<MonitorDataCollectDto> result=new ArrayList<MonitorDataCollectDto>();
+        for(SceneEntity scene:sceneEntities){
+            MonitorDataCollectDto monitorDataCollectDto=new MonitorDataCollectDto();
+            monitorDataCollectDto.setSceneId(scene.getId());
+            monitorDataCollectDto.setSceneName(scene.getSceneName());
+            //计算用水量
+            result.add(monitorDataCollectDto);
+        }
+        return new AjaxMessage<>(ResultStatus.OK, result);
+    }
+
+}

+ 7 - 0
sms_water/src/main/java/com/huaxu/controller/SceneController.java

@@ -171,4 +171,11 @@ public class SceneController {
         List<SceneEntity> sceneEntities = sceneService.selectByTypeName(sceneEntity);
         return new AjaxMessage<>(ResultStatus.OK, sceneEntities);
     }
+    @RequestMapping(value = "/findByParentId", method = RequestMethod.GET)
+    @ResponseBody
+    @ApiOperation(value = "根据父级ID查询所有子节点及本身(全部信息)")
+    public  AjaxMessage<List<SceneEntity>> findByParentId(@ApiParam(value = "父级场景ID", required = false)@RequestParam(required = false) Long id) {
+        List<SceneEntity> sceneEntities = sceneService.findByParentId(id);
+        return new AjaxMessage<>(ResultStatus.OK, sceneEntities);
+    }
 }

+ 42 - 0
sms_water/src/main/java/com/huaxu/dao/OnlineMonitorMapper.java

@@ -0,0 +1,42 @@
+package com.huaxu.dao;
+
+import com.huaxu.dto.AlarmDetailsDto;
+import com.huaxu.dto.MonitorDataCollectDto;
+import org.apache.ibatis.annotations.Mapper;
+
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ *
+ * 在线监测接口
+ *
+ * @author yjy
+ * @since 2020-12-2
+ */
+@Mapper
+public interface OnlineMonitorMapper {
+
+    /**
+     * 查询实时报警信息
+     * @return
+     */
+    List<AlarmDetailsDto> selectAlarmDetails(AlarmDetailsDto alarmDetailsDto);
+    /**
+     * 查询实时报警数量
+     * @return
+     */
+    List<Map<String, Object>> selectAlarmCount(AlarmDetailsDto alarmDetailsDto);
+    /**
+     * 查询地图悬浮数据
+     * @return
+     */
+    List<MonitorDataCollectDto> selectMapSuspension(MonitorDataCollectDto monitorDataCollectDto);
+    /**
+     * 查询地图参数数据
+     * @return
+     */
+    List<MonitorDataCollectDto> selectMapParam(MonitorDataCollectDto monitorDataCollectDto);
+}

+ 2 - 0
sms_water/src/main/java/com/huaxu/dao/SceneMapper.java

@@ -37,5 +37,7 @@ public interface SceneMapper extends BaseMapper<SceneEntity> {
 
     List<SceneEntity> selectByTypeName(@Param(value = "scene")SceneEntity sceneEntity);
 
+    List<SceneEntity> findByParentId(@Param(value = "scene")SceneEntity sceneEntity);
+
     /**删除相关方法  使用mybatis-plus集成的 **/
 }

+ 4 - 0
sms_water/src/main/java/com/huaxu/dto/AlarmDetailsDto.java

@@ -71,5 +71,9 @@ public class AlarmDetailsDto extends AlarmDetailsEntity {
     @JsonIgnore
     private String userType;
 
+    @ApiModelProperty(value ="一级场景类型名称",hidden = true)
+    @JsonIgnore
+    private String sceneTypeName;
+
 
 }

+ 82 - 0
sms_water/src/main/java/com/huaxu/dto/MonitorDataCollectDto.java

@@ -0,0 +1,82 @@
+package com.huaxu.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.huaxu.model.ProgramItem;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @description
+ * @auto yjy
+ * @data 2020-12-2
+ */
+@ApiModel("监测数据集合")
+@Data
+public class MonitorDataCollectDto {
+
+    private static final long serialVersionUID = -3866939316262264972L;
+
+    @ApiModelProperty("所属场景id")
+    private Long sceneId;
+
+    @ApiModelProperty("所属场景")
+    private String sceneName;
+
+    @ApiModelProperty("地址")
+    private String address;
+
+    @ApiModelProperty("经度")
+    private BigDecimal pointX;
+
+    @ApiModelProperty("维度")
+    private BigDecimal pointY;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
+    @ApiModelProperty(value = "采集时间")
+    private Date collectDate;
+
+    @ApiModelProperty("今日供水量")
+    private Double supplyWaterUsage;
+
+    @ApiModelProperty("今日取水量")
+    private Double intakeWaterUsage;
+
+    @ApiModelProperty("今日耗电量")
+    private Double powerUsage;
+
+    @ApiModelProperty("实时数据")
+    private List<MonitorDataDto> MonitorDataEntities;
+
+
+    @ApiModelProperty(value = "场景ids" ,hidden = true )
+    @JsonIgnore
+    private List<Long> sceneIds;
+
+    @ApiModelProperty(value = "租户标识",hidden = true)
+    @JsonIgnore
+    private String tenantId;
+
+    @ApiModelProperty(value ="权限",hidden = true)
+    @JsonIgnore
+    private List<ProgramItem> programItems;
+
+    @ApiModelProperty(value="用户权限类型",hidden = true)
+    @JsonIgnore
+    private Integer permissonType;
+
+    /** 用户类型 */
+    @ApiModelProperty(value = "用户类型(-9999 超管 -999普通用户 2普通用户)",hidden = true)
+    @JsonIgnore
+    private String userType;
+
+    @ApiModelProperty(value ="一级场景类型名称",hidden = true)
+    @JsonIgnore
+    private String sceneTypeName;
+}

+ 35 - 0
sms_water/src/main/java/com/huaxu/dto/MonitorDataDto.java

@@ -0,0 +1,35 @@
+package com.huaxu.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * @description
+ * @auto yjy
+ * @data 2020-12-2
+ */
+@Data
+@ApiModel("监测数据")
+public class MonitorDataDto implements Serializable {
+
+    private static final long serialVersionUID = 6916916266193290481L;
+
+    @ApiModelProperty(value = "设备属性编号")
+    private Integer attributeId;
+    @ApiModelProperty(value = "设备属性名称")
+    private String attributeName;
+    @ApiModelProperty(value = "采集数据")
+    private Double dataValue;
+    @ApiModelProperty(value = "单位")
+    private String unit;
+    @ApiModelProperty(value = "规格值")
+    private String specsName;
+    @ApiModelProperty(value = "是否报警")
+    private Integer isAlarm;
+}

+ 40 - 0
sms_water/src/main/java/com/huaxu/service/OnlineMonitorService.java

@@ -0,0 +1,40 @@
+package com.huaxu.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.huaxu.dto.AlarmDetailsDto;
+import com.huaxu.dto.AlarmDetailsHistoryDto;
+import com.huaxu.dto.AlarmDetailsRealTimeDto;
+import com.huaxu.dto.MonitorDataCollectDto;
+import com.huaxu.entity.AlarmDetailsEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @description
+ * @auto yjy
+ * @data 2020-12-2
+ */
+public interface OnlineMonitorService {
+
+    /**
+     * 查询实时报警信息
+     * @return
+     */
+    List<AlarmDetailsDto> selectAlarmDetails(AlarmDetailsDto alarmDetailsDto);
+    /**
+     * 查询实时报警数量
+     * @return
+     */
+    List<Map<String, Object>> selectAlarmCount(AlarmDetailsDto alarmDetailsDto);
+    /**
+     * 查询地图悬浮数据
+     * @return
+     */
+    List<MonitorDataCollectDto> selectMapSuspension(MonitorDataCollectDto monitorDataCollectDto);
+    /**
+     * 查询地图参数数据
+     * @return
+     */
+    List<MonitorDataCollectDto> selectMapParam(MonitorDataCollectDto monitorDataCollectDto);
+}

+ 28 - 11
sms_water/src/main/java/com/huaxu/service/SceneService.java

@@ -144,7 +144,6 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
     }
 
 
-
     /**
      * 保存
      */
@@ -152,13 +151,13 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
         LoginUser currentUser = UserUtil.getCurrentUser();
         scene.setTenantId(currentUser.getTenantId());
         scene.setStatus(1);
-        if(currentUser!=null) {
+        if (currentUser != null) {
             scene.setCreateBy(currentUser.getName());
             scene.setUpdateBy(currentUser.getName());
             scene.setDateUpdate(new Date());
             scene.setDateCreate(new Date());
         }
-        if(scene.getDeptOrgId()!=null&&scene.getDeptOrgId()==0)
+        if (scene.getDeptOrgId() != null && scene.getDeptOrgId() == 0)
             scene.setDeptOrgId(null);
 
         // 如果没有设置父节点,则代表为跟节点,有则获取父节点实体
@@ -198,10 +197,11 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
         }
         return false;
     }
+
     /**
      * 根据父级ID查询所有子节点及本身
      */
-    public  List<SceneEntity> findByParentLike(Long id) {
+    public List<SceneEntity> findByParentLike(Long id) {
         LoginUser currentUser = UserUtil.getCurrentUser();
         SceneEntity scene = new SceneEntity();
         if (id != null)
@@ -215,10 +215,11 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
         List<SceneEntity> list = sceneMapper.findByParentIdsLike(scene);
         return list;
     }
+
     /**
      * 根据父级ID查询所有子节点及本身
      */
-    public  List<Long> findByParentIdsLike(Long id) {
+    public List<Long> findByParentIdsLike(Long id) {
         LoginUser currentUser = UserUtil.getCurrentUser();
         SceneEntity scene = new SceneEntity();
         if (id != null)
@@ -236,13 +237,14 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
         }
         return longs;
     }
+
     /**
      * 修改根居ID
      */
     public boolean updateSceneById(SceneEntity scene) {
         LoginUser currentUser = UserUtil.getCurrentUser();
         scene.setUpdateBy(currentUser.getName());
-        if(scene.getDeptOrgId()!=null&&scene.getDeptOrgId()==0)
+        if (scene.getDeptOrgId() != null && scene.getDeptOrgId() == 0)
             scene.setDeptOrgId(null);
         // 获取修改前的parentIds,用于更新子节点的parentIds
         SceneEntity cScene = sceneMapper.findSceneById(scene.getId());
@@ -274,7 +276,7 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
             } catch (Exception e) {
 
             }
-            o.setParentSceneIds("%,"+scene.getId()+",%");
+            o.setParentSceneIds("%," + scene.getId() + ",%");
             List<SceneEntity> list = sceneMapper.findByParentIdsLike(o);
             for (SceneEntity e : list) {
                 if (!e.getId().equals(scene.getId()) && e.getParentSceneId() != null && oldParentIds != null) {
@@ -285,9 +287,9 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
                 }
             }
             //删除之前的图片信息
-             sceneImageService.updateBySceneId(scene.getId());
+            sceneImageService.updateBySceneId(scene.getId());
             //增加场景图片
-            if(scene.getSceneImages()!=null) {
+            if (scene.getSceneImages() != null) {
                 for (SceneImageEntity sceneImage : scene.getSceneImages()) {
                     sceneImage.setCreateBy(currentUser.getName());
                     sceneImage.setDateCreate(new Date());
@@ -320,11 +322,11 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
     }
 
 
-    public List<SceneEntity>  findByParentSceneIds(Long[] Ids) {
+    public List<SceneEntity> findByParentSceneIds(Long[] Ids) {
         return sceneMapper.findByParentSceneIds(Ids);
     }
 
-    public List<SceneEntity>  selectByTypeName(SceneEntity sceneEntity) {
+    public List<SceneEntity> selectByTypeName(SceneEntity sceneEntity) {
         LoginUser currentUser = UserUtil.getCurrentUser();
         sceneEntity.setTenantId(currentUser.getTenantId());
         sceneEntity.setProgramItems(currentUser.getProgramItemList());
@@ -333,4 +335,19 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
         sceneEntity.setPermissonType(currentUser.getPermissonType());
         return sceneMapper.selectByTypeName(sceneEntity);
     }
+
+    public List<SceneEntity> findByParentId(Long id) {
+        SceneEntity sceneEntity = new SceneEntity();
+        LoginUser currentUser = UserUtil.getCurrentUser();
+        sceneEntity.setTenantId(currentUser.getTenantId());
+        sceneEntity.setProgramItems(currentUser.getProgramItemList());
+        sceneEntity.setUserType(currentUser.getType());
+        //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
+        sceneEntity.setPermissonType(currentUser.getPermissonType());
+        if (id != null)
+            sceneEntity.setParentSceneIds("%," + id + ",%");
+        List<SceneEntity> sceneEntities = sceneMapper.findByParentId(sceneEntity);
+        List<SceneEntity> sceneTree = getSceneTree(sceneEntities, Long.valueOf(0), 1);
+        return sceneTree;
+    }
 }

+ 93 - 0
sms_water/src/main/java/com/huaxu/service/impl/OnlineMonitorImpl.java

@@ -0,0 +1,93 @@
+package com.huaxu.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.huaxu.dao.DeviceMapper;
+import com.huaxu.dao.OnlineMonitorMapper;
+import com.huaxu.dto.AlarmDetailsDto;
+import com.huaxu.dto.DeviceDto;
+import com.huaxu.dto.MonitorDataCollectDto;
+import com.huaxu.entity.DeviceEntity;
+import com.huaxu.model.LoginUser;
+import com.huaxu.service.DeviceService;
+import com.huaxu.service.OnlineMonitorService;
+import com.huaxu.util.UserUtil;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @description
+ * @auto yjy
+ * @data 2020-12-2
+ */
+@Service
+public class OnlineMonitorImpl implements OnlineMonitorService {
+
+    @Resource
+    private OnlineMonitorMapper onlineMonitorMapper;
+
+    /**
+     * 查询实时报警信息
+     * @return
+     */
+    @Override
+    public List<AlarmDetailsDto> selectAlarmDetails(AlarmDetailsDto alarmDetailsDto)
+    {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        alarmDetailsDto.setTenantId(loginUser.getTenantId());
+        alarmDetailsDto.setProgramItems(loginUser.getProgramItemList());
+        alarmDetailsDto.setUserType(loginUser.getType());
+        //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
+        alarmDetailsDto.setPermissonType(loginUser.getPermissonType());
+        return onlineMonitorMapper.selectAlarmDetails(alarmDetailsDto);
+    }
+    /**
+     * 查询实时报警数量
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> selectAlarmCount(AlarmDetailsDto alarmDetailsDto)
+    {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        alarmDetailsDto.setTenantId(loginUser.getTenantId());
+        alarmDetailsDto.setProgramItems(loginUser.getProgramItemList());
+        alarmDetailsDto.setUserType(loginUser.getType());
+        //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
+        alarmDetailsDto.setPermissonType(loginUser.getPermissonType());
+        return onlineMonitorMapper.selectAlarmCount(alarmDetailsDto);
+    }
+    /**
+     * 查询地图悬浮数据
+     * @return
+     */
+    @Override
+    public List<MonitorDataCollectDto> selectMapSuspension(MonitorDataCollectDto monitorDataCollectDto)
+    {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        monitorDataCollectDto.setTenantId(loginUser.getTenantId());
+        monitorDataCollectDto.setProgramItems(loginUser.getProgramItemList());
+        monitorDataCollectDto.setUserType(loginUser.getType());
+        //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
+        monitorDataCollectDto.setPermissonType(loginUser.getPermissonType());
+        return onlineMonitorMapper.selectMapSuspension(monitorDataCollectDto);
+    }
+    /**
+     * 查询地图参数数据
+     * @return
+     */
+    @Override
+    public List<MonitorDataCollectDto> selectMapParam(MonitorDataCollectDto monitorDataCollectDto)
+    {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        monitorDataCollectDto.setTenantId(loginUser.getTenantId());
+        monitorDataCollectDto.setProgramItems(loginUser.getProgramItemList());
+        monitorDataCollectDto.setUserType(loginUser.getType());
+        //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
+        monitorDataCollectDto.setPermissonType(loginUser.getPermissonType());
+        return onlineMonitorMapper.selectMapParam(monitorDataCollectDto);
+    }
+
+}

+ 138 - 0
sms_water/src/main/resources/mapper/OnlineMonitorMapper.xml

@@ -0,0 +1,138 @@
+<?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.huaxu.dao.OnlineMonitorMapper">
+    <!-- 结果集 -->
+    <resultMap type="com.huaxu.dto.MonitorDataCollectDto" id="monitorDataMap">
+        <result property="sceneId" column="scene_id" jdbcType="INTEGER"/>
+        <result property="sceneName" column="scene_name" jdbcType="VARCHAR"/>
+        <result property="pointX" column="point_x" jdbcType="VARCHAR"/>
+        <result property="pointY" column="point_y" jdbcType="VARCHAR"/>
+        <result property="address" column="address" jdbcType="VARCHAR"/>
+        <collection property="MonitorDataEntities" ofType="com.huaxu.dto.MonitorDataDto" javaType="list">
+            <result property="attributeId" column="attribute_id" jdbcType="INTEGER"/>
+            <result property="attributeName" column="attribute_name" jdbcType="VARCHAR"/>
+            <result property="unit" column="unit" jdbcType="VARCHAR"/>
+            <result property="isAlarm" column="is_Alarm" jdbcType="VARCHAR"/>
+        </collection>
+    </resultMap>
+
+    <!--查询实时报警信息-->
+    <select id="selectAlarmDetails" resultType="com.huaxu.dto.AlarmDetailsDto">
+        select
+        t3.scene_name as "sceneName",
+        t1.alarm_content as "alarmContent",
+        t1.alarm_start_time as "alarmStartTime"
+        from sms_alarm_details t1
+        inner join sms_device t2 on t1.device_id=t2.id and t2.`status`=1
+        inner join (
+            select a.id,a.scene_name,b.id c_id,b.scene_name c_scene_name
+            from sms_scene a
+            inner join sms_scene b on find_in_set(a.id, b.parent_scene_ids ) and b.status=1
+            inner join sms_scene_type s on s.id =a.scene_type_id and s.status=1
+            where a.parent_scene_id=0 and a.status=1 and s.scene_type_name=#{sceneTypeName}
+            <if test="sceneIds != null and sceneIds.size() > 0">
+                and b.id  in
+                <foreach collection="sceneIds" item="item" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="sceneName != null and sceneName != ''">
+                and a.scene_name  like concat('%',#{sceneName},'%')
+            </if>
+        )t3 on t2.scene_id=t3.c_id
+        where t1.`status`=1 and t1.state=1
+        order by t3.scene_name
+    </select>
+    <!--查询实时报警数量-->
+    <select id="selectAlarmCount" resultType="java.util.Map">
+        select
+        t3.scene_name as "sceneName",
+        count(1) as "alalmCount"
+        from sms_alarm_details t1
+        inner join sms_device t2 on t1.device_id=t2.id and t2.`status`=1
+        inner join (
+            select a.id,a.scene_name,b.id c_id,b.scene_name c_scene_name
+            from sms_scene a
+            inner join sms_scene b on find_in_set(a.id, b.parent_scene_ids ) and b.status=1
+            inner join sms_scene_type s on s.id =a.scene_type_id and s.status=1
+            where a.parent_scene_id=0 and a.status=1 and s.scene_type_name=#{sceneTypeName}
+            <if test="sceneIds != null and sceneIds.size() > 0">
+                and b.id  in
+                <foreach collection="sceneIds" item="item" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="sceneName != null and sceneName != ''">
+                and a.scene_name  like concat('%',#{sceneName},'%')
+            </if>
+        )t3 on t2.scene_id=t3.c_id
+        where t1.`status`=1 and t1.state=1
+        group by t3.scene_name
+        order by count(1) desc
+    </select>
+    <!--查询地图悬浮数据-->
+    <select id="selectMapSuspension" resultMap="monitorDataMap">
+        select
+        t4.id scene_Id,
+        t4.scene_name ,
+        t4.point_x ,
+        t4.point_y,
+        t4.address ,
+        t3.attribute_id ,
+        ifnull(t3.remark, t2.`name`) attribute_Name,
+        t2.unit ,
+        if (t5.id is null, 0, 1) is_Alarm
+        from sms_device t1
+        inner join sms_device_attribute t2 on t1.device_type_id = t2.device_type_id and t2.`status` = 1
+        inner join sms_device_parm t3 on t1.id = t3.device_id and t3.attribute_id = t2.id and t3.`status` = 1
+        inner join (
+            select a.id,a.scene_name,a.point_x,a.point_y,a.address,b.id c_id,b.scene_name c_scene_name
+            from sms_scene a
+            inner join sms_scene b on find_in_set(a.id, b.parent_scene_ids) and b. status = 1
+            inner join sms_scene_type s on s.id = a.scene_type_id and s. status = 1
+            where a.parent_scene_id = 0 and a. status = 1 and s.scene_type_name = #{sceneTypeName}
+            <if test="sceneIds != null and sceneIds.size() > 0">
+                and b.id  in
+                <foreach collection="sceneIds" item="item" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+        ) t4 on t1.scene_id = t4.c_id
+        left join sms_alarm_details t5 on t5.device_id = t1.id and t5.attribute_id = t3.attribute_id and t5.state = 1
+        where t1.`status` = 1 and t3.is_suspension = 1
+        order by t4.scene_name,t3.seq
+    </select>
+    <!--查询地图参数数据-->
+    <select id="selectMapParam" resultMap="monitorDataMap">
+        select
+        t4.id scene_Id,
+        t4.scene_name ,
+        t4.point_x ,
+        t4.point_y,
+        t4.address ,
+        t3.attribute_id ,
+        ifnull(t3.remark, t2.`name`) attribute_Name,
+        t2.unit ,
+        if (t5.id is null, 0, 1) is_Alarm
+        from sms_device t1
+        inner join sms_device_attribute t2 on t1.device_type_id = t2.device_type_id and t2.`status` = 1
+        inner join sms_device_parm t3 on t1.id = t3.device_id and t3.attribute_id = t2.id and t3.`status` = 1
+        inner join (
+        select a.id,a.scene_name,a.point_x,a.point_y,a.address,b.id c_id,b.scene_name c_scene_name
+        from sms_scene a
+        inner join sms_scene b on find_in_set(a.id, b.parent_scene_ids) and b. status = 1
+        inner join sms_scene_type s on s.id = a.scene_type_id and s. status = 1
+        where a.parent_scene_id = 0 and a. status = 1 and a.id = #{sceneId}
+        <if test="sceneIds != null and sceneIds.size() > 0">
+            and b.id  in
+            <foreach collection="sceneIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        ) t4 on t1.scene_id = t4.c_id
+        left join sms_alarm_details t5 on t5.device_id = t1.id and t5.attribute_id = t3.attribute_id and t5.state = 1
+        where t1.`status` = 1 and t3.is_map = 1
+        order by t4.scene_name,t3.seq
+    </select>
+
+</mapper>

+ 40 - 0
sms_water/src/main/resources/mapper/SceneMapper.xml

@@ -260,4 +260,44 @@
         </where>
         order by  a.date_create
     </select>
+    <!--根据一级场景查询所有场景信息-->
+    <select id="findByParentId" resultType="com.huaxu.entity.SceneEntity">
+        SELECT
+        <include refid="sceneColumns"/>
+        FROM sms_scene a
+        <include refid="deviceJoins"/>
+        <where>
+            a.status=1
+            <if test="scene.parentSceneIds != null ">and a.parent_scene_ids LIKE #{scene.parentSceneIds}</if>
+            <if test="scene.tenantId != null  and scene.tenantId != ''">and a.tenant_id = #{scene.tenantId}</if>
+            <if test="scene.userType!=null and scene.userType!=-999 and scene.userType!=-9999 and  scene.programItems != null and scene.programItems.size() > 0">
+                <if test="scene.permissonType == 5 or scene.permissonType == 2">
+                    and ( a.DEPT_ORG_ID in
+                    <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                    or
+                    a.COMPANY_ORG_ID in
+                    <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                    )
+                </if>
+                <if test="scene.permissonType == 4 or scene.permissonType == 3">
+                    and a.DEPT_ORG_ID in
+                    <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                </if>
+                <if test="scene.permissonType == 1">
+                    and a.COMPANY_ORG_ID in
+                    <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                    and (a.DEPT_ORG_ID is null or a.DEPT_ORG_ID =0)
+                </if>
+            </if>
+        </where>
+        order by  a.date_create
+    </select>
 </mapper>