Browse Source

Merge remote-tracking branch 'origin/master'

hym 4 years ago
parent
commit
dba9e85d7c

+ 13 - 0
sms_water/src/main/java/com/huaxu/controller/DeviceController.java

@@ -99,6 +99,17 @@ public class DeviceController {
         deviceDto.setEnableState(enableState);
         return new AjaxMessage<>(ResultStatus.OK, deviceService.selectList(deviceDto));
     }
+
+    @RequestMapping(value="selectListBySceneId" , method = RequestMethod.GET)
+    @ApiOperation(value = "根据场景查询设备信息(场景设备联动)")
+    public AjaxMessage<List<DeviceDto>> selectListBySceneId(
+            @ApiParam(value = "所属场景id") @RequestParam(required = false)  Integer sceneId
+    ){
+        DeviceDto deviceDto = new DeviceDto();
+        deviceDto.setSceneId(sceneId);
+        return new AjaxMessage<>(ResultStatus.OK, deviceService.selectListBySceneId(deviceDto));
+    }
+
     @RequestMapping(value="selectListByScene" , method = RequestMethod.GET)
     @ApiOperation(value = "按场景查询设备信息(场景绑定设备信息)")
     public AjaxMessage<List<DeviceDto>> selectListByScene(
@@ -121,6 +132,8 @@ public class DeviceController {
         {
             item.setSceneId(sceneId);
             item.setParentSceneId(sceneEntity.getParentSceneId().intValue());
+            item.setCompanyOrgName(orgInfoUtil.getOrgName(item.getCompanyOrgId()));
+            item.setDeptOrgName(orgInfoUtil.getOrgName(item.getDeptOrgId()));
         }
         return new AjaxMessage<>(ResultStatus.OK, deviceDtos);
     }

+ 1 - 0
sms_water/src/main/java/com/huaxu/controller/MonitorInfoController.java

@@ -75,6 +75,7 @@ public class MonitorInfoController {
             byte[] bytes = redisUtil.get(("sms_water_" + item.getDeviceCode()).getBytes());
             if (bytes != null && bytes.length > 0) {
                 MonitorDataEntity monitorDataEntity = (MonitorDataEntity) ByteArrayUtils.bytesToObject(bytes).get();
+                sceneUsageDto.setCollectDate(monitorDataEntity.getCollectDate());
                 //筛选该设备相同属性的值
                 Map<Long, MonitorDataValueEntity> map = new HashMap<>();
                 //将缓存中的实时数据放到map中方便进行遍历

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

@@ -122,4 +122,28 @@ public class OnlineMonitorController {
         alarmDetailsDto.setSceneIds(sceneService.findByParentIdsLike(null));
         return new AjaxMessage<>(ResultStatus.OK, onlineMonitorService.selectAlarmStats(alarmDetailsDto));
     }
+
+    @RequestMapping(value="selectDeviceCount" , method = RequestMethod.GET)
+    @ApiOperation(value = "按管网名称分类查询设备数量",notes = "sceneTypeName 为压力、水质、流量")
+    public AjaxMessage<List<Map<String, Object>>> selectDeviceCount(
+            @ApiParam(value = "场景类型名称", required = true) @RequestParam String sceneTypeName,
+            @ApiParam(value = "场景id", required = false) @RequestParam(required = false) Long sceneId,
+            @ApiParam(value = "设备名称", required = false) @RequestParam(required = false) String deviceName){
+        OnlineDataDto onlineDataDto=new OnlineDataDto();
+        onlineDataDto.setSceneTypeName(sceneTypeName);
+        onlineDataDto.setSceneId(sceneId);
+        onlineDataDto.setDeviceName(deviceName);
+        onlineDataDto.setSceneIds(sceneService.findByParentIdsLike(null));
+        return new AjaxMessage<>(ResultStatus.OK, onlineMonitorService.selectDeviceCount(onlineDataDto));
+    }
+    @RequestMapping(value="selectDeviceMapParam" , method = RequestMethod.GET)
+    @ApiOperation(value = "查询设备地图参数数据")
+    public AjaxMessage<List<MonitorDataCollectDto>> selectDeviceMapParam(
+            @ApiParam(value = "一级场景id", required = true) @RequestParam Long deviceId){
+        MonitorDataCollectDto monitorDataCollectDto=new MonitorDataCollectDto();
+        monitorDataCollectDto.setDeviceId(deviceId);
+        monitorDataCollectDto.setSceneIds(sceneService.findByParentIdsLike(null));
+        List<MonitorDataCollectDto> result=onlineMonitorService.selectDeviceMapParam(monitorDataCollectDto);
+        return new AjaxMessage<>(ResultStatus.OK, result);
+    }
 }

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

@@ -67,4 +67,6 @@ public interface DeviceMapper {
 
     List<DeviceDto> selectListByScene( @Param("deviceDto") DeviceDto deviceDto);
 
+    List<DeviceDto> selectListBySceneId( @Param("deviceDto") DeviceDto deviceDto);
+
 }

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

@@ -57,4 +57,14 @@ public interface OnlineMonitorMapper {
      * @return
      */
     List<MonitorDataCollectDto> selectSceneParam(MonitorDataCollectDto monitorDataCollectDto);
+    /**
+     * 按管网名称分类查询设备数量
+     * @return
+     */
+    List<Map<String, Object>> selectDeviceCount(OnlineDataDto onlineDataDto);
+    /**
+     * 查询设备地图参数数据
+     * @return
+     */
+    List<MonitorDataCollectDto> selectDeviceMapParam(MonitorDataCollectDto monitorDataCollectDto);
 }

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

@@ -95,4 +95,13 @@ public class MonitorDataCollectDto {
     @ApiModelProperty(value ="在线监测类型 1查询需计算的属性、2查询监测列表的属性、3查询地图悬浮属性、4查询地图参数属性",hidden = true)
     @JsonIgnore
     private Integer type;
+
+    @ApiModelProperty("设备id")
+    private Long deviceId;
+
+    @ApiModelProperty("设备编号")
+    private String deviceCode;
+
+    @ApiModelProperty("设备名称")
+    private String deviceName;
 }

+ 2 - 0
sms_water/src/main/java/com/huaxu/dto/OnlineDataDto.java

@@ -104,4 +104,6 @@ public class OnlineDataDto {
     @ApiModelProperty(value ="一级场景类型名称",hidden = true)
     @JsonIgnore
     private String sceneTypeName;
+    @ApiModelProperty(value ="设备名称")
+    private String deviceName;
 }

+ 8 - 0
sms_water/src/main/java/com/huaxu/dto/SceneUsageDto.java

@@ -1,9 +1,13 @@
 package com.huaxu.dto;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.Date;
+
 @Data
 @ApiModel(value = "场景属性汇总值")
 public class SceneUsageDto {
@@ -15,4 +19,8 @@ public class SceneUsageDto {
     private Double powerUsage;
     @ApiModelProperty("今日耗药量")
     private Double drugUsage;
+    @ApiModelProperty("采集时间")
+    @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy/MM/dd HH:mm" , timezone = "GMT+8")
+    private Date collectDate;
 }

+ 1 - 0
sms_water/src/main/java/com/huaxu/service/DeviceService.java

@@ -51,5 +51,6 @@ public interface DeviceService {
     List<DeviceDto> selectList(DeviceDto deviceDto);
 
     List<DeviceDto> selectListByScene(DeviceDto deviceDto);
+    List<DeviceDto> selectListBySceneId(DeviceDto deviceDto);
 
 }

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

@@ -48,4 +48,14 @@ public interface OnlineMonitorService {
      * @return
      */
     List<MonitorDataCollectDto> selectSceneParam(MonitorDataCollectDto monitorDataCollectDto);
+    /**
+     * 按管网名称分类查询设备数量
+     * @return
+     */
+    List<Map<String, Object>> selectDeviceCount(OnlineDataDto onlineDataDto);
+    /**
+     * 查询设备地图参数数据
+     * @return
+     */
+    List<MonitorDataCollectDto> selectDeviceMapParam(MonitorDataCollectDto monitorDataCollectDto);
 }

+ 11 - 0
sms_water/src/main/java/com/huaxu/service/impl/DeviceServiceImpl.java

@@ -112,4 +112,15 @@ public class DeviceServiceImpl implements DeviceService {
         return deviceMapper.selectListByScene(deviceDto);
     }
 
+
+    @Override
+    public List<DeviceDto> selectListBySceneId(DeviceDto deviceDto) {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        deviceDto.setTenantId(loginUser.getTenantId());
+        deviceDto.setProgramItems(loginUser.getProgramItemList());
+        deviceDto.setUserType(loginUser.getType());
+        //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
+        deviceDto.setPermissonType(loginUser.getPermissonType());
+        return deviceMapper.selectListBySceneId(deviceDto);
+    }
 }

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

@@ -177,7 +177,39 @@ public class OnlineMonitorImpl implements OnlineMonitorService {
         monitorDataCollectDto.setPermissonType(loginUser.getPermissonType());
         return onlineMonitorMapper.selectSceneParam(monitorDataCollectDto);
     }
+    /**
+     * 按管网名称分类查询设备数量
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> selectDeviceCount(OnlineDataDto onlineDataDto) {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        onlineDataDto.setTenantId(loginUser.getTenantId());
+        onlineDataDto.setProgramItems(loginUser.getProgramItemList());
+        onlineDataDto.setUserType(loginUser.getType());
+        //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
+        onlineDataDto.setPermissonType(loginUser.getPermissonType());
+        return onlineMonitorMapper.selectDeviceCount(onlineDataDto);
+    }
+
+    /**
+     * 查询设备地图参数数据
+     * @return
+     */
+    @Override
+    public List<MonitorDataCollectDto> selectDeviceMapParam(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());
+        monitorDataCollectDto.setType(4);
+        List<MonitorDataCollectDto> result=onlineMonitorMapper.selectDeviceMapParam(monitorDataCollectDto);
 
+        return result;
+    }
     /**
      * 获取在线数据及计算数据
      */

+ 62 - 4
sms_water/src/main/resources/mapper/DeviceMapper.xml

@@ -53,10 +53,14 @@
     <select id="selectList" resultType="com.huaxu.dto.DeviceDto">
         select
         <include refid="Base_Column_List"/>
+        <if test="deviceDto.sceneId!= null and deviceDto.sceneId != 0 ">
+            ,s.PARENT_SCENE_ID as "parentSceneId"
+            ,s.SCENE_ID as "sceneId"
+        </if>
         from sms_device d
         left join sms_device_type t on d.DEVICE_TYPE_ID = t.id
         <if test="deviceDto.sceneId!= null and deviceDto.sceneId != 0 ">
-        inner join sms_device_scene s on s.DEVICE_ID=d.ID and s.SCENE_ID=#{deviceDto.sceneId}
+            inner join sms_device_scene s on s.DEVICE_ID=d.ID and s.SCENE_ID=#{deviceDto.sceneId} and s.status=1
         </if>
         where d.status = 1
         <if test="deviceDto.tenantId != null and deviceDto.tenantId != '' ">
@@ -104,7 +108,47 @@
         </if>
 
     </select>
-    <!--通过实体作为筛选条件查询-->
+    <select id="selectListBySceneId" resultType="com.huaxu.dto.DeviceDto">
+        select
+        d.id
+        ,d.DEVICE_NAME as "deviceName"
+        from sms_device d
+        inner join sms_device_scene s on s.DEVICE_ID=d.ID and s.SCENE_ID=#{deviceDto.sceneId} and s.status=1
+        where d.status = 1 and d.ENABLE_STATE = 1
+        <if test="deviceDto.tenantId != null and deviceDto.tenantId != '' ">
+            and d.tenant_id = #{deviceDto.tenantId}
+        </if>
+
+        <if test="deviceDto.userType!=null and deviceDto.userType!=-999 and deviceDto.userType!=-9999 and  deviceDto.programItems != null and deviceDto.programItems.size() > 0">
+            <if test="deviceDto.permissonType == 5 or deviceDto.permissonType == 2">
+                and ( d.DEPT_ORG_ID in
+                <foreach collection="deviceDto.programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                or
+                d.COMPANY_ORG_ID in
+                <foreach collection="deviceDto.programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                )
+            </if>
+            <if test="deviceDto.permissonType == 4 or deviceDto.permissonType == 3">
+                and d.DEPT_ORG_ID in
+                <foreach collection="deviceDto.programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+            </if>
+            <if test="deviceDto.permissonType == 1">
+                and d.COMPANY_ORG_ID in
+                <foreach collection="deviceDto.programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                and (d.DEPT_ORG_ID is null or d.DEPT_ORG_ID =0)
+            </if>
+        </if>
+    </select>
+
+
     <select id="selectListByScene" resultType="com.huaxu.dto.DeviceDto">
         select
          d.id
@@ -129,10 +173,16 @@
         ,t.MANUFACTURER_ID as "manufacturerId"
         ,t.DEVICE_TYPE as "deviceType"
         ,t.DEVICE_MODE as "deviceMode"
+        <if test="deviceDto.sceneId!= null and deviceDto.sceneId != 0 ">
+            ,s.PARENT_SCENE_ID as "parentSceneId"
+            ,s.SCENE_ID as "sceneId"
+        </if>
         ,case when s.ID is null then 0 else 1 end as "isCheck"
         from sms_device d
         left join sms_device_type t on d.DEVICE_TYPE_ID = t.id
-        left join sms_device_scene s on s.DEVICE_ID=d.ID and s.SCENE_ID=#{deviceDto.sceneId} and s.status=1
+        <if test="deviceDto.sceneId!= null and deviceDto.sceneId != 0 ">
+            inner join sms_device_scene s on s.DEVICE_ID=d.ID and s.SCENE_ID=#{deviceDto.sceneId} and s.status=1
+        </if>
         where d.status = 1
         <if test="deviceDto.tenantId != null and deviceDto.tenantId != '' ">
             and d.tenant_id = #{deviceDto.tenantId}
@@ -146,6 +196,10 @@
         <if test="deviceDto.deptOrgId != null and deviceDto.deptOrgId != 0 ">
             and d.DEPT_ORG_ID =#{deviceDto.deptOrgId}
         </if>
+        <if test="deviceDto.deptOrgId == null or deviceDto.deptOrgId == 0 ">
+            and d.DEPT_ORG_ID is null
+        </if>
+
         <if test="deviceDto.enableState != null ">
             and d.ENABLE_STATE =#{deviceDto.enableState}
         </if>
@@ -271,10 +325,14 @@
     <select id="selectPage" resultType="com.huaxu.dto.DeviceDto">
         select
         <include refid="Base_Column_List"/>
+        <if test="deviceDto.sceneId!= null and deviceDto.sceneId != 0 ">
+        ,s.PARENT_SCENE_ID as "parentSceneId"
+        ,s.SCENE_ID as "sceneId"
+        </if>
         from sms_device d
         left join sms_device_type t on d.DEVICE_TYPE_ID = t.id
         <if test="deviceDto.sceneId!= null and deviceDto.sceneId != 0 ">
-            inner join sms_device_scene s on s.DEVICE_ID=d.ID and s.SCENE_ID=#{deviceDto.sceneId}
+            inner join sms_device_scene s on s.DEVICE_ID=d.ID and s.SCENE_ID=#{deviceDto.sceneId} and s.status=1
         </if>
         where d.status = 1
         <if test="deviceDto.tenantId != null and deviceDto.tenantId != '' ">

+ 9 - 6
sms_water/src/main/resources/mapper/MonitorDataReportMapper.xml

@@ -29,7 +29,7 @@
     <select id="MonitorDataChartReportByDay" resultMap="MonitorDataChartReportMap">
         SELECT
             r.`HOUR` AS "dateLabel",
-            CONCAT( r.PARENT_SCENE_NAME, r.DEVICE_NAME ) AS "deviceName",
+            CONCAT( s.SCENE_NAME, r.DEVICE_NAME ) AS "deviceName",
             r.DEVICE_CODE AS "devoceCode",
             r.ATTRIBUTE_NAME AS "attributeName",
             da.unit AS "unit",
@@ -40,6 +40,7 @@
         LEFT JOIN sms_day_report r ON p.DEVICE_ID = r.DEVICE_ID AND p.ATTRIBUTE_ID = r.ATTRIBUTE_ID
         LEFT JOIN sms_device_attribute da ON da.id = r.ATTRIBUTE_ID
         LEFT JOIN sms_device d ON d.id = r.DEVICE_ID
+        left join sms_scene s on s.id=p.PARENT_SCENE_ID
         where p.IS_CHART = 1 and p.`STATUS`= 1
             and p.PARENT_SCENE_ID=#{sceneId}
             and r.year=#{year}
@@ -75,14 +76,14 @@
                 and (d.DEPT_ORG_ID is null or d.DEPT_ORG_ID =0)
             </if>
         </if>
-        group by r.hour ,r.PARENT_SCENE_NAME,r.DEVICE_NAME,r.DEVICE_CODE,r.ATTRIBUTE_NAME,da.unit
+        group by r.hour ,s.SCENE_NAME,r.DEVICE_NAME,r.DEVICE_CODE,r.ATTRIBUTE_NAME,da.unit
         ORDER BY r.`HOUR` ASC
 
     </select>
     <select id="MonitorDataChartReportByMonth" resultMap="MonitorDataChartReportMap">
         SELECT
             r.`day` AS "dateLabel",
-            CONCAT( r.PARENT_SCENE_NAME, r.DEVICE_NAME ) AS "deviceName",
+            CONCAT( s.SCENE_NAME, r.DEVICE_NAME ) AS "deviceName",
             r.DEVICE_CODE AS "devoceCode",
             r.ATTRIBUTE_NAME AS "attributeName",
             da.unit AS "unit",
@@ -93,6 +94,7 @@
         LEFT JOIN sms_month_report r ON p.DEVICE_ID = r.DEVICE_ID AND p.ATTRIBUTE_ID = r.ATTRIBUTE_ID
         LEFT JOIN sms_device_attribute da ON da.id = r.ATTRIBUTE_ID
         LEFT JOIN sms_device d ON d.id = r.DEVICE_ID
+        left join sms_scene s on s.id=p.PARENT_SCENE_ID
         where p.IS_CHART = 1 and p.`STATUS`= 1
         and p.PARENT_SCENE_ID=#{sceneId}
         and r.year=#{year}
@@ -127,13 +129,13 @@
                 and (d.DEPT_ORG_ID is null or d.DEPT_ORG_ID =0)
             </if>
         </if>
-        group by r.day ,r.PARENT_SCENE_NAME,r.DEVICE_NAME,r.DEVICE_CODE,r.ATTRIBUTE_NAME,da.unit
+        group by r.day ,s.SCENE_NAME,r.DEVICE_NAME,r.DEVICE_CODE,r.ATTRIBUTE_NAME,da.unit
         ORDER BY r.`day` ASC
     </select>
     <select id="MonitorDataChartReportByYear" resultMap="MonitorDataChartReportMap">
         SELECT
             r.`month` AS "dateLabel",
-            CONCAT( r.PARENT_SCENE_NAME, r.DEVICE_NAME ) AS "deviceName",
+            CONCAT( s.SCENE_NAME, r.DEVICE_NAME ) AS "deviceName",
             r.DEVICE_CODE AS "devoceCode",
             r.ATTRIBUTE_NAME AS "attributeName",
             da.unit AS "unit",
@@ -144,6 +146,7 @@
         LEFT JOIN sms_year_report r ON p.DEVICE_ID = r.DEVICE_ID AND p.ATTRIBUTE_ID = r.ATTRIBUTE_ID
         LEFT JOIN sms_device_attribute da ON da.id = r.ATTRIBUTE_ID
         LEFT JOIN sms_device d ON d.id = r.DEVICE_ID
+        left join sms_scene s on s.id=p.PARENT_SCENE_ID
         where p.IS_CHART = 1 and p.`STATUS`= 1
         and p.PARENT_SCENE_ID=#{sceneId}
         and r.year=#{year}
@@ -177,7 +180,7 @@
                 and (d.DEPT_ORG_ID is null or d.DEPT_ORG_ID =0)
             </if>
         </if>
-        group by r.month ,r.PARENT_SCENE_NAME,r.DEVICE_NAME,r.DEVICE_CODE,r.ATTRIBUTE_NAME,da.unit
+        group by r.month ,s.SCENE_NAME,r.DEVICE_NAME,r.DEVICE_CODE,r.ATTRIBUTE_NAME,da.unit
         ORDER BY r.`month` ASC
     </select>
 

+ 58 - 6
sms_water/src/main/resources/mapper/OnlineMonitorMapper.xml

@@ -20,6 +20,24 @@
             <result property="latestValue" column="latest_value" jdbcType="VARCHAR"/>
         </collection>
     </resultMap>
+    <!-- 设备结果集 -->
+    <resultMap type="com.huaxu.dto.MonitorDataCollectDto" id="deviceDataMap">
+        <result property="sceneId" column="scene_id" jdbcType="INTEGER"/>
+        <result property="sceneName" column="scene_name" jdbcType="VARCHAR"/>
+        <result property="deviceId" column="device_id" jdbcType="INTEGER"/>
+        <result property="deviceCode" column="device_code" jdbcType="VARCHAR"/>
+        <result property="deviceName" column="device_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"/>
+        <result property="sceneState" column="scene_state" jdbcType="INTEGER"/>
+        <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>
 
     <sql id="Base_Column_List">
         t1.id scene_Id,
@@ -215,12 +233,6 @@
             select b1.device_id,b1.attribute_id,max(latest_value) latest_value
             from sms_day_report b1
             where b1.year = year(now() + interval-1 day) and b1.month = month(now() + interval-1 day) and b1.day = day(now() + interval-1 day)
-                <if test="sceneIds != null and sceneIds.size() > 0">
-                    and b1.parent_scene_id  in
-                    <foreach collection="sceneIds" item="item" open="(" close=")" separator=",">
-                        #{item}
-                    </foreach>
-                </if>
             group by b1.device_id,b1.attribute_id
         )t8 on t8.device_id=t2.device_id and t8.attribute_id =t5.attribute_id
         where t1.parent_scene_id = 0 and t1. status = 1
@@ -247,4 +259,44 @@
         </if>
         order by t1.scene_name,t5.seq
     </select>
+    <!--按管网名称分类查询设备数量-->
+    <select id="selectDeviceCount" resultType="java.util.Map">
+        select  t1.id,t1.scene_name sceneName,sum(if(t5.id is null,0,1)) deviceCount
+        from sms_scene t1
+        inner join sms_scene_type t3 on t1.scene_type_id=t3.id and t3. status = 1
+        left join sms_device_scene t2 on t2.parent_scene_id=t1.id and t2. status = 1
+        left join sms_device t6 on t2.device_id=t6.id and t6. status = 1
+        left join sms_scene t4 on t2.scene_id=t4.id and t4. status = 1
+        left join sms_scene_type t5 on t4.scene_type_id=t5.id and t5. status = 1 and t5.scene_type_name = #{sceneTypeName}
+        where t1.parent_scene_id = 0 and t1. status = 1 and t1. enable_state = 1 and t3.scene_type_name = '管网'
+        <if test="sceneIds != null and sceneIds.size() > 0">
+            and t1.id  in
+            <foreach collection="sceneIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <if test="sceneIds == null or sceneIds.size() == 0">
+            and t1.id is null
+        </if>
+        <if test="sceneId != null">
+            and t1.id = #{sceneId}
+        </if>
+        <if test="deviceName != null and deviceName != ''">
+            and t6.device_name like concat('%', #{deviceName},'%')
+        </if>
+        group by t1.id,t1.scene_name
+    </select>
+    <!--查询设备地图参数数据-->
+    <select id="selectDeviceMapParam" resultMap="deviceDataMap">
+        select  distinct t1.id device_id,t1.device_code,t1.device_name,t1.point_x,point_y,t1.address,t2.attribute_id, ifnull(t2.remark, t3.`name`) attribute_name,t3.unit,
+         case when t2.attribute_id is  null then null when t6.id is null then 0 else 1 end is_alarm, if (t4.alarm_count>0, 1, 0) scene_state
+        from sms_device  t1
+        left join sms_device_parm t2 on t2.device_id=t1.id and t2.is_map=1
+        left join sms_device_attribute t3 on t2.attribute_id=t3.id
+        left join (
+        select a1.device_id,count(1) alarm_count from sms_alarm_details a1 where a1.device_id= #{deviceId} and a1.`status` = 1 and a1.state = 1
+        )t4 on t4.device_id=t1.id
+        left join sms_alarm_details t6 on t6.device_id=t1.id and t6.attribute_id=t2.attribute_id and t6.status = 1 and t6.state=1
+        where t1. status = 1 and t1. enable_state = 1 and t1.id= #{deviceId}
+    </select>
 </mapper>