ComDisplayController.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. package com.huaxu.controller;
  2. import com.huaxu.dto.*;
  3. import com.huaxu.dto.generalView.WaterSupplyChart;
  4. import com.huaxu.entity.MonitorDataEntity;
  5. import com.huaxu.entity.MonitorDataValueEntity;
  6. import com.huaxu.entity.SceneEntity;
  7. import com.huaxu.model.AjaxMessage;
  8. import com.huaxu.model.ResultStatus;
  9. import com.huaxu.service.*;
  10. import com.huaxu.util.ByteArrayUtils;
  11. import com.huaxu.util.OrgInfoUtil;
  12. import com.huaxu.util.RedisUtil;
  13. import io.swagger.annotations.Api;
  14. import io.swagger.annotations.ApiOperation;
  15. import io.swagger.annotations.ApiParam;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.web.bind.annotation.RequestMapping;
  18. import org.springframework.web.bind.annotation.RequestMethod;
  19. import org.springframework.web.bind.annotation.RequestParam;
  20. import org.springframework.web.bind.annotation.RestController;
  21. import java.time.LocalDateTime;
  22. import java.util.ArrayList;
  23. import java.util.HashMap;
  24. import java.util.List;
  25. import java.util.Map;
  26. @RestController
  27. @RequestMapping("/comDisplay")
  28. @Api(tags = "综合展示")
  29. public class ComDisplayController {
  30. @Autowired
  31. private MonitorDataReportService monitorDataReportService;
  32. @Autowired
  33. private RedisUtil redisUtil;
  34. @Autowired
  35. private DeviceService deviceService;
  36. @Autowired
  37. private SceneService sceneService;
  38. @Autowired
  39. private MonitorInfoService monitorInfoService;
  40. @Autowired
  41. private OnlineMonitorService onlineMonitorService;
  42. @Autowired
  43. private ComdisplayMapLocationService comdisplayMapLocationService;
  44. @Autowired
  45. private OrgInfoUtil orgInfoUtil;
  46. @RequestMapping(value = "waterSupplyCharts", method = RequestMethod.GET)
  47. @ApiOperation(value = "制水电耗对比曲线图")
  48. public AjaxMessage<List<WaterSupplyChart>> waterSupplyCharts(@RequestParam(required = false) Integer companyOrgId) {
  49. return new AjaxMessage<>(ResultStatus.OK, monitorDataReportService.waterSupplyChartsByMonth("水厂", companyOrgId));
  50. }
  51. @RequestMapping(value = "yieldPowerUsage", method = RequestMethod.GET)
  52. @ApiOperation(value = "吨水电耗")
  53. public AjaxMessage<ComUsageDto> yieldPowerUsage(@RequestParam(required = false) Long companyOrgId) {
  54. ComUsageDto sceneUsageDto = new ComUsageDto();
  55. //查询公司下的场景
  56. SceneEntity sceneEntity = new SceneEntity();
  57. sceneEntity.setSceneTypeName("水厂");
  58. List<SceneEntity> sceneEntities = sceneService.selectByTypeNameForCom(sceneEntity,companyOrgId);
  59. for (SceneEntity itemScene : sceneEntities) {
  60. //查询场景下的所有设备信息
  61. List<DeviceDto> devices = new ArrayList<>();
  62. DeviceDto deviceDto = new DeviceDto();
  63. deviceDto.setSceneIds(sceneService.findByParentIdsLike(itemScene.getId()));
  64. if (deviceDto.getSceneIds().size() == 0)
  65. continue;
  66. devices.addAll(deviceService.selectList(deviceDto));
  67. //取前一天
  68. LocalDateTime dateTime = LocalDateTime.now().plusDays(-1);
  69. for (DeviceDto item : devices) {
  70. //设备的几个参数值
  71. SceneDeviceAttributeDto sceneDeviceAttributeDto = new SceneDeviceAttributeDto();
  72. sceneDeviceAttributeDto.setDeviceId(item.getId());
  73. sceneDeviceAttributeDto.setYear(dateTime.getYear());
  74. sceneDeviceAttributeDto.setMonth(dateTime.getMonthValue());
  75. sceneDeviceAttributeDto.setDay(dateTime.getDayOfMonth());
  76. sceneDeviceAttributeDto.setSceneId(itemScene.getId());
  77. List<SceneDeviceAttributeDto> sceneDeviceAttributeDtos = monitorInfoService.findAttributeList(sceneDeviceAttributeDto);
  78. //取缓存里的数据
  79. byte[] bytes = redisUtil.get(("sms_water_" + item.getDeviceCode()).getBytes());
  80. if (bytes != null && bytes.length > 0) {
  81. MonitorDataEntity monitorDataEntity = (MonitorDataEntity) ByteArrayUtils.bytesToObject(bytes).get();
  82. //筛选该设备相同属性的值
  83. Map<Long, MonitorDataValueEntity> map = new HashMap<>();
  84. //将缓存中的实时数据放到map中方便进行遍历
  85. for (MonitorDataValueEntity dateValue : monitorDataEntity.getDataValues()) {
  86. map.put(dateValue.getAttributeId(), dateValue);
  87. }
  88. for (SceneDeviceAttributeDto itemAttribute : sceneDeviceAttributeDtos) {
  89. Double attributeDiffValue = 0d;
  90. if (!map.containsKey(itemAttribute.getAttributeId())) {
  91. continue;
  92. }
  93. if (map.get(itemAttribute.getAttributeId()).getDataValue() != null && itemAttribute.getLatestValue() != null) {
  94. attributeDiffValue = map.get(itemAttribute.getAttributeId()).getDataValue() - itemAttribute.getLatestValue();
  95. } else if (map.get(itemAttribute.getAttributeId()).getDataValue() != null && itemAttribute.getLatestValue() == null) {
  96. attributeDiffValue = map.get(itemAttribute.getAttributeId()).getDataValue();
  97. }
  98. switch (itemAttribute.getAttributeType()) {
  99. case "3":
  100. sceneUsageDto.setYieldWaterUsage(sceneUsageDto.getYieldWaterUsage() != null ? (double) Math.round((sceneUsageDto.getYieldWaterUsage() + attributeDiffValue) * 1000) / 1000 : (double) Math.round((attributeDiffValue) * 1000) / 1000);
  101. break;
  102. case "5":
  103. sceneUsageDto.setPowerUsage(sceneUsageDto.getPowerUsage() != null ? (double) Math.round((sceneUsageDto.getPowerUsage() + attributeDiffValue) * 1000) / 1000 : (double) Math.round((attributeDiffValue) * 1000) / 1000);
  104. break;
  105. }
  106. }
  107. if (sceneUsageDto.getYieldWaterUsage() == null)
  108. sceneUsageDto.setYieldWaterUsage(sceneUsageDto.getYieldWaterUsage());
  109. if (sceneUsageDto.getPowerUsage() == null)
  110. sceneUsageDto.setPowerUsage(sceneUsageDto.getPowerUsage());
  111. }
  112. }
  113. }
  114. if (sceneUsageDto.getPowerUsage() != null && sceneUsageDto.getYieldWaterUsage() != null && sceneUsageDto.getPowerUsage() != 0) {
  115. sceneUsageDto.setYieldPowerUsage((double) Math.round((sceneUsageDto.getYieldWaterUsage() / sceneUsageDto.getPowerUsage()) * 100) / 100);
  116. } else {
  117. sceneUsageDto.setYieldPowerUsage(0d);
  118. }
  119. return new AjaxMessage<>(ResultStatus.OK, sceneUsageDto);
  120. }
  121. @RequestMapping(value="selectMapForCompany" , method = RequestMethod.GET)
  122. @ApiOperation(value = "二供供水排行--分公司")
  123. public AjaxMessage<List<MonitorDataCollectDto>> selectMapForCompany(@RequestParam(required = true) Integer companyOrgId) {
  124. MonitorDataCollectDto monitorDataCollectDto = new MonitorDataCollectDto();
  125. monitorDataCollectDto.setSceneTypeName("泵站");
  126. monitorDataCollectDto.setSceneIds(sceneService.findByParentIdsByCom(Long.valueOf(companyOrgId)));
  127. List<MonitorDataCollectDto> result = onlineMonitorService.selectMapSuspension(monitorDataCollectDto);
  128. return new AjaxMessage<>(ResultStatus.OK, result);
  129. }
  130. @RequestMapping(value="selectMapForWholeCompany" , method = RequestMethod.GET)
  131. @ApiOperation(value = "二供供水排行--总公司")
  132. public AjaxMessage<List<SecDataCollectDto>> selectMapForWholeCompany() {
  133. MonitorDataCollectDto monitorDataCollectDto = new MonitorDataCollectDto();
  134. monitorDataCollectDto.setSceneTypeName("泵站");
  135. monitorDataCollectDto.setSceneIds(sceneService.findByParentIdsByCom(null));
  136. List<SecDataCollectDto> result = onlineMonitorService.selectMapForWholeCompany(monitorDataCollectDto);
  137. return new AjaxMessage<>(ResultStatus.OK, result);
  138. }
  139. @RequestMapping(value="selectMapDataForCompany" , method = RequestMethod.GET)
  140. @ApiOperation(value = "地图详细信息展示")
  141. public AjaxMessage<List<ComdisplayInfoDto>> selectMapDataForCompany() {
  142. List<ComdisplayInfoDto> receFee = comdisplayMapLocationService.selectMapDataForCompany();
  143. for (ComdisplayInfoDto item : receFee) {
  144. item.setCompanyOrgName(orgInfoUtil.getOrgName(item.getCompanyOrgId()));
  145. Double waterUsage = item.getWaterUsage() != null ? item.getWaterUsage() : 0d;//售水量
  146. //查询子公司的取水量、制水量 产销差(制水量-售水量)/制水量 X 100%
  147. ComdisplayInfoDto comdisplayInfoDto= comdisplayMapLocationService.selectMapDataForCompany(Long.valueOf(item.getCompanyOrgId()));
  148. if(comdisplayInfoDto!=null)
  149. {
  150. item.setIntakeWaterUsage(comdisplayInfoDto.getIntakeWaterUsage());
  151. item.setYieldWaterUsage(comdisplayInfoDto.getYieldWaterUsage());
  152. if(comdisplayInfoDto.getYieldWaterUsage()!=null&&comdisplayInfoDto.getYieldWaterUsage()>0d)
  153. {
  154. item.setWaterFeeRecoveryRate(Double.valueOf(Math.round(((comdisplayInfoDto.getYieldWaterUsage()-waterUsage)/comdisplayInfoDto.getYieldWaterUsage())*100)));
  155. }
  156. }
  157. }
  158. return new AjaxMessage<>(ResultStatus.OK, receFee);
  159. }
  160. @RequestMapping(value="selectPipeNetLayer" , method = RequestMethod.GET)
  161. @ApiOperation(value = "查询管网地图图层及设备")
  162. public AjaxMessage<List<PipeNetLayerDto>> selectPipeNetLayer(
  163. @ApiParam(value = "公司机构id", required = true)@RequestParam Integer companyOrgId){
  164. OnlineDataDto onlineDataDto=new OnlineDataDto();
  165. onlineDataDto.setFlag(1);
  166. onlineDataDto.setSceneIds(sceneService.findByParentIdsByCom(Long.valueOf(companyOrgId)));
  167. List<PipeNetLayerDto> result=onlineMonitorService.selectPipeNetLayer(onlineDataDto);
  168. return new AjaxMessage<>(ResultStatus.OK, result);
  169. }
  170. @RequestMapping(value="selectDeviceMapParam" , method = RequestMethod.GET)
  171. @ApiOperation(value = "查询设备地图参数数据")
  172. public AjaxMessage<List<MonitorDataCollectDto>> selectDeviceMapParam(
  173. @ApiParam(value = "一级场景id", required = true) @RequestParam Long deviceId){
  174. MonitorDataCollectDto monitorDataCollectDto=new MonitorDataCollectDto();
  175. monitorDataCollectDto.setDeviceId(deviceId);
  176. monitorDataCollectDto.setFlag(1);
  177. monitorDataCollectDto.setSceneIds(sceneService.findByParentIdsLike(null));
  178. List<MonitorDataCollectDto> result=onlineMonitorService.selectDeviceMapParam(monitorDataCollectDto);
  179. return new AjaxMessage<>(ResultStatus.OK, result);
  180. }
  181. @RequestMapping(value="selectMapSuspension" , method = RequestMethod.GET)
  182. @ApiOperation(value = "查询地图悬浮数据")
  183. public AjaxMessage<List<MonitorDataCollectDto>> selectMapSuspension(
  184. @ApiParam(value = "公司机构id", required = true)@RequestParam Integer companyOrgId){
  185. MonitorDataCollectDto monitorDataCollectDto=new MonitorDataCollectDto();
  186. monitorDataCollectDto.setFlag(1);
  187. monitorDataCollectDto.setSceneIds(sceneService.findByParentIdsByCom(Long.valueOf(companyOrgId)));
  188. List<MonitorDataCollectDto> result=onlineMonitorService.selectMapSuspension(monitorDataCollectDto);
  189. return new AjaxMessage<>(ResultStatus.OK, result);
  190. }
  191. @RequestMapping(value="selectMapParam" , method = RequestMethod.GET)
  192. @ApiOperation(value = "查询地图参数数据")
  193. public AjaxMessage<List<MonitorDataCollectDto>> selectMapParam(
  194. @ApiParam(value = "一级场景id", required = true) @RequestParam Long sceneId){
  195. MonitorDataCollectDto monitorDataCollectDto=new MonitorDataCollectDto();
  196. monitorDataCollectDto.setSceneId(sceneId);
  197. monitorDataCollectDto.setFlag(1);
  198. monitorDataCollectDto.setSceneIds(sceneService.findByParentIdsLike(null));
  199. List<MonitorDataCollectDto> result=onlineMonitorService.selectMapParam(monitorDataCollectDto);
  200. return new AjaxMessage<>(ResultStatus.OK, result);
  201. }
  202. }