Parcourir la source

bug修改、查询设备及管网设备数

yuejiaying il y a 4 ans
Parent
commit
9c51bb68c8

+ 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);
+    }
 }

+ 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;
 }

+ 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);
 }

+ 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;
+    }
     /**
      * 获取在线数据及计算数据
      */

+ 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>