|
@@ -1,9 +1,6 @@
|
|
package com.huaxu.controller;
|
|
package com.huaxu.controller;
|
|
|
|
|
|
-import com.huaxu.dto.AlarmDetailsDto;
|
|
|
|
-import com.huaxu.dto.DeviceDto;
|
|
|
|
-import com.huaxu.dto.MonitorDataDto;
|
|
|
|
-import com.huaxu.dto.ReportDto;
|
|
|
|
|
|
+import com.huaxu.dto.*;
|
|
import com.huaxu.entity.*;
|
|
import com.huaxu.entity.*;
|
|
import com.huaxu.model.AjaxMessage;
|
|
import com.huaxu.model.AjaxMessage;
|
|
import com.huaxu.model.LoginUser;
|
|
import com.huaxu.model.LoginUser;
|
|
@@ -20,6 +17,7 @@ import org.springframework.stereotype.Controller;
|
|
import org.springframework.validation.annotation.Validated;
|
|
import org.springframework.validation.annotation.Validated;
|
|
import org.springframework.ui.ModelMap;
|
|
import org.springframework.ui.ModelMap;
|
|
|
|
|
|
|
|
+import java.time.LocalDateTime;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -53,45 +51,57 @@ public class MonitorInfoController {
|
|
@ApiOperation(value = "按场景ID查询供水量出水量耗药量耗电量")
|
|
@ApiOperation(value = "按场景ID查询供水量出水量耗药量耗电量")
|
|
@RequestMapping(value = "/findTotalUsageBySceneId",method = RequestMethod.GET)
|
|
@RequestMapping(value = "/findTotalUsageBySceneId",method = RequestMethod.GET)
|
|
@ResponseBody
|
|
@ResponseBody
|
|
- public AjaxMessage<ReportDto> findTotalUsageBySceneId(@ApiParam(value = "场景ID", required = true) @RequestParam Long id) {
|
|
|
|
- //查询场景下的所有设备信息
|
|
|
|
|
|
+ public AjaxMessage<SceneUsageDto> findTotalUsageBySceneId(@ApiParam(value = "场景ID", required = true) @RequestParam Long id) {
|
|
|
|
+ SceneUsageDto sceneUsageDto = new SceneUsageDto();
|
|
|
|
+ //查询场景下的所有设备信息
|
|
List<DeviceDto> devices = new ArrayList<>();
|
|
List<DeviceDto> devices = new ArrayList<>();
|
|
DeviceDto deviceDto = new DeviceDto();
|
|
DeviceDto deviceDto = new DeviceDto();
|
|
deviceDto.setSceneIds(sceneService.findByParentIdsLike(id));
|
|
deviceDto.setSceneIds(sceneService.findByParentIdsLike(id));
|
|
devices.addAll(deviceService.selectList(deviceDto));
|
|
devices.addAll(deviceService.selectList(deviceDto));
|
|
-
|
|
|
|
- for(DeviceDto item : devices) {
|
|
|
|
|
|
+ //取前一个小时的时间
|
|
|
|
+ LocalDateTime dateTime = LocalDateTime.now().plusDays(-1);
|
|
|
|
+ for (DeviceDto item : devices) {
|
|
|
|
+ //设备的几个参数值
|
|
|
|
+ SceneDeviceAttributeDto sceneDeviceAttributeDto = new SceneDeviceAttributeDto();
|
|
|
|
+ sceneDeviceAttributeDto.setDeviceId(item.getId());
|
|
|
|
+ sceneDeviceAttributeDto.setYear(dateTime.getYear());
|
|
|
|
+ sceneDeviceAttributeDto.setMonth(dateTime.getMonthValue());
|
|
|
|
+ sceneDeviceAttributeDto.setDay(dateTime.getDayOfMonth());
|
|
|
|
+ List<SceneDeviceAttributeDto> sceneDeviceAttributeDtos = monitorInfoService.findAttributeList(sceneDeviceAttributeDto);
|
|
//取缓存里的数据
|
|
//取缓存里的数据
|
|
byte[] bytes = redisUtil.get(("sms_water_" + item.getDeviceCode()).getBytes());
|
|
byte[] bytes = redisUtil.get(("sms_water_" + item.getDeviceCode()).getBytes());
|
|
if (bytes != null && bytes.length > 0) {
|
|
if (bytes != null && bytes.length > 0) {
|
|
MonitorDataEntity monitorDataEntity = (MonitorDataEntity) ByteArrayUtils.bytesToObject(bytes).get();
|
|
MonitorDataEntity monitorDataEntity = (MonitorDataEntity) ByteArrayUtils.bytesToObject(bytes).get();
|
|
//筛选该设备相同属性的值
|
|
//筛选该设备相同属性的值
|
|
-// List<MonitorDataValueEntity> attributeEntities = monitorDataEntity.getDataValues().stream().filter((MonitorDataValueEntity m)
|
|
|
|
-// -> m.getAttributeId().equals(monitorData.getAttributeId())).collect(Collectors.toList());
|
|
|
|
-// MonitorDataValueEntity attributeEntity=attributeEntities.size()>0?attributeEntities.get(0):null;
|
|
|
|
-// if (attributeEntity != null) {
|
|
|
|
-// Double attributeDiffValue =0d;
|
|
|
|
-// if(attributeEntity.getDataValue() != null && monitorData.getLatestValue() != null){
|
|
|
|
-// attributeDiffValue=attributeEntity.getDataValue() - monitorData.getLatestValue();
|
|
|
|
-// }else if(attributeEntity.getDataValue() != null && monitorData.getLatestValue() == null) {
|
|
|
|
-// attributeDiffValue=attributeEntity.getDataValue();
|
|
|
|
-// }
|
|
|
|
-// Double attributeValue = monitorData.getSumValue() != null ? monitorData.getSumValue() + attributeDiffValue : attributeDiffValue;
|
|
|
|
-// switch (monitorData.getAttributeType()) {
|
|
|
|
-// case "3":
|
|
|
|
-// monDataCol.setYieldWaterUsage(monDataCol.getYieldWaterUsage() != null ? monDataCol.getYieldWaterUsage() + attributeValue : attributeValue);
|
|
|
|
-// break;
|
|
|
|
-// case "4":
|
|
|
|
-// monDataCol.setIntakeWaterUsage(monDataCol.getIntakeWaterUsage() != null ? monDataCol.getIntakeWaterUsage() + attributeValue : attributeValue);
|
|
|
|
-// break;
|
|
|
|
-// case "5":
|
|
|
|
-// monDataCol.setPowerUsage(monDataCol.getPowerUsage() != null ? monDataCol.getPowerUsage() + attributeValue : attributeValue);
|
|
|
|
-// break;
|
|
|
|
-// case "6":
|
|
|
|
-// monDataCol.setDrugUsage(monDataCol.getDrugUsage() != null ? monDataCol.getDrugUsage() + attributeValue : attributeValue);
|
|
|
|
-// break;
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
|
|
+ Map<Long, MonitorDataValueEntity> map = new HashMap<>();
|
|
|
|
+ //将缓存中的实时数据放到map中方便进行遍历
|
|
|
|
+ for (MonitorDataValueEntity dateValue : monitorDataEntity.getDataValues()) {
|
|
|
|
+ map.put(dateValue.getAttributeId(), dateValue);
|
|
|
|
+ }
|
|
|
|
+ for (SceneDeviceAttributeDto itemAttribute : sceneDeviceAttributeDtos) {
|
|
|
|
+ Double attributeDiffValue = 0d;
|
|
|
|
+ if(!map.containsKey(itemAttribute.getAttributeId()))
|
|
|
|
+ continue;
|
|
|
|
+ if (map.get(itemAttribute.getAttributeId()).getDataValue() != null && itemAttribute.getLatestValue() != null) {
|
|
|
|
+ attributeDiffValue = map.get(itemAttribute.getAttributeId()).getDataValue() - itemAttribute.getLatestValue();
|
|
|
|
+ } else if (map.get(itemAttribute.getAttributeId()).getDataValue() != null && itemAttribute.getLatestValue() == null) {
|
|
|
|
+ attributeDiffValue = map.get(itemAttribute.getAttributeId()).getDataValue();
|
|
|
|
+ }
|
|
|
|
+ switch (itemAttribute.getAttributeType()) {
|
|
|
|
+ case "3":
|
|
|
|
+ sceneUsageDto.setYieldWaterUsage(sceneUsageDto.getYieldWaterUsage() != null ? sceneUsageDto.getYieldWaterUsage() + attributeDiffValue : attributeDiffValue);
|
|
|
|
+ break;
|
|
|
|
+ case "4":
|
|
|
|
+ sceneUsageDto.setIntakeWaterUsage(sceneUsageDto.getIntakeWaterUsage() != null ? sceneUsageDto.getIntakeWaterUsage() + attributeDiffValue : attributeDiffValue);
|
|
|
|
+ break;
|
|
|
|
+ case "5":
|
|
|
|
+ sceneUsageDto.setPowerUsage(sceneUsageDto.getPowerUsage() != null ? sceneUsageDto.getPowerUsage() + attributeDiffValue : attributeDiffValue);
|
|
|
|
+ break;
|
|
|
|
+ case "6":
|
|
|
|
+ sceneUsageDto.setDrugUsage(sceneUsageDto.getDrugUsage() != null ? sceneUsageDto.getDrugUsage() + attributeDiffValue : attributeDiffValue);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return new AjaxMessage<>(ResultStatus.OK);
|
|
return new AjaxMessage<>(ResultStatus.OK);
|