package com.huaxu.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.huaxu.dto.AlarmDetailsDto; import com.huaxu.dto.MonitorDataCollectDto; import com.huaxu.dto.MonitorDataDto; import com.huaxu.dto.OnlineDataDto; import com.huaxu.entity.MonitorDataEntity; import com.huaxu.entity.MonitorDataValueEntity; import com.huaxu.model.AjaxMessage; import com.huaxu.model.Pagination; import com.huaxu.model.ResultStatus; import com.huaxu.service.DeviceAttributeSpecsService; import com.huaxu.service.OnlineMonitorService; import com.huaxu.service.SceneService; import com.huaxu.util.ByteArrayUtils; import com.huaxu.util.RedisUtil; 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.text.DecimalFormat; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 在线监测控制层 * * @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> 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>> 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> selectMapSuspension( @ApiParam(value = "一级场景类型名称", required = true) @RequestParam String sceneTypeName){ MonitorDataCollectDto monitorDataCollectDto=new MonitorDataCollectDto(); monitorDataCollectDto.setSceneTypeName(sceneTypeName); monitorDataCollectDto.setSceneIds(sceneService.findByParentIdsLike(null)); List result=onlineMonitorService.selectMapSuspension(monitorDataCollectDto); return new AjaxMessage<>(ResultStatus.OK, result); } @RequestMapping(value="selectMapParam" , method = RequestMethod.GET) @ApiOperation(value = "查询地图参数数据") public AjaxMessage> selectMapParam( @ApiParam(value = "一级场景id", required = true) @RequestParam Long sceneId){ MonitorDataCollectDto monitorDataCollectDto=new MonitorDataCollectDto(); monitorDataCollectDto.setSceneId(sceneId); monitorDataCollectDto.setSceneIds(sceneService.findByParentIdsLike(null)); List result=onlineMonitorService.selectMapParam(monitorDataCollectDto); return new AjaxMessage<>(ResultStatus.OK, result); } @RequestMapping(value="selectPage" , method = RequestMethod.GET) @ApiOperation(value = "查询实时数据列表") public AjaxMessage> selectPage( @ApiParam(value = "页数", required = true)@RequestParam Integer pageNum, @ApiParam(value = "条数", required = true)@RequestParam Integer pageSize, @ApiParam(value = "一级场景类型名称", required = true) @RequestParam String sceneTypeName, @ApiParam(value = "场景名称", required = false) @RequestParam(required = false) String sceneName){ OnlineDataDto onlineDataDto=new OnlineDataDto(); onlineDataDto.setSceneTypeName(sceneTypeName); onlineDataDto.setSceneName(sceneName); onlineDataDto.setSceneIds(sceneService.findByParentIdsLike(null)); IPage iPage = new Page<>(pageNum, pageSize); iPage = onlineMonitorService.selectPage(iPage, onlineDataDto); Pagination pages = new Pagination<>(iPage); return new AjaxMessage<>(ResultStatus.OK, pages); } @RequestMapping(value="selectAlarmStats" , method = RequestMethod.GET) @ApiOperation(value = "查询设备报警分析") public AjaxMessage>> selectAlarmStats( @ApiParam(value = "一级场景id", required = true) @RequestParam Long sceneId, @ApiParam(value = "查询天数 1、3、7", required = true) @RequestParam Integer days){ AlarmDetailsDto alarmDetailsDto=new AlarmDetailsDto(); alarmDetailsDto.setId(sceneId); alarmDetailsDto.setDays(days); 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>> 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> selectDeviceMapParam( @ApiParam(value = "一级场景id", required = true) @RequestParam Long deviceId){ MonitorDataCollectDto monitorDataCollectDto=new MonitorDataCollectDto(); monitorDataCollectDto.setDeviceId(deviceId); monitorDataCollectDto.setSceneIds(sceneService.findByParentIdsLike(null)); List result=onlineMonitorService.selectDeviceMapParam(monitorDataCollectDto); return new AjaxMessage<>(ResultStatus.OK, result); } }