OnlineMonitorController.java 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package com.huaxu.controller;
  2. import com.baomidou.mybatisplus.core.metadata.IPage;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.huaxu.dto.AlarmDetailsDto;
  5. import com.huaxu.dto.MonitorDataCollectDto;
  6. import com.huaxu.dto.MonitorDataDto;
  7. import com.huaxu.dto.OnlineDataDto;
  8. import com.huaxu.entity.MonitorDataEntity;
  9. import com.huaxu.entity.MonitorDataValueEntity;
  10. import com.huaxu.model.AjaxMessage;
  11. import com.huaxu.model.Pagination;
  12. import com.huaxu.model.ResultStatus;
  13. import com.huaxu.service.DeviceAttributeSpecsService;
  14. import com.huaxu.service.OnlineMonitorService;
  15. import com.huaxu.service.SceneService;
  16. import com.huaxu.util.ByteArrayUtils;
  17. import com.huaxu.util.RedisUtil;
  18. import io.swagger.annotations.Api;
  19. import io.swagger.annotations.ApiOperation;
  20. import io.swagger.annotations.ApiParam;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.web.bind.annotation.*;
  23. import java.text.DecimalFormat;
  24. import java.util.ArrayList;
  25. import java.util.Comparator;
  26. import java.util.List;
  27. import java.util.Map;
  28. import java.util.stream.Collectors;
  29. /**
  30. * 在线监测控制层
  31. *
  32. * @author yjy
  33. * @since 2020-12-2
  34. */
  35. @RestController
  36. @RequestMapping("/onlineMonitor")
  37. @Api(tags = "在线监测")
  38. public class OnlineMonitorController {
  39. /**
  40. * 服务对象
  41. */
  42. @Autowired
  43. private OnlineMonitorService onlineMonitorService;
  44. @Autowired
  45. private SceneService sceneService;
  46. @RequestMapping(value="selectAlarmDetails" , method = RequestMethod.GET)
  47. @ApiOperation(value = "查询实时报警信息")
  48. public AjaxMessage<List<AlarmDetailsDto>> selectAlarmDetails(
  49. @ApiParam(value = "一级场景类型名称", required = true) @RequestParam String sceneTypeName,
  50. @ApiParam(value = "场景名称", required = false) @RequestParam(required = false) String sceneName){
  51. AlarmDetailsDto alarmDetailsDto=new AlarmDetailsDto();
  52. alarmDetailsDto.setSceneTypeName(sceneTypeName);
  53. alarmDetailsDto.setSceneName(sceneName);
  54. alarmDetailsDto.setSceneIds(sceneService.findByParentIdsLike(null));
  55. return new AjaxMessage<>(ResultStatus.OK, onlineMonitorService.selectAlarmDetails(alarmDetailsDto));
  56. }
  57. @RequestMapping(value="selectAlarmCount" , method = RequestMethod.GET)
  58. @ApiOperation(value = "查询实时报警数量")
  59. public AjaxMessage<List<Map<String, Object>>> selectAlarmCount(
  60. @ApiParam(value = "一级场景类型名称", required = true) @RequestParam String sceneTypeName,
  61. @ApiParam(value = "场景名称", required = false) @RequestParam(required = false) String sceneName){
  62. AlarmDetailsDto alarmDetailsDto=new AlarmDetailsDto();
  63. alarmDetailsDto.setSceneTypeName(sceneTypeName);
  64. alarmDetailsDto.setSceneName(sceneName);
  65. alarmDetailsDto.setSceneIds(sceneService.findByParentIdsLike(null));
  66. return new AjaxMessage<>(ResultStatus.OK, onlineMonitorService.selectAlarmCount(alarmDetailsDto));
  67. }
  68. @RequestMapping(value="selectMapSuspension" , method = RequestMethod.GET)
  69. @ApiOperation(value = "查询地图悬浮数据及用水量排行")
  70. public AjaxMessage<List<MonitorDataCollectDto>> selectMapSuspension(
  71. @ApiParam(value = "一级场景类型名称", required = true) @RequestParam String sceneTypeName){
  72. MonitorDataCollectDto monitorDataCollectDto=new MonitorDataCollectDto();
  73. monitorDataCollectDto.setSceneTypeName(sceneTypeName);
  74. monitorDataCollectDto.setSceneIds(sceneService.findByParentIdsLike(null));
  75. List<MonitorDataCollectDto> result=onlineMonitorService.selectMapSuspension(monitorDataCollectDto);
  76. return new AjaxMessage<>(ResultStatus.OK, result);
  77. }
  78. @RequestMapping(value="selectMapParam" , method = RequestMethod.GET)
  79. @ApiOperation(value = "查询地图参数数据")
  80. public AjaxMessage<List<MonitorDataCollectDto>> selectMapParam(
  81. @ApiParam(value = "一级场景id", required = true) @RequestParam Long sceneId){
  82. MonitorDataCollectDto monitorDataCollectDto=new MonitorDataCollectDto();
  83. monitorDataCollectDto.setSceneId(sceneId);
  84. monitorDataCollectDto.setSceneIds(sceneService.findByParentIdsLike(null));
  85. List<MonitorDataCollectDto> result=onlineMonitorService.selectMapParam(monitorDataCollectDto);
  86. return new AjaxMessage<>(ResultStatus.OK, result);
  87. }
  88. @RequestMapping(value="selectPage" , method = RequestMethod.GET)
  89. @ApiOperation(value = "查询实时数据列表")
  90. public AjaxMessage<Pagination<OnlineDataDto>> selectPage(
  91. @ApiParam(value = "页数", required = true)@RequestParam Integer pageNum,
  92. @ApiParam(value = "条数", required = true)@RequestParam Integer pageSize,
  93. @ApiParam(value = "一级场景类型名称", required = true) @RequestParam String sceneTypeName,
  94. @ApiParam(value = "场景名称", required = false) @RequestParam(required = false) String sceneName){
  95. OnlineDataDto onlineDataDto=new OnlineDataDto();
  96. onlineDataDto.setSceneTypeName(sceneTypeName);
  97. onlineDataDto.setSceneName(sceneName);
  98. onlineDataDto.setSceneIds(sceneService.findByParentIdsLike(null));
  99. IPage<OnlineDataDto> iPage = new Page<>(pageNum, pageSize);
  100. iPage = onlineMonitorService.selectPage(iPage, onlineDataDto);
  101. Pagination<OnlineDataDto> pages = new Pagination<>(iPage);
  102. return new AjaxMessage<>(ResultStatus.OK, pages);
  103. }
  104. @RequestMapping(value="selectAlarmStats" , method = RequestMethod.GET)
  105. @ApiOperation(value = "查询设备报警分析")
  106. public AjaxMessage<List<Map<String, Object>>> selectAlarmStats(
  107. @ApiParam(value = "一级场景id", required = true) @RequestParam Long sceneId,
  108. @ApiParam(value = "查询天数 1、3、7", required = true) @RequestParam Integer days){
  109. AlarmDetailsDto alarmDetailsDto=new AlarmDetailsDto();
  110. alarmDetailsDto.setId(sceneId);
  111. alarmDetailsDto.setDays(days);
  112. alarmDetailsDto.setSceneIds(sceneService.findByParentIdsLike(null));
  113. return new AjaxMessage<>(ResultStatus.OK, onlineMonitorService.selectAlarmStats(alarmDetailsDto));
  114. }
  115. @RequestMapping(value="selectDeviceCount" , method = RequestMethod.GET)
  116. @ApiOperation(value = "按管网名称分类查询设备数量",notes = "sceneTypeName 为压力、水质、流量")
  117. public AjaxMessage<List<Map<String, Object>>> selectDeviceCount(
  118. @ApiParam(value = "场景类型名称", required = true) @RequestParam String sceneTypeName,
  119. @ApiParam(value = "场景id", required = false) @RequestParam(required = false) Long sceneId,
  120. @ApiParam(value = "设备名称", required = false) @RequestParam(required = false) String deviceName){
  121. OnlineDataDto onlineDataDto=new OnlineDataDto();
  122. onlineDataDto.setSceneTypeName(sceneTypeName);
  123. onlineDataDto.setSceneId(sceneId);
  124. onlineDataDto.setDeviceName(deviceName);
  125. onlineDataDto.setSceneIds(sceneService.findByParentIdsLike(null));
  126. return new AjaxMessage<>(ResultStatus.OK, onlineMonitorService.selectDeviceCount(onlineDataDto));
  127. }
  128. @RequestMapping(value="selectDeviceMapParam" , method = RequestMethod.GET)
  129. @ApiOperation(value = "查询设备地图参数数据")
  130. public AjaxMessage<List<MonitorDataCollectDto>> selectDeviceMapParam(
  131. @ApiParam(value = "一级场景id", required = true) @RequestParam Long deviceId){
  132. MonitorDataCollectDto monitorDataCollectDto=new MonitorDataCollectDto();
  133. monitorDataCollectDto.setDeviceId(deviceId);
  134. monitorDataCollectDto.setSceneIds(sceneService.findByParentIdsLike(null));
  135. List<MonitorDataCollectDto> result=onlineMonitorService.selectDeviceMapParam(monitorDataCollectDto);
  136. return new AjaxMessage<>(ResultStatus.OK, result);
  137. }
  138. }